summaryrefslogtreecommitdiffstats
path: root/comm/mail/test/browser/account/browser_deletion.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mail/test/browser/account/browser_deletion.js')
-rw-r--r--comm/mail/test/browser/account/browser_deletion.js108
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());
+}