1
0
mirror of https://github.com/jhillyerd/inbucket.git synced 2025-12-18 01:57:02 +00:00

test: impl StoreStub.PurgeMessages (#444)

Signed-off-by: James Hillyerd <james@hillyerd.com>
This commit is contained in:
James Hillyerd
2023-11-21 14:56:21 -08:00
committed by GitHub
parent 1b5a783dbd
commit 41889ee83a
2 changed files with 75 additions and 32 deletions

View File

@@ -19,38 +19,6 @@ import (
var testMessageIDSource uint32
func TestStoreStubRemoveMessage(t *testing.T) {
ss := test.NewStore()
// Add messages.
inputMsgs := make([]*message.Delivery, 5)
for i := range inputMsgs {
subject := fmt.Sprintf("%s message %v", "box1", i)
inputMsgs[i] = makeTestMessage("box1", subject)
id, err := ss.AddMessage(inputMsgs[i])
require.NoError(t, err)
require.NotEmpty(t, id, "AddMessage() must return an ID")
}
// Delete second message.
deleted := inputMsgs[1]
err := ss.RemoveMessage("box1", deleted.ID())
assert.NoError(t, err, "DeleteMessage must not fail")
// Verify message is not in mailbox.
messages, err := ss.GetMessages("box1")
assert.NoError(t, err)
assert.NotContains(t, messages, deleted, "Mailbox should not contain msg %q", deleted.ID())
// Verify message is no longer retrievable.
got, err := ss.GetMessage("box1", deleted.ID())
assert.Error(t, err)
assert.Nil(t, got, "Message should have been nil")
// Verify message is in deleted list.
assert.True(t, ss.MessageDeleted(deleted), "Message %q should be in deleted list", deleted.ID())
}
func TestStoreStubMailboxAddGetVisit(t *testing.T) {
ss := test.NewStore()
@@ -166,6 +134,66 @@ func TestStoreStubMarkSeen(t *testing.T) {
assert.Equal(t, 1, gotCount, "Incorrect number of seen messages")
}
func TestStoreStubRemoveMessage(t *testing.T) {
ss := test.NewStore()
// Add messages.
inputMsgs := make([]*message.Delivery, 5)
for i := range inputMsgs {
subject := fmt.Sprintf("%s message %v", "box1", i)
inputMsgs[i] = makeTestMessage("box1", subject)
id, err := ss.AddMessage(inputMsgs[i])
require.NoError(t, err)
require.NotEmpty(t, id, "AddMessage() must return an ID")
}
// Delete second message.
deleted := inputMsgs[1]
err := ss.RemoveMessage("box1", deleted.ID())
assert.NoError(t, err, "DeleteMessage must not fail")
// Verify message is not in mailbox.
messages, err := ss.GetMessages("box1")
assert.NoError(t, err)
assert.NotContains(t, messages, deleted, "Mailbox should not contain msg %q", deleted.ID())
// Verify message is no longer retrievable.
got, err := ss.GetMessage("box1", deleted.ID())
assert.Error(t, err)
assert.Nil(t, got, "Message should have been nil")
// Verify message is in deleted list.
assert.True(t, ss.MessageDeleted(deleted), "Message %q should be in deleted list", deleted.ID())
}
func TestStoreStubPurgeMessages(t *testing.T) {
ss := test.NewStore()
// Add messages.
inputMsgs := make([]*message.Delivery, 5)
for i := range inputMsgs {
subject := fmt.Sprintf("%s message %v", "box1", i)
inputMsgs[i] = makeTestMessage("box1", subject)
id, err := ss.AddMessage(inputMsgs[i])
require.NoError(t, err)
require.NotEmpty(t, id, "AddMessage() must return an ID")
}
// Purge messages.
err := ss.PurgeMessages("box1")
assert.NoError(t, err, "PurgeMessages must not fail")
// Verify message is not in mailbox.
messages, err := ss.GetMessages("box1")
assert.NoError(t, err)
assert.Len(t, messages, 0, "Mailbox should be empty")
// Verify messages are in deleted list.
for _, want := range inputMsgs {
assert.True(t, ss.MessageDeleted(want), "Message %q should be in deleted list", want.ID())
}
}
func TestStoreStubForcedErrors(t *testing.T) {
ss := test.NewStore()
var err error