Feature: Bridge can fully sync an account
  Background:
    Given there exists an account with username "[user:user]" and password "password"
    And the account "[user:user]" has the following custom mailboxes:
      | name  | type   |
      | one   | folder |
      | two   | folder |
      | three | label  |
    And the address "[user:user]@[domain]" of account "[user:user]" has the following messages in "Folders/one":
      | from       | to         | subject | unread |
      | a@[domain] | a@[domain] | one     | true   |
      | b@[domain] | b@[domain] | two     | false  |
    And the address "[user:user]@[domain]" of account "[user:user]" has the following messages in "Folders/two":
      | from       | to         | subject | unread |
      | a@[domain] | a@[domain] | one     | true   |
      | b@[domain] | b@[domain] | two     | false  |
    And bridge starts

  Scenario: The account is synced when the user logs in and persists across bridge restarts
    When the user logs in with username "[user:user]" and password "password"
    Then bridge sends sync started and finished events for user "[user:user]"
    When bridge restarts
    And user "[user:user]" connects and authenticates IMAP client "1"
    Then IMAP client "1" eventually 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     | 4     | 2      |
      | Folders      | 0     | 0      |
      | Folders/one  | 2     | 1      |
      | Folders/two  | 2     | 1      |
      | Labels       | 0     | 0      |
      | Labels/three | 0     | 0      |

  Scenario: If the gluon files are deleted, the account is synced again
    Given the user logs in with username "[user:user]" and password "password"
    And user "[user:user]" finishes syncing
    And bridge stops
    And the user deletes the gluon files
    And bridge starts
    When user "[user:user]" connects and authenticates IMAP client "1"
    Then IMAP client "1" eventually 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     | 4     | 2      |
      | Folders      | 0     | 0      |
      | Folders/one  | 2     | 1      |
      | Folders/two  | 2     | 1      |
      | Labels       | 0     | 0      |
      | Labels/three | 0     | 0      |

  Scenario: If an address has no keys, it does not break other addresses
    Given the account "[user:user]" has additional address "[alias:alias]@[domain]" without keys
    When the user logs in with username "[user:user]" and password "password"
    And user "[user:user]" finishes syncing
    When user "[user:user]" connects and authenticates IMAP client "1"
    Then IMAP client "1" eventually sees the following messages in "Folders/one":
      | from       | to         | subject | unread |
      | a@[domain] | a@[domain] | one     | true   |
      | b@[domain] | b@[domain] | two     | false  |