mirror of
https://github.com/jhillyerd/inbucket.git
synced 2025-12-20 11:07:01 +00:00
Use MockDataStore for handler_test.go
This commit is contained in:
@@ -5,7 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"github.com/jhillyerd/inbucket/config"
|
"github.com/jhillyerd/inbucket/config"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
//"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
"net"
|
"net"
|
||||||
"net/textproto"
|
"net/textproto"
|
||||||
@@ -21,8 +21,14 @@ type scriptStep struct {
|
|||||||
|
|
||||||
// Test commands in GREET state
|
// Test commands in GREET state
|
||||||
func TestGreetState(t *testing.T) {
|
func TestGreetState(t *testing.T) {
|
||||||
server, logbuf := setupSmtpServer()
|
// Setup mock objects
|
||||||
|
mds := &MockDataStore{}
|
||||||
|
mb1 := &MockMailbox{}
|
||||||
|
mds.On("MailboxFor").Return(mb1, nil)
|
||||||
|
|
||||||
|
server, logbuf := setupSmtpServer(mds)
|
||||||
defer teardownSmtpServer(server)
|
defer teardownSmtpServer(server)
|
||||||
|
|
||||||
var script []scriptStep
|
var script []scriptStep
|
||||||
|
|
||||||
// Test out some mangled HELOs
|
// Test out some mangled HELOs
|
||||||
@@ -60,8 +66,14 @@ func TestGreetState(t *testing.T) {
|
|||||||
|
|
||||||
// Test commands in READY state
|
// Test commands in READY state
|
||||||
func TestReadyState(t *testing.T) {
|
func TestReadyState(t *testing.T) {
|
||||||
server, logbuf := setupSmtpServer()
|
// Setup mock objects
|
||||||
|
mds := &MockDataStore{}
|
||||||
|
mb1 := &MockMailbox{}
|
||||||
|
mds.On("MailboxFor").Return(mb1, nil)
|
||||||
|
|
||||||
|
server, logbuf := setupSmtpServer(mds)
|
||||||
defer teardownSmtpServer(server)
|
defer teardownSmtpServer(server)
|
||||||
|
|
||||||
var script []scriptStep
|
var script []scriptStep
|
||||||
|
|
||||||
// Test out some mangled READY commands
|
// Test out some mangled READY commands
|
||||||
@@ -119,8 +131,17 @@ func TestReadyState(t *testing.T) {
|
|||||||
|
|
||||||
// Test commands in MAIL state
|
// Test commands in MAIL state
|
||||||
func TestMailState(t *testing.T) {
|
func TestMailState(t *testing.T) {
|
||||||
server, logbuf := setupSmtpServer()
|
// Setup mock objects
|
||||||
|
mds := &MockDataStore{}
|
||||||
|
mb1 := &MockMailbox{}
|
||||||
|
msg1 := &MockMessage{}
|
||||||
|
mds.On("MailboxFor").Return(mb1, nil)
|
||||||
|
mb1.On("NewMessage").Return(msg1)
|
||||||
|
msg1.On("Close").Return(nil)
|
||||||
|
|
||||||
|
server, logbuf := setupSmtpServer(mds)
|
||||||
defer teardownSmtpServer(server)
|
defer teardownSmtpServer(server)
|
||||||
|
|
||||||
var script []scriptStep
|
var script []scriptStep
|
||||||
|
|
||||||
// Test out some mangled READY commands
|
// Test out some mangled READY commands
|
||||||
@@ -220,8 +241,17 @@ func TestMailState(t *testing.T) {
|
|||||||
|
|
||||||
// Test commands in DATA state
|
// Test commands in DATA state
|
||||||
func TestDataState(t *testing.T) {
|
func TestDataState(t *testing.T) {
|
||||||
server, logbuf := setupSmtpServer()
|
// Setup mock objects
|
||||||
|
mds := &MockDataStore{}
|
||||||
|
mb1 := &MockMailbox{}
|
||||||
|
msg1 := &MockMessage{}
|
||||||
|
mds.On("MailboxFor").Return(mb1, nil)
|
||||||
|
mb1.On("NewMessage").Return(msg1)
|
||||||
|
msg1.On("Close").Return(nil)
|
||||||
|
|
||||||
|
server, logbuf := setupSmtpServer(mds)
|
||||||
defer teardownSmtpServer(server)
|
defer teardownSmtpServer(server)
|
||||||
|
|
||||||
var script []scriptStep
|
var script []scriptStep
|
||||||
pipe := setupSmtpSession(server)
|
pipe := setupSmtpSession(server)
|
||||||
c := textproto.NewConn(pipe)
|
c := textproto.NewConn(pipe)
|
||||||
@@ -311,14 +341,7 @@ func (m *mockConn) SetDeadline(t time.Time) error { return nil }
|
|||||||
func (m *mockConn) SetReadDeadline(t time.Time) error { return nil }
|
func (m *mockConn) SetReadDeadline(t time.Time) error { return nil }
|
||||||
func (m *mockConn) SetWriteDeadline(t time.Time) error { return nil }
|
func (m *mockConn) SetWriteDeadline(t time.Time) error { return nil }
|
||||||
|
|
||||||
func setupSmtpServer() (*Server, *bytes.Buffer) {
|
func setupSmtpServer(ds DataStore) (*Server, *bytes.Buffer) {
|
||||||
// Setup datastore
|
|
||||||
path, err := ioutil.TempDir("", "inbucket")
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
ds := NewFileDataStore(path)
|
|
||||||
|
|
||||||
// Test Server Config
|
// Test Server Config
|
||||||
cfg := config.SmtpConfig{
|
cfg := config.SmtpConfig{
|
||||||
Ip4address: net.IPv4(127, 0, 0, 1),
|
Ip4address: net.IPv4(127, 0, 0, 1),
|
||||||
@@ -353,9 +376,5 @@ func setupSmtpSession(server *Server) net.Conn {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func teardownSmtpServer(server *Server) {
|
func teardownSmtpServer(server *Server) {
|
||||||
ds := server.dataStore.(*FileDataStore)
|
|
||||||
if err := os.RemoveAll(ds.path); err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
//log.SetOutput(os.Stderr)
|
//log.SetOutput(os.Stderr)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,7 +69,8 @@ type MockDataStore struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *MockDataStore) MailboxFor(name string) (Mailbox, error) {
|
func (m *MockDataStore) MailboxFor(name string) (Mailbox, error) {
|
||||||
return nil, nil
|
args := m.Called()
|
||||||
|
return args.Get(0).(Mailbox), args.Error(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *MockDataStore) AllMailboxes() ([]Mailbox, error) {
|
func (m *MockDataStore) AllMailboxes() ([]Mailbox, error) {
|
||||||
@@ -158,8 +159,8 @@ func (m *MockMessage) Size() int64 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *MockMessage) Append(data []byte) error {
|
func (m *MockMessage) Append(data []byte) error {
|
||||||
args := m.Called(data)
|
// []byte arg seems to mess up testify/mock
|
||||||
return args.Error(0)
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *MockMessage) Close() error {
|
func (m *MockMessage) Close() error {
|
||||||
|
|||||||
Reference in New Issue
Block a user