1
0
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:
James Hillyerd
2013-11-06 17:18:56 -08:00
parent ef48b9c2dd
commit d80521b24d
2 changed files with 40 additions and 20 deletions

View File

@@ -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)
} }

View File

@@ -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 {