From d6464c0048b66815d230b99da99dca5c13ee9d22 Mon Sep 17 00:00:00 2001 From: Michal Horejsek Date: Tue, 8 Sep 2020 16:18:01 +0200 Subject: [PATCH] Fixes after rebase --- test/api_checks_test.go | 2 +- test/liveapi/messages.go | 1 + test/mocks/imap_response.go | 2 +- test/store_checks_test.go | 39 +++++++++++++++++++++++++++++++++---- test/store_setup_test.go | 16 ++++++++------- 5 files changed, 47 insertions(+), 13 deletions(-) diff --git a/test/api_checks_test.go b/test/api_checks_test.go index dddba344..d052932f 100644 --- a/test/api_checks_test.go +++ b/test/api_checks_test.go @@ -103,7 +103,7 @@ func apiMailboxForAddressOfUserHasMessages(mailboxName, bddAddressID, bddUserID head := messages.Rows[0].Cells for _, row := range messages.Rows[1:] { - found, err := messagesContainsMessageRow(account, pmapiMessages, head, row) + found, err := pmapiMessagesContainsMessageRow(account, pmapiMessages, head, row) if err != nil { return err } diff --git a/test/liveapi/messages.go b/test/liveapi/messages.go index 557dd0cc..ce2348e5 100644 --- a/test/liveapi/messages.go +++ b/test/liveapi/messages.go @@ -161,3 +161,4 @@ func (ctl *Controller) GetMessages(username, labelID string) ([]*pmapi.Message, } return messages, nil +} diff --git a/test/mocks/imap_response.go b/test/mocks/imap_response.go index 75c36e7c..573312bf 100644 --- a/test/mocks/imap_response.go +++ b/test/mocks/imap_response.go @@ -37,7 +37,7 @@ type IMAPResponse struct { done bool } -func (ir *IMAPResponse) sendCommand(reqTag string, reqIndex int, command string, debug *debug, conn io.Writer, response *bufio.Reader) { +func (ir *IMAPResponse) sendCommand(reqTag string, reqIndex int, command string, debug *debug, conn io.Writer, response *bufio.Reader) { //nolint[interfacer] defer func() { ir.done = true }() tstart := time.Now() diff --git a/test/store_checks_test.go b/test/store_checks_test.go index 243d3cd6..266cba54 100644 --- a/test/store_checks_test.go +++ b/test/store_checks_test.go @@ -24,6 +24,7 @@ import ( "time" "github.com/ProtonMail/proton-bridge/internal/store" + "github.com/ProtonMail/proton-bridge/pkg/pmapi" "github.com/ProtonMail/proton-bridge/test/accounts" "github.com/cucumber/godog" "github.com/cucumber/godog/gherkin" @@ -143,7 +144,7 @@ func mailboxForAddressOfUserHasMessages(mailboxName, bddAddressID, bddUserID str afterLimit := time.Since(start) > ctx.EventLoopTimeout() allFound := true for _, row := range messages.Rows[1:] { - found, err := messagesContainsMessageRow(account, allMessages, head, row) + found, err := storeMessagesContainsMessageRow(account, allMessages, head, row) if err != nil { return err } @@ -168,10 +169,36 @@ func mailboxForAddressOfUserHasMessages(mailboxName, bddAddressID, bddUserID str return nil } -func messagesContainsMessageRow(account *accounts.TestAccount, allMessages []*store.Message, head []*gherkin.TableCell, row *gherkin.TableRow) (bool, error) { //nolint[funlen] +func pmapiMessagesContainsMessageRow(account *accounts.TestAccount, pmapiMessages []*pmapi.Message, head []*gherkin.TableCell, row *gherkin.TableRow) (bool, error) { + messages := make([]interface{}, len(pmapiMessages)) + for i := range pmapiMessages { + messages[i] = pmapiMessages[i] + } + return messagesContainsMessageRow(account, messages, head, row) +} + +func storeMessagesContainsMessageRow(account *accounts.TestAccount, storeMessages []*store.Message, head []*gherkin.TableCell, row *gherkin.TableRow) (bool, error) { + messages := make([]interface{}, len(storeMessages)) + for i := range storeMessages { + messages[i] = storeMessages[i] + } + return messagesContainsMessageRow(account, messages, head, row) +} + +func messagesContainsMessageRow(account *accounts.TestAccount, allMessages []interface{}, head []*gherkin.TableCell, row *gherkin.TableRow) (bool, error) { //nolint[funlen] found := false - for _, storeMessage := range allMessages { - message := storeMessage.Message() + for _, someMessage := range allMessages { + var message *pmapi.Message + var storeMessage *store.Message + + switch v := someMessage.(type) { + case *pmapi.Message: + message = v + case *store.Message: + message = v.Message() + storeMessage = v + } + matches := true for n, cell := range row.Cells { switch head[n].Value { @@ -221,6 +248,10 @@ func messagesContainsMessageRow(account *accounts.TestAccount, allMessages []*st matches = false } case "deleted": + if storeMessage == nil { + return false, fmt.Errorf("deleted column not supported for pmapi message object") + } + expectedDeleted := cell.Value == "true" matches = storeMessage.IsMarkedDeleted() == expectedDeleted default: diff --git a/test/store_setup_test.go b/test/store_setup_test.go index 2aa4ed71..389ed577 100644 --- a/test/store_setup_test.go +++ b/test/store_setup_test.go @@ -157,13 +157,15 @@ func thereAreMessagesInMailboxesForAddressOfUser(mailboxNames, bddAddressID, bdd return err } - for _, mailboxName := range strings.Split(mailboxNames, ",") { - storeMailbox, err := ctx.GetStoreMailbox(account.Username(), account.AddressID(), mailboxName) - if err != nil { - return err - } - if err := storeMailbox.MarkMessagesDeleted(markMessageIDsDeleted); err != nil { - return err + if len(markMessageIDsDeleted) > 0 { + for _, mailboxName := range strings.Split(mailboxNames, ",") { + storeMailbox, err := ctx.GetStoreMailbox(account.Username(), account.AddressID(), mailboxName) + if err != nil { + return err + } + if err := storeMailbox.MarkMessagesDeleted(markMessageIDsDeleted); err != nil { + return err + } } }