Other: IMAP create tests

This commit is contained in:
James Houlahan
2022-10-24 23:15:13 +02:00
parent a26db09e54
commit 94e219137e
3 changed files with 80 additions and 0 deletions

View File

@ -171,6 +171,7 @@ func TestFeatures(testingT *testing.T) {
ctx.Step(`^IMAP client "([^"]*)" sees that message (\d+) has the flag "([^"]*)"$`, s.imapClientSeesThatMessageHasTheFlag)
ctx.Step(`^IMAP client "([^"]*)" expunges$`, s.imapClientExpunges)
ctx.Step(`^IMAP client "([^"]*)" appends the following message to "([^"]*)":$`, s.imapClientAppendsTheFollowingMessageToMailbox)
ctx.Step(`^IMAP client "([^"]*)" appends the following messages to "([^"]*)":$`, s.imapClientAppendsTheFollowingMessagesToMailbox)
ctx.Step(`^IMAP client "([^"]*)" appends "([^"]*)" to "([^"]*)"$`, s.imapClientAppendsToMailbox)
// ==== SMTP ====

View File

@ -0,0 +1,62 @@
Feature: IMAP create messages
Background:
Given there exists an account with username "user@pm.me" and password "password"
And the account "user@pm.me" has additional address "alias@pm.me"
And bridge starts
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 "1"
Scenario: Creates message to user's primary address
When IMAP client "1" appends the following messages to "INBOX":
| from | to | subject | body |
| john.doe@email.com | user@pm.me | foo | bar |
Then it succeeds
And IMAP client "1" sees the following messages in "INBOX":
| from | to | subject | body |
| john.doe@email.com | user@pm.me | foo | bar |
Scenario: Creates draft
When IMAP client "1" appends the following messages to "Drafts":
| from | to | subject | body |
| user@pm.me | john.doe@email.com | foo | bar |
Then it succeeds
And IMAP client "1" sees the following messages in "Drafts":
| from | to | subject | body |
| user@pm.me | john.doe@email.com | foo | bar |
Scenario: Creates message sent from user's primary address
When IMAP client "1" appends the following messages to "Sent":
| from | to | subject | body |
| user@pm.me | john.doe@email.com | foo | bar |
Then it succeeds
And IMAP client "1" sees the following messages in "Sent":
| from | to | subject | body |
| user@pm.me | john.doe@email.com | foo | bar |
Scenario: Creates message sent from user's secondary address
When IMAP client "1" appends the following messages to "Sent":
| from | to | subject | body |
| alias@pm.me | john.doe@email.com | foo | bar |
Then it succeeds
And IMAP client "1" sees the following messages in "Sent":
| from | to | subject | body |
| alias@pm.me | john.doe@email.com | foo | bar |
Scenario: Imports an unrelated message to inbox
When IMAP client "1" appends the following messages to "INBOX":
| from | to | subject | body |
| john.doe@email.com | john.doe2@pm.me | foo | bar |
Then it succeeds
And IMAP client "1" sees the following messages in "INBOX":
| from | to | subject | body |
| john.doe@email.com | john.doe2@pm.me | foo | bar |
Scenario: Imports an unrelated message to sent
When IMAP client "1" appends the following messages to "Sent":
| from | to | subject | body |
| john.doe@email.com | john.doe2@pm.me | foo | bar |
Then it succeeds
And IMAP client "1" sees the following messages in "Sent":
| from | to | subject | body |
| john.doe@email.com | john.doe2@pm.me | foo | bar |

View File

@ -389,6 +389,23 @@ func (s *scenario) imapClientAppendsTheFollowingMessageToMailbox(clientID string
return clientAppend(client, mailbox, docString.Content)
}
func (s *scenario) imapClientAppendsTheFollowingMessagesToMailbox(clientID string, mailbox string, table *godog.Table) error {
_, client := s.t.getIMAPClient(clientID)
messages, err := unmarshalTable[Message](table)
if err != nil {
return err
}
for _, message := range messages {
if err := clientAppend(client, mailbox, string(message.Build())); err != nil {
return err
}
}
return nil
}
func (s *scenario) imapClientAppendsToMailbox(clientID string, file, mailbox string) error {
_, client := s.t.getIMAPClient(clientID)