Simplified integration tests

This commit is contained in:
Michal Horejsek
2020-09-03 08:39:47 +02:00
parent c7578cf53c
commit 6671b78799
5 changed files with 17 additions and 29 deletions

View File

@ -31,10 +31,9 @@ type PMAPIController interface {
AddUser(user *pmapi.User, addresses *pmapi.AddressList, password string, twoFAEnabled bool) error
AddUserLabel(username string, label *pmapi.Label) error
GetLabelIDs(username string, labelNames []string) ([]string, error)
AddUserMessage(username string, message *pmapi.Message) error
AddUserMessage(username string, message *pmapi.Message) (string, error)
GetMessageID(username, messageIndex string) string
GetMessages(username, labelID string) ([]*pmapi.Message, error)
GetLastMessageID(username string) string
ReorderAddresses(user *pmapi.User, addressIDs []string) error
PrintCalls()
WasCalled(method, path string, expectedRequest []byte) bool

View File

@ -130,7 +130,7 @@ func getLabelExclusive(name string) int {
return 0
}
func (ctl *Controller) AddUserMessage(username string, message *pmapi.Message) error {
func (ctl *Controller) AddUserMessage(username string, message *pmapi.Message) (string, error) {
if _, ok := ctl.messagesByUsername[username]; !ok {
ctl.messagesByUsername[username] = []*pmapi.Message{}
}
@ -138,7 +138,7 @@ func (ctl *Controller) AddUserMessage(username string, message *pmapi.Message) e
message.LabelIDs = append(message.LabelIDs, pmapi.AllMailLabel)
ctl.messagesByUsername[username] = append(ctl.messagesByUsername[username], message)
ctl.resetUsers()
return nil
return message.ID, nil
}
func (ctl *Controller) getFakeAPIForUser(userID string) *FakePMAPI {
@ -172,8 +172,4 @@ func (ctl *Controller) GetMessages(username, labelID string) ([]*pmapi.Message,
}
}
return messages, nil
func (ctl *Controller) GetLastMessageID(username string) string {
msgs := ctl.messagesByUsername[username]
return msgs[len(msgs)-1].ID
}

View File

@ -4,7 +4,7 @@ Feature: IMAP remove messages from Trash
And there is "user" with mailbox "Folders/mbox"
And there is "user" with mailbox "Labels/label"
Scenario Outline: Delete messages from Trash/Spam does not remove from All Mail
Scenario Outline: Message in Trash/Spam and some other label is not permanently deleted
Given there are messages in mailbox "<mailbox>" for "user"
| from | to | subject | body |
| john.doe@mail.com | user@pm.me | foo | hello |
@ -29,8 +29,7 @@ Feature: IMAP remove messages from Trash
| Spam |
| Trash |
Scenario Outline: Delete messages from Trash/Spamm removes from All Mail
Scenario Outline: Message in Trash/Spam only is permanently deleted
Given there are messages in mailbox "<mailbox>" for "user"
| from | to | subject | body |
| john.doe@mail.com | user@pm.me | foo | hello |

View File

@ -30,10 +30,10 @@ import (
"github.com/pkg/errors"
)
func (ctl *Controller) AddUserMessage(username string, message *pmapi.Message) error {
func (ctl *Controller) AddUserMessage(username string, message *pmapi.Message) (string, error) {
client, ok := ctl.pmapiByUsername[username]
if !ok {
return fmt.Errorf("user %s does not exist", username)
return "", fmt.Errorf("user %s does not exist", username)
}
if message.Flags == 0 {
@ -42,7 +42,7 @@ func (ctl *Controller) AddUserMessage(username string, message *pmapi.Message) e
body, err := buildMessage(client, message)
if err != nil {
return errors.Wrap(err, "failed to build message")
return "", errors.Wrap(err, "failed to build message")
}
req := &pmapi.ImportMsgReq{
@ -56,16 +56,15 @@ func (ctl *Controller) AddUserMessage(username string, message *pmapi.Message) e
results, err := client.Import([]*pmapi.ImportMsgReq{req})
if err != nil {
return errors.Wrap(err, "failed to make an import")
return "", errors.Wrap(err, "failed to make an import")
}
for _, result := range results {
if result.Error != nil {
return errors.Wrap(result.Error, "failed to import message")
}
ctl.messageIDsByUsername[username] = append(ctl.messageIDsByUsername[username], result.MessageID)
result := results[0]
if result.Error != nil {
return "", errors.Wrap(result.Error, "failed to import message")
}
ctl.messageIDsByUsername[username] = append(ctl.messageIDsByUsername[username], result.MessageID)
return nil
return result.MessageID, nil
}
func buildMessage(client pmapi.Client, message *pmapi.Message) (*bytes.Buffer, error) {
@ -162,8 +161,3 @@ func (ctl *Controller) GetMessages(username, labelID string) ([]*pmapi.Message,
}
return messages, nil
func (ctl *Controller) GetLastMessageID(username string) string {
ids := ctl.messageIDsByUsername[username]
return ids[len(ids)-1]
}

View File

@ -143,12 +143,12 @@ func thereAreMessagesInMailboxesForAddressOfUser(mailboxNames, bddAddressID, bdd
return fmt.Errorf("unexpected column name: %s", head[n].Value)
}
}
if err := ctx.GetPMAPIController().AddUserMessage(account.Username(), message); err != nil {
lastMessageID, err := ctx.GetPMAPIController().AddUserMessage(account.Username(), message)
if err != nil {
return internalError(err, "adding message")
}
if hasDeletedFlag {
lastMessageID := ctx.GetPMAPIController().GetLastMessageID(account.Username())
markMessageIDsDeleted = append(markMessageIDsDeleted, lastMessageID)
}
}
@ -221,7 +221,7 @@ func thereAreSomeMessagesInMailboxesForAddressOfUser(numberOfMessages int, mailb
if err != nil {
return internalError(err, "getting labels %s for %s", mailboxNames, account.Username())
}
err = ctx.GetPMAPIController().AddUserMessage(account.Username(), &pmapi.Message{
_, err = ctx.GetPMAPIController().AddUserMessage(account.Username(), &pmapi.Message{
MIMEType: "text/plain",
LabelIDs: labelIDs,
AddressID: account.AddressID(),