summaryrefslogtreecommitdiffstats
path: root/comm/mail/test/browser/composition/browser_emlActions.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mail/test/browser/composition/browser_emlActions.js')
-rw-r--r--comm/mail/test/browser/composition/browser_emlActions.js194
1 files changed, 194 insertions, 0 deletions
diff --git a/comm/mail/test/browser/composition/browser_emlActions.js b/comm/mail/test/browser/composition/browser_emlActions.js
new file mode 100644
index 0000000000..cf24be0b23
--- /dev/null
+++ b/comm/mail/test/browser/composition/browser_emlActions.js
@@ -0,0 +1,194 @@
+/* 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/. */
+
+/**
+ * Tests that actions such as replying to an .eml works properly.
+ */
+
+"use strict";
+
+var {
+ close_compose_window,
+ get_compose_body,
+ open_compose_with_forward,
+ open_compose_with_reply,
+ save_compose_message,
+} = ChromeUtils.import("resource://testing-common/mozmill/ComposeHelpers.jsm");
+var {
+ be_in_folder,
+ get_special_folder,
+ open_message_from_file,
+ press_delete,
+ select_click_row,
+} = ChromeUtils.import(
+ "resource://testing-common/mozmill/FolderDisplayHelpers.jsm"
+);
+var { close_window } = ChromeUtils.import(
+ "resource://testing-common/mozmill/WindowHelpers.jsm"
+);
+
+var { MailServices } = ChromeUtils.import(
+ "resource:///modules/MailServices.jsm"
+);
+
+var gDrafts;
+
+add_setup(async function () {
+ gDrafts = await get_special_folder(Ci.nsMsgFolderFlags.Drafts, true);
+});
+
+/**
+ * Test that replying to an opened .eml message works, and that the reply can
+ * be saved as a draft.
+ */
+add_task(async function test_reply_to_eml_save_as_draft() {
+ // Open an .eml file.
+ let file = new FileUtils.File(getTestFilePath("data/testmsg.eml"));
+ let msgc = await open_message_from_file(file);
+
+ let replyWin = open_compose_with_reply(msgc);
+
+ // Ctrl+S saves as draft.
+ await save_compose_message(replyWin.window);
+ close_compose_window(replyWin);
+
+ await TestUtils.waitForCondition(
+ () => gDrafts.getTotalMessages(false) == 1,
+ "message saved to drafts folder"
+ );
+
+ // Drafts folder should exist now.
+ await be_in_folder(gDrafts);
+ let draftMsg = select_click_row(0);
+ if (!draftMsg) {
+ throw new Error("No draft saved!");
+ }
+ press_delete(); // Delete the draft.
+
+ close_window(msgc); // close base .eml message
+});
+
+/**
+ * Test that forwarding an opened .eml message works, and that the forward can
+ * be saved as a draft.
+ */
+add_task(async function test_forward_eml_save_as_draft() {
+ // Open an .eml file.
+ let file = new FileUtils.File(getTestFilePath("data/testmsg.eml"));
+ let msgc = await open_message_from_file(file);
+
+ let replyWin = open_compose_with_forward(msgc);
+
+ await save_compose_message(replyWin.window);
+ close_compose_window(replyWin);
+
+ await TestUtils.waitForCondition(
+ () => gDrafts.getTotalMessages(false) == 1,
+ "message saved to drafts folder"
+ );
+
+ // Drafts folder should exist now.
+ await be_in_folder(gDrafts);
+ let draftMsg = select_click_row(0);
+ if (!draftMsg) {
+ throw new Error("No draft saved!");
+ }
+ press_delete(); // Delete the draft.
+
+ close_window(msgc); // close base .eml message
+});
+
+/**
+ * Test that MIME encoded subject is decoded when replying to an opened .eml.
+ */
+add_task(async function test_reply_eml_subject() {
+ // Open an .eml file whose subject is encoded.
+ let file = new FileUtils.File(
+ getTestFilePath("data/mime-encoded-subject.eml")
+ );
+ let msgc = await open_message_from_file(file);
+
+ let replyWin = open_compose_with_reply(msgc);
+
+ Assert.equal(
+ replyWin.window.document.getElementById("msgSubject").value,
+ "Re: \u2200a\u220aA"
+ );
+ close_compose_window(replyWin); // close compose window
+ close_window(msgc); // close base .eml message
+});
+
+/**
+ * Test that replying to a base64 encoded .eml works.
+ */
+add_task(async function test_reply_to_base64_eml() {
+ // Open an .eml file.
+ let file = new FileUtils.File(getTestFilePath("data/base64-encoded-msg.eml"));
+ let msgc = await open_message_from_file(file);
+ let compWin = open_compose_with_reply(msgc);
+ let bodyText = get_compose_body(compWin).textContent;
+ const TXT = "You have decoded this text from base64.";
+ Assert.ok(bodyText.includes(TXT), "body should contain the decoded text");
+ close_compose_window(compWin);
+ close_window(msgc);
+});
+
+/**
+ * Test that forwarding a base64 encoded .eml works.
+ */
+add_task(async function test_forward_base64_eml() {
+ // Open an .eml file.
+ let file = new FileUtils.File(getTestFilePath("data/base64-encoded-msg.eml"));
+ let msgc = await open_message_from_file(file);
+ let compWin = open_compose_with_forward(msgc);
+ let bodyText = get_compose_body(compWin).textContent;
+ const TXT = "You have decoded this text from base64.";
+ Assert.ok(bodyText.includes(TXT), "body should contain the decoded text");
+ close_compose_window(compWin);
+ close_window(msgc);
+});
+
+/**
+ * Test that replying and forwarding an evil meta msg works.
+ */
+add_task(async function test_reply_fwd_to_evil_meta() {
+ // Open an .eml file.
+ let file = new FileUtils.File(getTestFilePath("data/evil-meta-msg.eml"));
+ let msgc = await open_message_from_file(file);
+
+ const TXT = "KABOOM!";
+
+ let reWin = open_compose_with_reply(msgc);
+ let reText = get_compose_body(reWin).textContent;
+ Assert.ok(reText.includes(TXT), "re body should contain the text");
+ close_compose_window(reWin);
+
+ let fwdWin = open_compose_with_forward(msgc);
+ let fwdText = get_compose_body(fwdWin).textContent;
+ Assert.ok(fwdText.includes(TXT), "fwd body should contain the text");
+ close_compose_window(fwdWin);
+
+ close_window(msgc);
+});
+
+/**
+ * Test that forwarding an opened .eml message works with catchAll enabled.
+ */
+add_task(async function test_forward_eml_catchall() {
+ // Open an .eml file.
+ let file = new FileUtils.File(getTestFilePath("data/testmsg.eml"));
+ let msgc = await open_message_from_file(file);
+
+ MailServices.accounts.defaultAccount.defaultIdentity.catchAll = true;
+
+ let replyWin = open_compose_with_forward(msgc);
+ let bodyText = get_compose_body(replyWin).textContent;
+ const message = "Because they're stupid, that's why";
+ Assert.ok(bodyText.includes(message), "Correct message body");
+
+ MailServices.accounts.defaultAccount.defaultIdentity.catchAll = false;
+
+ close_compose_window(replyWin); // close compose window
+ close_window(msgc); // close base .eml message
+});