diff options
Diffstat (limited to 'comm/mail/test/browser/account/browser_deletion.js')
-rw-r--r-- | comm/mail/test/browser/account/browser_deletion.js | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/comm/mail/test/browser/account/browser_deletion.js b/comm/mail/test/browser/account/browser_deletion.js new file mode 100644 index 0000000000..45c8d701b1 --- /dev/null +++ b/comm/mail/test/browser/account/browser_deletion.js @@ -0,0 +1,108 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/** + * This test checks proper deletion of an account from the Account manager. + */ + +"use strict"; + +var { open_advanced_settings, remove_account } = ChromeUtils.import( + "resource://testing-common/mozmill/AccountManagerHelpers.jsm" +); + +var { MailServices } = ChromeUtils.import( + "resource:///modules/MailServices.jsm" +); + +var gPopAccount, gImapAccount, gOriginalAccountCount; + +add_setup(function () { + // There may be pre-existing accounts from other tests. + gOriginalAccountCount = MailServices.accounts.allServers.length; + + // Create a POP server + let popServer = MailServices.accounts + .createIncomingServer("nobody", "pop.foo.invalid", "pop3") + .QueryInterface(Ci.nsIPop3IncomingServer); + + let identity = MailServices.accounts.createIdentity(); + identity.email = "tinderbox@pop.foo.invalid"; + + gPopAccount = MailServices.accounts.createAccount(); + gPopAccount.incomingServer = popServer; + gPopAccount.addIdentity(identity); + + // Create an IMAP server + let imapServer = MailServices.accounts + .createIncomingServer("nobody", "imap.foo.invalid", "imap") + .QueryInterface(Ci.nsIImapIncomingServer); + + identity = MailServices.accounts.createIdentity(); + identity.email = "tinderbox@imap.foo.invalid"; + + gImapAccount = MailServices.accounts.createAccount(); + gImapAccount.incomingServer = imapServer; + gImapAccount.addIdentity(identity); + + Assert.equal( + MailServices.accounts.allServers.length, + gOriginalAccountCount + 2 + ); +}); + +registerCleanupFunction(function () { + // There should be only the original accounts left. + Assert.equal(MailServices.accounts.allServers.length, gOriginalAccountCount); +}); + +add_task(async function test_account_data_deletion() { + await open_advanced_settings(function (tab) { + subtest_account_data_deletion1(tab); + }); + + await open_advanced_settings(function (tab) { + subtest_account_data_deletion2(tab); + }); +}); + +/** + * Bug 274452 + * Check if files of an account are preserved. + * + * @param {object} tab - The account manager tab. + */ +function subtest_account_data_deletion1(tab) { + let accountDir = gPopAccount.incomingServer.localPath; + Assert.ok(accountDir.isDirectory()); + + // Get some existing file in the POP3 account data dir. + let inboxFile = accountDir.clone(); + inboxFile.append("Inbox.msf"); + Assert.ok(inboxFile.isFile()); + + remove_account(gPopAccount, tab, true, false); + gPopAccount = null; + Assert.ok(accountDir.exists()); +} + +/** + * Bug 274452 + * Check if files of an account can be deleted. + * + * @param {object} tab - The account manager tab. + */ +function subtest_account_data_deletion2(tab) { + let accountDir = gImapAccount.incomingServer.localPath; + Assert.ok(accountDir.isDirectory()); + + // Get some file in the IMAP account data dir. + let inboxFile = accountDir.clone(); + inboxFile.append("INBOX.msf"); + Assert.ok(inboxFile.isFile()); + + remove_account(gImapAccount, tab, true, true); + gImapAccount = null; + Assert.ok(!accountDir.exists()); +} |