mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-16 07:06:45 +00:00
Import/Export backend
This commit is contained in:
@ -29,16 +29,16 @@ Feature: IMAP auth
|
||||
|
||||
Scenario: Authenticates with freshly logged-out user
|
||||
Given there is connected user "user"
|
||||
When "user" logs out from bridge
|
||||
When "user" logs out
|
||||
And IMAP client authenticates "user"
|
||||
Then IMAP response is "IMAP error: NO account is logged out, use the app to login again"
|
||||
|
||||
Scenario: Authenticates user which was re-logged in
|
||||
Given there is connected user "user"
|
||||
When "user" logs out from bridge
|
||||
When "user" logs out
|
||||
And IMAP client authenticates "user"
|
||||
Then IMAP response is "IMAP error: NO account is logged out, use the app to login again"
|
||||
When "user" logs in to bridge
|
||||
When "user" logs in
|
||||
And IMAP client authenticates "user"
|
||||
Then IMAP response is "OK"
|
||||
When IMAP client selects "INBOX"
|
||||
@ -26,7 +26,7 @@ Feature: Address mode
|
||||
Scenario: Switch address mode from combined to split mode
|
||||
Given there is "userMoreAddresses" in "combined" address mode
|
||||
When "userMoreAddresses" changes the address mode
|
||||
Then bridge response is "OK"
|
||||
Then last response is "OK"
|
||||
And "userMoreAddresses" has address mode in "split" mode
|
||||
And mailbox "Folders/mbox" for address "primary" of "userMoreAddresses" has messages
|
||||
| from | to | subject |
|
||||
@ -38,7 +38,7 @@ Feature: Address mode
|
||||
Scenario: Switch address mode from split to combined mode
|
||||
Given there is "userMoreAddresses" in "split" address mode
|
||||
When "userMoreAddresses" changes the address mode
|
||||
Then bridge response is "OK"
|
||||
Then last response is "OK"
|
||||
And "userMoreAddresses" has address mode in "combined" mode
|
||||
And mailbox "Folders/mbox" for address "primary" of "userMoreAddresses" has messages
|
||||
| from | to | subject |
|
||||
@ -1,36 +1,36 @@
|
||||
Feature: Delete user
|
||||
Scenario: Deleting connected user
|
||||
Given there is connected user "user"
|
||||
When user deletes "user" from bridge
|
||||
Then bridge response is "OK"
|
||||
When user deletes "user"
|
||||
Then last response is "OK"
|
||||
And "user" has database file
|
||||
|
||||
Scenario: Deleting connected user with cache
|
||||
Given there is connected user "user"
|
||||
When user deletes "user" from bridge with cache
|
||||
Then bridge response is "OK"
|
||||
When user deletes "user" with cache
|
||||
Then last response is "OK"
|
||||
And "user" does not have database file
|
||||
|
||||
Scenario: Deleting connected user without database file
|
||||
Given there is connected user "user"
|
||||
And there is no database file for "user"
|
||||
When user deletes "user" from bridge with cache
|
||||
Then bridge response is "OK"
|
||||
When user deletes "user" with cache
|
||||
Then last response is "OK"
|
||||
|
||||
Scenario: Deleting disconnected user
|
||||
Given there is disconnected user "user"
|
||||
When user deletes "user" from bridge
|
||||
Then bridge response is "OK"
|
||||
When user deletes "user"
|
||||
Then last response is "OK"
|
||||
And "user" has database file
|
||||
|
||||
Scenario: Deleting disconnected user with cache
|
||||
Given there is disconnected user "user"
|
||||
When user deletes "user" from bridge with cache
|
||||
Then bridge response is "OK"
|
||||
When user deletes "user" with cache
|
||||
Then last response is "OK"
|
||||
And "user" does not have database file
|
||||
|
||||
Scenario: Deleting disconnected user without database file
|
||||
Given there is disconnected user "user"
|
||||
And there is no database file for "user"
|
||||
When user deletes "user" from bridge with cache
|
||||
Then bridge response is "OK"
|
||||
When user deletes "user" with cache
|
||||
Then last response is "OK"
|
||||
@ -1,47 +1,47 @@
|
||||
Feature: Login to bridge for the first time
|
||||
Scenario: Normal bridge login
|
||||
Feature: Login for the first time
|
||||
Scenario: Normal login
|
||||
Given there is user "user"
|
||||
When "user" logs in to bridge
|
||||
Then bridge response is "OK"
|
||||
When "user" logs in
|
||||
Then last response is "OK"
|
||||
And "user" is connected
|
||||
And "user" has database file
|
||||
And "user" has running event loop
|
||||
|
||||
Scenario: Login with bad username
|
||||
When "user" logs in to bridge with bad password
|
||||
Then bridge response is "failed to login: Incorrect login credentials. Please try again"
|
||||
When "user" logs in with bad password
|
||||
Then last response is "failed to login: Incorrect login credentials. Please try again"
|
||||
|
||||
Scenario: Login with bad password
|
||||
Given there is user "user"
|
||||
When "user" logs in to bridge with bad password
|
||||
Then bridge response is "failed to login: Incorrect login credentials. Please try again"
|
||||
When "user" logs in with bad password
|
||||
Then last response is "failed to login: Incorrect login credentials. Please try again"
|
||||
|
||||
Scenario: Login without internet connection
|
||||
Given there is no internet connection
|
||||
When "user" logs in to bridge
|
||||
Then bridge response is "failed to login: cannot reach the server"
|
||||
When "user" logs in
|
||||
Then last response is "failed to login: cannot reach the server"
|
||||
|
||||
@ignore-live
|
||||
Scenario: Login user with 2FA
|
||||
Given there is user "user2fa"
|
||||
When "user2fa" logs in to bridge
|
||||
Then bridge response is "OK"
|
||||
When "user2fa" logs in
|
||||
Then last response is "OK"
|
||||
And "user2fa" is connected
|
||||
And "user2fa" has database file
|
||||
And "user2fa" has running event loop
|
||||
|
||||
Scenario: Login user with capital letters in address
|
||||
Given there is user "userAddressWithCapitalLetter"
|
||||
When "userAddressWithCapitalLetter" logs in to bridge
|
||||
Then bridge response is "OK"
|
||||
When "userAddressWithCapitalLetter" logs in
|
||||
Then last response is "OK"
|
||||
And "userAddressWithCapitalLetter" is connected
|
||||
And "userAddressWithCapitalLetter" has database file
|
||||
And "userAddressWithCapitalLetter" has running event loop
|
||||
|
||||
Scenario: Login user with more addresses
|
||||
Given there is user "userMoreAddresses"
|
||||
When "userMoreAddresses" logs in to bridge
|
||||
Then bridge response is "OK"
|
||||
When "userMoreAddresses" logs in
|
||||
Then last response is "OK"
|
||||
And "userMoreAddresses" is connected
|
||||
And "userMoreAddresses" has database file
|
||||
And "userMoreAddresses" has running event loop
|
||||
@ -49,8 +49,8 @@ Feature: Login to bridge for the first time
|
||||
@ignore-live
|
||||
Scenario: Login user with disabled primary address
|
||||
Given there is user "userDisabledPrimaryAddress"
|
||||
When "userDisabledPrimaryAddress" logs in to bridge
|
||||
Then bridge response is "OK"
|
||||
When "userDisabledPrimaryAddress" logs in
|
||||
Then last response is "OK"
|
||||
And "userDisabledPrimaryAddress" is connected
|
||||
And "userDisabledPrimaryAddress" has database file
|
||||
And "userDisabledPrimaryAddress" has running event loop
|
||||
@ -58,9 +58,9 @@ Feature: Login to bridge for the first time
|
||||
Scenario: Login two users
|
||||
Given there is user "user"
|
||||
And there is user "userMoreAddresses"
|
||||
When "user" logs in to bridge
|
||||
Then bridge response is "OK"
|
||||
When "user" logs in
|
||||
Then last response is "OK"
|
||||
And "user" is connected
|
||||
When "userMoreAddresses" logs in to bridge
|
||||
Then bridge response is "OK"
|
||||
When "userMoreAddresses" logs in
|
||||
Then last response is "OK"
|
||||
And "userMoreAddresses" is connected
|
||||
@ -1,9 +1,9 @@
|
||||
Feature: Re-login to bridge
|
||||
Feature: Re-login
|
||||
Scenario: Re-login with connected user and database file
|
||||
Given there is connected user "user"
|
||||
And there is database file for "user"
|
||||
When "user" logs in to bridge
|
||||
Then bridge response is "failed to finish login: user is already connected"
|
||||
When "user" logs in
|
||||
Then last response is "failed to finish login: user is already connected"
|
||||
And "user" is connected
|
||||
And "user" has running event loop
|
||||
|
||||
@ -11,8 +11,8 @@ Feature: Re-login to bridge
|
||||
Scenario: Re-login with connected user and no database file
|
||||
Given there is connected user "user"
|
||||
And there is no database file for "user"
|
||||
When "user" logs in to bridge
|
||||
Then bridge response is "failed to finish login: user is already connected"
|
||||
When "user" logs in
|
||||
Then last response is "failed to finish login: user is already connected"
|
||||
And "user" is connected
|
||||
And "user" has database file
|
||||
And "user" has running event loop
|
||||
@ -20,16 +20,16 @@ Feature: Re-login to bridge
|
||||
Scenario: Re-login with disconnected user and database file
|
||||
Given there is disconnected user "user"
|
||||
And there is database file for "user"
|
||||
When "user" logs in to bridge
|
||||
Then bridge response is "OK"
|
||||
When "user" logs in
|
||||
Then last response is "OK"
|
||||
And "user" is connected
|
||||
And "user" has running event loop
|
||||
|
||||
Scenario: Re-login with disconnected user and no database file
|
||||
Given there is disconnected user "user"
|
||||
And there is no database file for "user"
|
||||
When "user" logs in to bridge
|
||||
Then bridge response is "OK"
|
||||
When "user" logs in
|
||||
Then last response is "OK"
|
||||
And "user" is connected
|
||||
And "user" has database file
|
||||
And "user" has running event loop
|
||||
@ -28,7 +28,7 @@ Feature: Sync bridge
|
||||
Scenario: Sync in combined mode
|
||||
And there is "userMoreAddresses" in "combined" address mode
|
||||
When bridge syncs "userMoreAddresses"
|
||||
Then bridge response is "OK"
|
||||
Then last response is "OK"
|
||||
And "userMoreAddresses" has the following messages
|
||||
| mailboxes | messages |
|
||||
| INBOX | 1101 |
|
||||
@ -43,7 +43,7 @@ Feature: Sync bridge
|
||||
Scenario: Sync in split mode
|
||||
And there is "userMoreAddresses" in "split" address mode
|
||||
When bridge syncs "userMoreAddresses"
|
||||
Then bridge response is "OK"
|
||||
Then last response is "OK"
|
||||
And "userMoreAddresses" has the following messages
|
||||
| address | mailboxes | messages |
|
||||
| primary | INBOX | 1001 |
|
||||
43
test/features/ie/transfer/export_eml.feature
Normal file
43
test/features/ie/transfer/export_eml.feature
Normal file
@ -0,0 +1,43 @@
|
||||
Feature: Export to EML files
|
||||
Background:
|
||||
Given there is connected user "user"
|
||||
And there is "user" with mailbox "Folders/Foo"
|
||||
And there are messages in mailbox "INBOX" for "user"
|
||||
| from | to | subject | time |
|
||||
| bridgetest@pm.test | test@protonmail.com | hello | 2020-01-01T12:00:00 |
|
||||
And there are messages in mailbox "Folders/Foo" for "user"
|
||||
| from | to | subject | time |
|
||||
| foo@example.com | bridgetest@protonmail.com | one | 2020-01-01T12:00:00 |
|
||||
| bar@example.com | bridgetest@protonmail.com | two | 2020-01-01T13:00:00 |
|
||||
| bar@example.com | bridgetest@protonmail.com | three | 2020-01-01T12:30:00 |
|
||||
|
||||
Scenario: Export all
|
||||
When user "user" exports to EML files
|
||||
Then progress result is "OK"
|
||||
# Every message is also in All Mail.
|
||||
And transfer exported 8 messages
|
||||
And transfer imported 8 messages
|
||||
And transfer failed for 0 messages
|
||||
And transfer exported messages
|
||||
| folder | from | to | subject | time |
|
||||
| Inbox | bridgetest@pm.test | test@protonmail.com | hello | 2020-01-01T12:00:00 |
|
||||
| Foo | foo@example.com | bridgetest@protonmail.com | one | 2020-01-01T12:00:00 |
|
||||
| Foo | bar@example.com | bridgetest@protonmail.com | two | 2020-01-01T13:00:00 |
|
||||
| Foo | bar@example.com | bridgetest@protonmail.com | three | 2020-01-01T12:30:00 |
|
||||
| All Mail | bridgetest@pm.test | test@protonmail.com | hello | 2020-01-01T12:00:00 |
|
||||
| All Mail | foo@example.com | bridgetest@protonmail.com | one | 2020-01-01T12:00:00 |
|
||||
| All Mail | bar@example.com | bridgetest@protonmail.com | two | 2020-01-01T13:00:00 |
|
||||
| All Mail | bar@example.com | bridgetest@protonmail.com | three | 2020-01-01T12:30:00 |
|
||||
|
||||
Scenario: Export only Foo with time limit
|
||||
When user "user" exports to EML files with rules
|
||||
| source | target | from | to |
|
||||
| Foo | | 2020-01-01T12:10:00 | 2020-01-01T13:00:00 |
|
||||
Then progress result is "OK"
|
||||
And transfer exported 2 messages
|
||||
And transfer imported 2 messages
|
||||
And transfer failed for 0 messages
|
||||
And transfer exported messages
|
||||
| folder | from | to | subject | time |
|
||||
| Foo | bar@example.com | bridgetest@protonmail.com | two | 2020-01-01T13:00:00 |
|
||||
| Foo | bar@example.com | bridgetest@protonmail.com | three | 2020-01-01T12:30:00 |
|
||||
43
test/features/ie/transfer/export_mbox.feature
Normal file
43
test/features/ie/transfer/export_mbox.feature
Normal file
@ -0,0 +1,43 @@
|
||||
Feature: Export to MBOX files
|
||||
Background:
|
||||
Given there is connected user "user"
|
||||
And there is "user" with mailbox "Folders/Foo"
|
||||
And there are messages in mailbox "INBOX" for "user"
|
||||
| from | to | subject | time |
|
||||
| bridgetest@pm.test | test@protonmail.com | hello | 2020-01-01T12:00:00 |
|
||||
And there are messages in mailbox "Folders/Foo" for "user"
|
||||
| from | to | subject | time |
|
||||
| foo@example.com | bridgetest@protonmail.com | one | 2020-01-01T12:00:00 |
|
||||
| bar@example.com | bridgetest@protonmail.com | two | 2020-01-01T13:00:00 |
|
||||
| bar@example.com | bridgetest@protonmail.com | three | 2020-01-01T12:30:00 |
|
||||
|
||||
Scenario: Export all
|
||||
When user "user" exports to MBOX files
|
||||
Then progress result is "OK"
|
||||
# Every message is also in All Mail.
|
||||
And transfer exported 8 messages
|
||||
And transfer imported 8 messages
|
||||
And transfer failed for 0 messages
|
||||
And transfer exported messages
|
||||
| folder | from | to | subject | time |
|
||||
| Inbox | bridgetest@pm.test | test@protonmail.com | hello | 2020-01-01T12:00:00 |
|
||||
| Foo | foo@example.com | bridgetest@protonmail.com | one | 2020-01-01T12:00:00 |
|
||||
| Foo | bar@example.com | bridgetest@protonmail.com | two | 2020-01-01T13:00:00 |
|
||||
| Foo | bar@example.com | bridgetest@protonmail.com | three | 2020-01-01T12:30:00 |
|
||||
| All Mail | bridgetest@pm.test | test@protonmail.com | hello | 2020-01-01T12:00:00 |
|
||||
| All Mail | foo@example.com | bridgetest@protonmail.com | one | 2020-01-01T12:00:00 |
|
||||
| All Mail | bar@example.com | bridgetest@protonmail.com | two | 2020-01-01T13:00:00 |
|
||||
| All Mail | bar@example.com | bridgetest@protonmail.com | three | 2020-01-01T12:30:00 |
|
||||
|
||||
Scenario: Export only Foo with time limit
|
||||
When user "user" exports to MBOX files with rules
|
||||
| source | target | from | to |
|
||||
| Foo | | 2020-01-01T12:10:00 | 2020-01-01T13:00:00 |
|
||||
Then progress result is "OK"
|
||||
And transfer exported 2 messages
|
||||
And transfer imported 2 messages
|
||||
And transfer failed for 0 messages
|
||||
And transfer exported messages
|
||||
| folder | from | to | subject | time |
|
||||
| Foo | bar@example.com | bridgetest@protonmail.com | two | 2020-01-01T13:00:00 |
|
||||
| Foo | bar@example.com | bridgetest@protonmail.com | three | 2020-01-01T12:30:00 |
|
||||
60
test/features/ie/transfer/import_eml.feature
Normal file
60
test/features/ie/transfer/import_eml.feature
Normal file
@ -0,0 +1,60 @@
|
||||
Feature: Import from EML files
|
||||
Background:
|
||||
Given there is connected user "user"
|
||||
And there is "user" with mailbox "Folders/Foo"
|
||||
And there is "user" with mailbox "Folders/Bar"
|
||||
And there are EML files
|
||||
| file | from | to | subject | time |
|
||||
| Foo/one.eml | foo@example.com | bridgetest@protonmail.com | one | 2020-01-01T12:00:00 |
|
||||
| Foo/two.eml | bar@example.com | bridgetest@protonmail.com | two | 2020-01-01T13:00:00 |
|
||||
| Sub/Foo/three.eml | bar@example.com | bridgetest@protonmail.com | three | 2020-01-01T12:30:00 |
|
||||
And there is EML file "Inbox/hello.eml"
|
||||
"""
|
||||
Subject: hello
|
||||
From: Bridge Test <bridgetest@pm.test>
|
||||
To: Internal Bridge <test@protonmail.com>
|
||||
|
||||
hello
|
||||
|
||||
"""
|
||||
|
||||
Scenario: Import all
|
||||
When user "user" imports local files
|
||||
Then progress result is "OK"
|
||||
And transfer exported 4 messages
|
||||
And transfer imported 4 messages
|
||||
And transfer failed for 0 messages
|
||||
And API mailbox "INBOX" for "user" has messages
|
||||
| from | to | subject |
|
||||
| bridgetest@pm.test | test@protonmail.com | hello |
|
||||
And API mailbox "Folders/Foo" for "user" has messages
|
||||
| from | to | subject |
|
||||
| foo@example.com | bridgetest@protonmail.com | one |
|
||||
| bar@example.com | bridgetest@protonmail.com | two |
|
||||
| bar@example.com | bridgetest@protonmail.com | three |
|
||||
|
||||
Scenario: Import only Foo to Bar with time limit
|
||||
When user "user" imports local files with rules
|
||||
| source | target | from | to |
|
||||
| Foo | Bar | 2020-01-01T12:10:00 | 2020-01-01T13:00:00 |
|
||||
Then progress result is "OK"
|
||||
And transfer exported 2 messages
|
||||
And transfer imported 2 messages
|
||||
And transfer failed for 0 messages
|
||||
And API mailbox "Folders/Bar" for "user" has messages
|
||||
| from | to | subject |
|
||||
| bar@example.com | bridgetest@protonmail.com | two |
|
||||
| bar@example.com | bridgetest@protonmail.com | three |
|
||||
|
||||
Scenario: Import broken EML message
|
||||
Given there is EML file "Broken/broken.eml"
|
||||
"""
|
||||
Content-type: image/png
|
||||
"""
|
||||
When user "user" imports local files with rules
|
||||
| source | target |
|
||||
| Broken | Foo |
|
||||
Then progress result is "OK"
|
||||
And transfer exported 1 messages
|
||||
And transfer imported 0 messages
|
||||
And transfer failed for 1 messages
|
||||
49
test/features/ie/transfer/import_export.feature
Normal file
49
test/features/ie/transfer/import_export.feature
Normal file
@ -0,0 +1,49 @@
|
||||
Feature: Import/Export
|
||||
Background:
|
||||
Given there is connected user "user"
|
||||
And there is "user" with mailbox "Folders/Foo"
|
||||
And there is "user" with mailbox "Folders/Bar"
|
||||
|
||||
Scenario: EML -> PM -> EML
|
||||
Given there are EML files
|
||||
| file | from | to | subject | time |
|
||||
| Inbox/hello.eml | bridgetest@pm.test | test@protonmail.com | hello | 2020-01-01T12:00:00 |
|
||||
| Foo/one.eml | foo@example.com | bridgetest@protonmail.com | one | 2020-01-01T12:00:00 |
|
||||
| Foo/two.eml | bar@example.com | bridgetest@protonmail.com | two | 2020-01-01T13:00:00 |
|
||||
| Sub/Foo/three.eml | bar@example.com | bridgetest@protonmail.com | three | 2020-01-01T12:30:00 |
|
||||
|
||||
When user "user" imports local files
|
||||
Then progress result is "OK"
|
||||
And transfer failed for 0 messages
|
||||
And transfer imported 4 messages
|
||||
|
||||
When user "user" exports to EML files
|
||||
Then progress result is "OK"
|
||||
And transfer failed for 0 messages
|
||||
# Every message is also in All Mail.
|
||||
And transfer imported 8 messages
|
||||
|
||||
And exported messages match the original ones
|
||||
|
||||
Scenario: MBOX -> PM -> MBOX
|
||||
Given there is MBOX file "Inbox.mbox" with messages
|
||||
| from | to | subject | time |
|
||||
| bridgetest@pm.test | test@protonmail.com | hello | 2020-01-01T12:00:00 |
|
||||
And there is MBOX file "Foo.mbox" with messages
|
||||
| from | to | subject | time |
|
||||
| foo@example.com | bridgetest@protonmail.com | one | 2020-01-01T12:00:00 |
|
||||
| bar@example.com | bridgetest@protonmail.com | two | 2020-01-01T13:00:00 |
|
||||
| bar@example.com | bridgetest@protonmail.com | three | 2020-01-01T12:30:00 |
|
||||
|
||||
When user "user" imports local files
|
||||
Then progress result is "OK"
|
||||
And transfer failed for 0 messages
|
||||
And transfer imported 4 messages
|
||||
|
||||
When user "user" exports to MBOX files
|
||||
Then progress result is "OK"
|
||||
And transfer failed for 0 messages
|
||||
# Every message is also in All Mail.
|
||||
And transfer imported 8 messages
|
||||
|
||||
And exported messages match the original ones
|
||||
79
test/features/ie/transfer/import_imap.feature
Normal file
79
test/features/ie/transfer/import_imap.feature
Normal file
@ -0,0 +1,79 @@
|
||||
Feature: Import from IMAP server
|
||||
Background:
|
||||
Given there is connected user "user"
|
||||
And there is "user" with mailbox "Folders/Foo"
|
||||
And there is "user" with mailbox "Folders/Bar"
|
||||
And there are IMAP mailboxes
|
||||
| name |
|
||||
| Inbox |
|
||||
| Foo |
|
||||
| Broken |
|
||||
And there are IMAP messages
|
||||
| mailbox | seqnum | uid | from | to | subject | time |
|
||||
| Foo | 1 | 12 | foo@example.com | bridgetest@protonmail.com | one | 2020-01-01T12:00:00 |
|
||||
| Foo | 2 | 14 | bar@example.com | bridgetest@protonmail.com | two | 2020-01-01T13:00:00 |
|
||||
| Foo | 3 | 15 | bar@example.com | bridgetest@protonmail.com | three | 2020-01-01T12:30:00 |
|
||||
And there is IMAP message in mailbox "Inbox" with seq 1, uid 42, time "2020-01-01T12:34:56" and subject "hello"
|
||||
"""
|
||||
Subject: hello
|
||||
From: Bridge Test <bridgetest@pm.test>
|
||||
To: Internal Bridge <test@protonmail.com>
|
||||
|
||||
hello
|
||||
|
||||
"""
|
||||
|
||||
Scenario: Import all
|
||||
When user "user" imports remote messages
|
||||
Then progress result is "OK"
|
||||
And transfer exported 4 messages
|
||||
And transfer imported 4 messages
|
||||
And transfer failed for 0 messages
|
||||
And API mailbox "INBOX" for "user" has messages
|
||||
| from | to | subject |
|
||||
| bridgetest@pm.test | test@protonmail.com | hello |
|
||||
And API mailbox "Folders/Foo" for "user" has messages
|
||||
| from | to | subject |
|
||||
| foo@example.com | bridgetest@protonmail.com | one |
|
||||
| bar@example.com | bridgetest@protonmail.com | two |
|
||||
| bar@example.com | bridgetest@protonmail.com | three |
|
||||
|
||||
Scenario: Import only Foo to Bar with time limit
|
||||
When user "user" imports remote messages with rules
|
||||
| source | target | from | to |
|
||||
| Foo | Bar | 2020-01-01T12:10:00 | 2020-01-01T13:00:00 |
|
||||
Then progress result is "OK"
|
||||
And transfer exported 2 messages
|
||||
And transfer imported 2 messages
|
||||
And transfer failed for 0 messages
|
||||
And API mailbox "Folders/Bar" for "user" has messages
|
||||
| from | to | subject |
|
||||
| bar@example.com | bridgetest@protonmail.com | two |
|
||||
| bar@example.com | bridgetest@protonmail.com | three |
|
||||
|
||||
# Note we need to have message which we can parse and use in go-imap
|
||||
# but which has problem on our side. Used example with missing boundary
|
||||
# is real example which we want to solve one day. Probabl this test
|
||||
# can be removed once we import any time of message or switch is to
|
||||
# something we will never allow.
|
||||
Scenario: Import broken message
|
||||
Given there is IMAP message in mailbox "Broken" with seq 1, uid 42, time "2020-01-01T12:34:56" and subject "broken"
|
||||
"""
|
||||
Subject: missing boundary end
|
||||
Content-Type: multipart/related; boundary=boundary
|
||||
|
||||
--boundary
|
||||
Content-Disposition: inline
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
Content-Type: text/plain; charset=utf-8
|
||||
|
||||
body
|
||||
|
||||
"""
|
||||
When user "user" imports remote messages with rules
|
||||
| source | target |
|
||||
| Broken | Foo |
|
||||
Then progress result is "OK"
|
||||
And transfer exported 1 messages
|
||||
And transfer imported 0 messages
|
||||
And transfer failed for 1 messages
|
||||
64
test/features/ie/transfer/import_mbox.feature
Normal file
64
test/features/ie/transfer/import_mbox.feature
Normal file
@ -0,0 +1,64 @@
|
||||
Feature: Import from MBOX files
|
||||
Background:
|
||||
Given there is connected user "user"
|
||||
And there is "user" with mailbox "Folders/Foo"
|
||||
And there is "user" with mailbox "Folders/Bar"
|
||||
And there is MBOX file "Foo.mbox" with messages
|
||||
| from | to | subject | time |
|
||||
| foo@example.com | bridgetest@protonmail.com | one | 2020-01-01T12:00:00 |
|
||||
| bar@example.com | bridgetest@protonmail.com | two | 2020-01-01T13:00:00 |
|
||||
And there is MBOX file "Sub/Foo.mbox" with messages
|
||||
| from | to | subject | time |
|
||||
| bar@example.com | bridgetest@protonmail.com | three | 2020-01-01T12:30:00 |
|
||||
And there is MBOX file "Inbox.mbox"
|
||||
"""
|
||||
From bridgetest@pm.test Thu Feb 20 20:20:20 2020
|
||||
Subject: hello
|
||||
From: Bridge Test <bridgetest@pm.test>
|
||||
To: Internal Bridge <test@protonmail.com>
|
||||
|
||||
hello
|
||||
|
||||
"""
|
||||
|
||||
Scenario: Import all
|
||||
When user "user" imports local files
|
||||
Then progress result is "OK"
|
||||
And transfer exported 4 messages
|
||||
And transfer imported 4 messages
|
||||
And transfer failed for 0 messages
|
||||
And API mailbox "INBOX" for "user" has messages
|
||||
| from | to | subject |
|
||||
| bridgetest@pm.test | test@protonmail.com | hello |
|
||||
And API mailbox "Folders/Foo" for "user" has messages
|
||||
| from | to | subject |
|
||||
| foo@example.com | bridgetest@protonmail.com | one |
|
||||
| bar@example.com | bridgetest@protonmail.com | two |
|
||||
| bar@example.com | bridgetest@protonmail.com | three |
|
||||
|
||||
Scenario: Import only Foo to Bar with time limit
|
||||
When user "user" imports local files with rules
|
||||
| source | target | from | to |
|
||||
| Foo | Bar | 2020-01-01T12:10:00 | 2020-01-01T13:00:00 |
|
||||
Then progress result is "OK"
|
||||
And transfer exported 2 messages
|
||||
And transfer imported 2 messages
|
||||
And transfer failed for 0 messages
|
||||
And API mailbox "Folders/Bar" for "user" has messages
|
||||
| from | to | subject |
|
||||
| bar@example.com | bridgetest@protonmail.com | two |
|
||||
| bar@example.com | bridgetest@protonmail.com | three |
|
||||
|
||||
Scenario: Import broken message
|
||||
Given there is MBOX file "Broken.mbox"
|
||||
"""
|
||||
From bridgetest@pm.test Thu Feb 20 20:20:20 2020
|
||||
Content-type: image/png
|
||||
"""
|
||||
When user "user" imports local files with rules
|
||||
| source | target |
|
||||
| Broken | Foo |
|
||||
Then progress result is "OK"
|
||||
And transfer exported 1 messages
|
||||
And transfer imported 0 messages
|
||||
And transfer failed for 1 messages
|
||||
20
test/features/ie/users/delete.feature
Normal file
20
test/features/ie/users/delete.feature
Normal file
@ -0,0 +1,20 @@
|
||||
Feature: Delete user
|
||||
Scenario: Deleting connected user
|
||||
Given there is connected user "user"
|
||||
When user deletes "user"
|
||||
Then last response is "OK"
|
||||
|
||||
Scenario: Deleting connected user with cache
|
||||
Given there is connected user "user"
|
||||
When user deletes "user" with cache
|
||||
Then last response is "OK"
|
||||
|
||||
Scenario: Deleting disconnected user
|
||||
Given there is disconnected user "user"
|
||||
When user deletes "user"
|
||||
Then last response is "OK"
|
||||
|
||||
Scenario: Deleting disconnected user with cache
|
||||
Given there is disconnected user "user"
|
||||
When user deletes "user" with cache
|
||||
Then last response is "OK"
|
||||
56
test/features/ie/users/login.feature
Normal file
56
test/features/ie/users/login.feature
Normal file
@ -0,0 +1,56 @@
|
||||
Feature: Login for the first time
|
||||
Scenario: Normal login
|
||||
Given there is user "user"
|
||||
When "user" logs in
|
||||
Then last response is "OK"
|
||||
And "user" is connected
|
||||
|
||||
Scenario: Login with bad username
|
||||
When "user" logs in with bad password
|
||||
Then last response is "failed to login: Incorrect login credentials. Please try again"
|
||||
|
||||
Scenario: Login with bad password
|
||||
Given there is user "user"
|
||||
When "user" logs in with bad password
|
||||
Then last response is "failed to login: Incorrect login credentials. Please try again"
|
||||
|
||||
Scenario: Login without internet connection
|
||||
Given there is no internet connection
|
||||
When "user" logs in
|
||||
Then last response is "failed to login: cannot reach the server"
|
||||
|
||||
@ignore-live
|
||||
Scenario: Login user with 2FA
|
||||
Given there is user "user2fa"
|
||||
When "user2fa" logs in
|
||||
Then last response is "OK"
|
||||
And "user2fa" is connected
|
||||
|
||||
Scenario: Login user with capital letters in address
|
||||
Given there is user "userAddressWithCapitalLetter"
|
||||
When "userAddressWithCapitalLetter" logs in
|
||||
Then last response is "OK"
|
||||
And "userAddressWithCapitalLetter" is connected
|
||||
|
||||
Scenario: Login user with more addresses
|
||||
Given there is user "userMoreAddresses"
|
||||
When "userMoreAddresses" logs in
|
||||
Then last response is "OK"
|
||||
And "userMoreAddresses" is connected
|
||||
|
||||
@ignore-live
|
||||
Scenario: Login user with disabled primary address
|
||||
Given there is user "userDisabledPrimaryAddress"
|
||||
When "userDisabledPrimaryAddress" logs in
|
||||
Then last response is "OK"
|
||||
And "userDisabledPrimaryAddress" is connected
|
||||
|
||||
Scenario: Login two users
|
||||
Given there is user "user"
|
||||
And there is user "userMoreAddresses"
|
||||
When "user" logs in
|
||||
Then last response is "OK"
|
||||
And "user" is connected
|
||||
When "userMoreAddresses" logs in
|
||||
Then last response is "OK"
|
||||
And "userMoreAddresses" is connected
|
||||
12
test/features/ie/users/relogin.feature
Normal file
12
test/features/ie/users/relogin.feature
Normal file
@ -0,0 +1,12 @@
|
||||
Feature: Re-login
|
||||
Scenario: Re-login with connected user
|
||||
Given there is connected user "user"
|
||||
When "user" logs in
|
||||
Then last response is "failed to finish login: user is already connected"
|
||||
And "user" is connected
|
||||
|
||||
Scenario: Re-login with disconnected user
|
||||
Given there is disconnected user "user"
|
||||
When "user" logs in
|
||||
Then last response is "OK"
|
||||
And "user" is connected
|
||||
Reference in New Issue
Block a user