diff --git a/pkg/message/manager.go b/pkg/message/manager.go index 75c5f2b..5efa4e0 100644 --- a/pkg/message/manager.go +++ b/pkg/message/manager.go @@ -92,7 +92,6 @@ func (s *StoreManager) Deliver( Date: delivery.Date(), Size: delivery.Size(), } - // TODO Add a unit test to make sure we send this. s.ExtHost.Events.MessageStored.Emit(&event) return id, nil diff --git a/pkg/message/manager_test.go b/pkg/message/manager_test.go new file mode 100644 index 0000000..d21608c --- /dev/null +++ b/pkg/message/manager_test.go @@ -0,0 +1,43 @@ +package message_test + +import ( + "testing" + + "github.com/inbucket/inbucket/pkg/extension" + "github.com/inbucket/inbucket/pkg/extension/event" + "github.com/inbucket/inbucket/pkg/message" + "github.com/inbucket/inbucket/pkg/policy" + "github.com/inbucket/inbucket/pkg/test" + "github.com/stretchr/testify/assert" +) + +func TestManagerEmitsMessageStoredEvent(t *testing.T) { + extHost := extension.NewHost() + sm := &message.StoreManager{ + AddrPolicy: &policy.Addressing{}, + Store: test.NewStore(), + ExtHost: extHost, + } + + // Capture message event. + var got *event.MessageMetadata + extHost.Events.MessageStored.AddListener( + "test", + func(msg event.MessageMetadata) *extension.Void { + got = &msg + return nil + }) + + // Attempt to deliver a message to generate event. + if _, err := sm.Deliver( + &policy.Recipient{}, + "from@example.com", + []*policy.Recipient{}, + "prefix", + []byte("From: from@example.com\n\ntest email"), + ); err != nil { + t.Fatal(err) + } + + assert.NotNil(t, got, "No event received, or it was nil") +}