forked from Silverfish/proton-bridge
Simplified integration tests
This commit is contained in:
@ -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
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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 |
|
||||
|
||||
@ -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]
|
||||
}
|
||||
|
||||
@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user