mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-10 04:36:43 +00:00
Other: IMAP create duplicate mailbox tests
This commit is contained in:
@ -154,7 +154,6 @@ func TestFeatures(testingT *testing.T) {
|
||||
ctx.Step(`^IMAP client "([^"]*)" sees the following mailbox info:$`, s.imapClientSeesTheFollowingMailboxInfo)
|
||||
ctx.Step(`^IMAP client "([^"]*)" eventually sees the following mailbox info:$`, s.imapClientEventuallySeesTheFollowingMailboxInfo)
|
||||
ctx.Step(`^IMAP client "([^"]*)" sees the following mailbox info for "([^"]*)":$`, s.imapClientSeesTheFollowingMailboxInfoForMailbox)
|
||||
ctx.Step(`^IMAP client "([^"]*)" sees the following mailboxes:$`, s.imapClientSeesTheFollowingMailboxes)
|
||||
ctx.Step(`^IMAP client "([^"]*)" sees "([^"]*)"$`, s.imapClientSeesMailbox)
|
||||
ctx.Step(`^IMAP client "([^"]*)" does not see "([^"]*)"$`, s.imapClientDoesNotSeeMailbox)
|
||||
ctx.Step(`^IMAP client "([^"]*)" counts (\d+) mailboxes under "([^"]*)"$`, s.imapClientCountsMailboxesUnder)
|
||||
|
||||
@ -1,6 +1,12 @@
|
||||
Feature: IMAP create mailbox
|
||||
Background:
|
||||
Given there exists an account with username "user@pm.me" and password "password"
|
||||
And the account "user@pm.me" has the following custom mailboxes:
|
||||
| name | type |
|
||||
| f1 | folder |
|
||||
| f2 | folder |
|
||||
| l1 | label |
|
||||
| l2 | label |
|
||||
And bridge starts
|
||||
And the user logs in with username "user@pm.me" and password "password"
|
||||
And user "user@pm.me" finishes syncing
|
||||
@ -13,3 +19,35 @@ Feature: IMAP create mailbox
|
||||
Scenario: Create label
|
||||
When IMAP client "1" creates "Labels/mbox"
|
||||
Then IMAP client "1" sees "Labels/mbox"
|
||||
|
||||
Scenario: Creating folder or label with existing name is not possible
|
||||
When IMAP client "1" creates "Folders/f1"
|
||||
Then it fails
|
||||
When IMAP client "1" creates "Folders/f2"
|
||||
Then it fails
|
||||
When IMAP client "1" creates "Labels/l1"
|
||||
Then it fails
|
||||
When IMAP client "1" creates "Labels/l2"
|
||||
Then it fails
|
||||
When IMAP client "1" creates "Folders/f3"
|
||||
Then it succeeds
|
||||
When IMAP client "1" creates "Labels/l3"
|
||||
Then it succeeds
|
||||
Then IMAP client "1" sees the following mailbox info:
|
||||
| name |
|
||||
| INBOX |
|
||||
| Drafts |
|
||||
| Sent |
|
||||
| Starred |
|
||||
| Archive |
|
||||
| Spam |
|
||||
| Trash |
|
||||
| All Mail |
|
||||
| Folders |
|
||||
| Folders/f1 |
|
||||
| Folders/f2 |
|
||||
| Folders/f3 |
|
||||
| Labels |
|
||||
| Labels/l1 |
|
||||
| Labels/l2 |
|
||||
| Labels/l3 |
|
||||
@ -8,39 +8,39 @@ Feature: IMAP Hide All Mail
|
||||
|
||||
Scenario: Hide All Mail Mailbox
|
||||
Given IMAP client "1" sees the following mailbox info:
|
||||
| name | total | unread |
|
||||
| INBOX | 0 | 0 |
|
||||
| Drafts | 0 | 0 |
|
||||
| Sent | 0 | 0 |
|
||||
| Starred | 0 | 0 |
|
||||
| Archive | 0 | 0 |
|
||||
| Spam | 0 | 0 |
|
||||
| Trash | 0 | 0 |
|
||||
| All Mail | 0 | 0 |
|
||||
| Folders | 0 | 0 |
|
||||
| Labels | 0 | 0 |
|
||||
| name |
|
||||
| INBOX |
|
||||
| Drafts |
|
||||
| Sent |
|
||||
| Starred |
|
||||
| Archive |
|
||||
| Spam |
|
||||
| Trash |
|
||||
| All Mail |
|
||||
| Folders |
|
||||
| Labels |
|
||||
When bridge hides all mail
|
||||
Then IMAP client "1" sees the following mailbox info:
|
||||
| name | total | unread |
|
||||
| INBOX | 0 | 0 |
|
||||
| Drafts | 0 | 0 |
|
||||
| Sent | 0 | 0 |
|
||||
| Starred | 0 | 0 |
|
||||
| Archive | 0 | 0 |
|
||||
| Spam | 0 | 0 |
|
||||
| Trash | 0 | 0 |
|
||||
| Folders | 0 | 0 |
|
||||
| Labels | 0 | 0 |
|
||||
| name |
|
||||
| INBOX |
|
||||
| Drafts |
|
||||
| Sent |
|
||||
| Starred |
|
||||
| Archive |
|
||||
| Spam |
|
||||
| Trash |
|
||||
| Folders |
|
||||
| Labels |
|
||||
When bridge shows all mail
|
||||
Then IMAP client "1" sees the following mailbox info:
|
||||
| name | total | unread |
|
||||
| INBOX | 0 | 0 |
|
||||
| Drafts | 0 | 0 |
|
||||
| Sent | 0 | 0 |
|
||||
| Starred | 0 | 0 |
|
||||
| Archive | 0 | 0 |
|
||||
| Spam | 0 | 0 |
|
||||
| Trash | 0 | 0 |
|
||||
| All Mail | 0 | 0 |
|
||||
| Folders | 0 | 0 |
|
||||
| Labels | 0 | 0 |
|
||||
| name |
|
||||
| INBOX |
|
||||
| Drafts |
|
||||
| Sent |
|
||||
| Starred |
|
||||
| Archive |
|
||||
| Spam |
|
||||
| Trash |
|
||||
| All Mail |
|
||||
| Folders |
|
||||
| Labels |
|
||||
|
||||
@ -10,19 +10,19 @@ Feature: IMAP list mailboxes
|
||||
And user "user@pm.me" finishes syncing
|
||||
And user "user@pm.me" connects and authenticates IMAP client "1"
|
||||
Then IMAP client "1" sees the following mailbox info:
|
||||
| name | total | unread |
|
||||
| INBOX | 0 | 0 |
|
||||
| Drafts | 0 | 0 |
|
||||
| Sent | 0 | 0 |
|
||||
| Starred | 0 | 0 |
|
||||
| Archive | 0 | 0 |
|
||||
| Spam | 0 | 0 |
|
||||
| Trash | 0 | 0 |
|
||||
| All Mail | 0 | 0 |
|
||||
| Folders | 0 | 0 |
|
||||
| Folders/mbox1 | 0 | 0 |
|
||||
| Labels | 0 | 0 |
|
||||
| Labels/mbox2 | 0 | 0 |
|
||||
| name |
|
||||
| INBOX |
|
||||
| Drafts |
|
||||
| Sent |
|
||||
| Starred |
|
||||
| Archive |
|
||||
| Spam |
|
||||
| Trash |
|
||||
| All Mail |
|
||||
| Folders |
|
||||
| Folders/mbox1 |
|
||||
| Labels |
|
||||
| Labels/mbox2 |
|
||||
|
||||
Scenario: List multiple times in parallel without crash
|
||||
Given there exists an account with username "user@pm.me" and password "password"
|
||||
|
||||
@ -27,12 +27,9 @@ import (
|
||||
"github.com/bradenaw/juniper/iterator"
|
||||
"github.com/bradenaw/juniper/xslices"
|
||||
"github.com/cucumber/godog"
|
||||
"github.com/cucumber/messages-go/v16"
|
||||
"github.com/emersion/go-imap"
|
||||
id "github.com/emersion/go-imap-id"
|
||||
"github.com/emersion/go-imap/client"
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"github.com/google/go-cmp/cmp/cmpopts"
|
||||
"golang.org/x/exp/slices"
|
||||
)
|
||||
|
||||
@ -190,26 +187,6 @@ func (s *scenario) imapClientSeesTheFollowingMailboxInfoForMailbox(clientID, mai
|
||||
return matchMailboxes(haveMailboxes, wantMailboxes)
|
||||
}
|
||||
|
||||
func (s *scenario) imapClientSeesTheFollowingMailboxes(clientID string, table *godog.Table) error {
|
||||
_, client := s.t.getIMAPClient(clientID)
|
||||
|
||||
mailboxes := clientList(client)
|
||||
|
||||
have := xslices.Map(mailboxes, func(info *imap.MailboxInfo) string {
|
||||
return info.Name
|
||||
})
|
||||
|
||||
want := xslices.Map(table.Rows[1:], func(row *messages.PickleTableRow) string {
|
||||
return row.Cells[0].Value
|
||||
})
|
||||
|
||||
if !cmp.Equal(want, have, cmpopts.SortSlices(func(a, b string) bool { return a < b })) {
|
||||
return fmt.Errorf("want %v, have %v", want, have)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *scenario) imapClientSeesMailbox(clientID, mailbox string) error {
|
||||
_, client := s.t.getIMAPClient(clientID)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user