Other: Implement subfolder support

This commit is contained in:
James Houlahan
2022-10-25 02:04:43 +02:00
parent 4f7cb43c8f
commit fd0c262645
3 changed files with 249 additions and 42 deletions

View File

@ -50,4 +50,136 @@ Feature: IMAP create mailbox
| Labels |
| Labels/l1 |
| Labels/l2 |
| Labels/l3 |
| Labels/l3 |
Scenario: Creating subfolders is possible and they persist after resync
When IMAP client "1" creates "Folders/f1/f11"
Then it succeeds
When IMAP client "1" creates "Folders/f1/f12"
Then it succeeds
When IMAP client "1" creates "Folders/f2/f21"
Then it succeeds
When IMAP client "1" creates "Folders/f2/f22"
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/f1/f11 |
| Folders/f1/f12 |
| Folders/f2 |
| Folders/f2/f21 |
| Folders/f2/f22 |
| Labels |
| Labels/l1 |
| Labels/l2 |
When user "user@pm.me" is deleted
And the user logs in with username "user@pm.me" and password "password"
And user "user@pm.me" finishes syncing
And user "user@pm.me" connects and authenticates IMAP client "2"
Then IMAP client "2" sees the following mailbox info:
| name |
| INBOX |
| Drafts |
| Sent |
| Starred |
| Archive |
| Spam |
| Trash |
| All Mail |
| Folders |
| Folders/f1 |
| Folders/f1/f11 |
| Folders/f1/f12 |
| Folders/f2 |
| Folders/f2/f21 |
| Folders/f2/f22 |
| Labels |
| Labels/l1 |
| Labels/l2 |
Scenario: Changing folder parent is possible and it persists after resync
When IMAP client "1" creates "Folders/f1/f11"
Then it succeeds
When IMAP client "1" creates "Folders/f1/f12"
Then it succeeds
When IMAP client "1" creates "Folders/f2/f21"
Then it succeeds
When IMAP client "1" creates "Folders/f2/f22"
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/f1/f11 |
| Folders/f1/f12 |
| Folders/f2 |
| Folders/f2/f21 |
| Folders/f2/f22 |
| Labels |
| Labels/l1 |
| Labels/l2 |
When IMAP client "1" renames "Folders/f1/f11" to "Folders/f2/f11"
Then it succeeds
When IMAP client "1" renames "Folders/f1/f12" to "Folders/f2/f12"
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/f2/f11 |
| Folders/f2/f12 |
| Folders/f2/f21 |
| Folders/f2/f22 |
| Labels |
| Labels/l1 |
| Labels/l2 |
When user "user@pm.me" is deleted
And the user logs in with username "user@pm.me" and password "password"
And user "user@pm.me" finishes syncing
And user "user@pm.me" connects and authenticates IMAP client "2"
Then IMAP client "2" sees the following mailbox info:
| name |
| INBOX |
| Drafts |
| Sent |
| Starred |
| Archive |
| Spam |
| Trash |
| All Mail |
| Folders |
| Folders/f1 |
| Folders/f2 |
| Folders/f2/f11 |
| Folders/f2/f12 |
| Folders/f2/f21 |
| Folders/f2/f22 |
| Labels |
| Labels/l1 |
| Labels/l2 |

View File

@ -160,7 +160,7 @@ func matchMailboxes(have, want []Mailbox) error {
})
if !IsSub(want, have) {
return fmt.Errorf("missing messages: %v", want)
return fmt.Errorf("missing mailboxes: %v", want)
}
return nil