diff options
Diffstat (limited to 'comm/mail/components/extensions/test/browser/browser_ext_compose_begin_identity.js')
-rw-r--r-- | comm/mail/components/extensions/test/browser/browser_ext_compose_begin_identity.js | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/comm/mail/components/extensions/test/browser/browser_ext_compose_begin_identity.js b/comm/mail/components/extensions/test/browser/browser_ext_compose_begin_identity.js new file mode 100644 index 0000000000..34ee180582 --- /dev/null +++ b/comm/mail/components/extensions/test/browser/browser_ext_compose_begin_identity.js @@ -0,0 +1,102 @@ +/* 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/. */ + +var { MailServices } = ChromeUtils.import( + "resource:///modules/MailServices.jsm" +); + +let account = createAccount("pop3"); +createAccount("local"); +MailServices.accounts.defaultAccount = account; + +let defaultIdentity = addIdentity(account); +defaultIdentity.composeHtml = true; +let nonDefaultIdentity = addIdentity(account); +nonDefaultIdentity.composeHtml = false; + +let rootFolder = account.incomingServer.rootFolder; +rootFolder.createSubfolder("test", null); +let folder = rootFolder.getChildNamed("test"); +createMessages(folder, 4); + +add_task(async function testIdentity() { + let files = { + "background.js": async () => { + let accounts = await browser.accounts.list(); + browser.test.assertEq(2, accounts.length, "number of accounts"); + let popAccount = accounts.find(a => a.type == "pop3"); + browser.test.assertEq( + 2, + popAccount.identities.length, + "number of identities" + ); + let [defaultIdentity, nonDefaultIdentity] = popAccount.identities; + let folder = popAccount.folders.find(f => f.name == "test"); + let { messages } = await browser.messages.list(folder); + browser.test.assertEq(4, messages.length, "number of messages"); + + browser.test.log(defaultIdentity.id); + browser.test.log(nonDefaultIdentity.id); + + let funcs = [ + { name: "beginNew", args: [] }, + { name: "beginReply", args: [messages[0].id] }, + { name: "beginForward", args: [messages[1].id, "forwardAsAttachment"] }, + // Uses a different code path. + { name: "beginForward", args: [messages[2].id, "forwardInline"] }, + { name: "beginNew", args: [messages[3].id] }, + ]; + let tests = [ + { args: [], isDefault: true }, + { + args: [{ identityId: defaultIdentity.id }], + isDefault: true, + }, + { + args: [{ identityId: nonDefaultIdentity.id }], + isDefault: false, + }, + ]; + for (let func of funcs) { + browser.test.log(func.name); + for (let test of tests) { + browser.test.log(JSON.stringify(test.args)); + let tab = await browser.compose[func.name]( + ...func.args.concat(test.args) + ); + browser.test.assertEq("object", typeof tab); + browser.test.assertEq("number", typeof tab.id); + await window.sendMessage("checkIdentity", test.isDefault); + } + } + + browser.test.notifyPass("finished"); + }, + "utils.js": await getUtilsJS(), + }; + let extension = ExtensionTestUtils.loadExtension({ + files, + manifest: { + background: { scripts: ["utils.js", "background.js"] }, + permissions: ["accountsRead", "messagesRead"], + }, + }); + + extension.onMessage("checkIdentity", async isDefault => { + let composeWindows = [...Services.wm.getEnumerator("msgcompose")]; + is(composeWindows.length, 1); + await new Promise(resolve => composeWindows[0].setTimeout(resolve)); + + is( + composeWindows[0].getCurrentIdentityKey(), + isDefault ? defaultIdentity.key : nonDefaultIdentity.key + ); + composeWindows[0].close(); + extension.sendMessage(); + }); + + await extension.startup(); + await extension.awaitFinish("finished"); + await extension.unload(); +}); |