summaryrefslogtreecommitdiffstats
path: root/comm/mail/test/browser/composition/browser_forwardedEmlActions.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mail/test/browser/composition/browser_forwardedEmlActions.js')
-rw-r--r--comm/mail/test/browser/composition/browser_forwardedEmlActions.js171
1 files changed, 171 insertions, 0 deletions
diff --git a/comm/mail/test/browser/composition/browser_forwardedEmlActions.js b/comm/mail/test/browser/composition/browser_forwardedEmlActions.js
new file mode 100644
index 0000000000..609f6c1107
--- /dev/null
+++ b/comm/mail/test/browser/composition/browser_forwardedEmlActions.js
@@ -0,0 +1,171 @@
+/* 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 and forwarding works correctly from
+ * an .eml message that's attached to another mail.
+ */
+
+"use strict";
+
+var { async_wait_for_compose_window, close_compose_window, get_compose_body } =
+ ChromeUtils.import("resource://testing-common/mozmill/ComposeHelpers.jsm");
+var {
+ assert_selected_and_displayed,
+ be_in_folder,
+ close_tab,
+ create_folder,
+ get_about_message,
+ mc,
+ select_click_row,
+ wait_for_message_display_completion,
+} = ChromeUtils.import(
+ "resource://testing-common/mozmill/FolderDisplayHelpers.jsm"
+);
+var { async_plan_for_new_window, close_window, wait_for_new_window } =
+ ChromeUtils.import("resource://testing-common/mozmill/WindowHelpers.jsm");
+
+var { MailServices } = ChromeUtils.import(
+ "resource:///modules/MailServices.jsm"
+);
+
+var folder;
+
+var msgsubject = "mail client suggestions";
+var msgbodyA = "know of a good email client?";
+var msgbodyB = "hi, i think you may know of an email client to recommend?";
+
+add_setup(async function () {
+ folder = await create_folder("FwdedEmlTest");
+
+ let source =
+ "From - Mon Apr 16 22:55:33 2012\n" +
+ "Date: Mon, 16 Apr 2012 22:55:33 +0300\n" +
+ "From: Mr Example <example@invalid>\n" +
+ "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20120331 Thunderbird/14.0a1\n" +
+ "MIME-Version: 1.0\n" +
+ "To: example@invalid\n" +
+ "Subject: Fwd: " +
+ msgsubject +
+ "\n" +
+ "References: <4F8C78F5.4000704@invalid>\n" +
+ "In-Reply-To: <4F8C78F5.4000704@invalid>\n" +
+ "X-Forwarded-Message-Id: <4F8C78F5.4000704@invalid>\n" +
+ "Content-Type: multipart/mixed;\n" +
+ ' boundary="------------080806020206040800000503"\n' +
+ "\n" +
+ "This is a multi-part message in MIME format.\n" +
+ "--------------080806020206040800000503\n" +
+ "Content-Type: text/plain; charset=ISO-8859-1; format=flowed\n" +
+ "Content-Transfer-Encoding: 7bit\n" +
+ "\n" +
+ msgbodyB +
+ "\n" +
+ "\n" +
+ "--------------080806020206040800000503\n" +
+ "Content-Type: message/rfc822;\n" +
+ ' name="mail client suggestions.eml"\n' +
+ "Content-Transfer-Encoding: 7bit\n" +
+ "Content-Disposition: attachment;\n" +
+ ' filename="mail client suggestions.eml"\n' +
+ "\n" +
+ "Return-Path: <example@invalid>\n" +
+ "Received: from xxx (smtpu [10.0.0.51])\n" +
+ " by storage (Cyrus v2.3.7-Invoca-RPM-2.3.7-1.1) with LMTPA;\n" +
+ " Mon, 16 Apr 2012 22:54:36 +0300\n" +
+ "Message-ID: <4F8C78F5.4000704@invalid>\n" +
+ "Date: Mon, 16 Apr 2012 22:54:29 +0300\n" +
+ "From: Mr Example <example@invalid>\n" +
+ "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20120331 Thunderbird/14.0a1\n" +
+ "MIME-Version: 1.0\n" +
+ "To: example@invalid\n" +
+ "Subject: mail client suggestions\n" +
+ "Content-Type: text/plain; charset=ISO-8859-1; format=flowed\n" +
+ "Content-Transfer-Encoding: 7bit\n" +
+ "\n" +
+ msgbodyA +
+ "\n" +
+ "\n" +
+ "--------------080806020206040800000503--\n";
+
+ folder.QueryInterface(Ci.nsIMsgLocalMailFolder);
+ folder.addMessage(source);
+});
+
+/**
+ * Helper to open an attached .eml file, invoke the hotkey and check some
+ * properties of the composition content we get.
+ */
+async function setupWindowAndTest(hotkeyToHit, hotkeyModifiers) {
+ await be_in_folder(folder);
+
+ let msg = select_click_row(0);
+ assert_selected_and_displayed(mc, msg);
+
+ let tabSelectPromise = BrowserTestUtils.waitForEvent(
+ mc.window.document.getElementById("tabmail").tabContainer,
+ "select"
+ );
+ let aboutMessage = get_about_message();
+ EventUtils.synthesizeMouseAtCenter(
+ aboutMessage.document.getElementById("attachmentName"),
+ { clickCount: 1 },
+ aboutMessage
+ );
+ await tabSelectPromise;
+ wait_for_message_display_completion(mc, false);
+
+ let newWindowPromise = async_plan_for_new_window("msgcompose");
+ EventUtils.synthesizeKey(hotkeyToHit, hotkeyModifiers, window);
+ let compWin = await async_wait_for_compose_window(window, newWindowPromise);
+
+ let bodyText = get_compose_body(compWin).textContent;
+ if (bodyText.includes("html")) {
+ throw new Error("body text contains raw html; bodyText=" + bodyText);
+ }
+
+ if (!bodyText.includes(msgbodyA)) {
+ throw new Error(
+ "body text didn't contain the body text; msgbodyA=" +
+ msgbodyB +
+ ", bodyText=" +
+ bodyText
+ );
+ }
+
+ let subjectText = compWin.window.document.getElementById("msgSubject").value;
+ if (!subjectText.includes(msgsubject)) {
+ throw new Error(
+ "subject text didn't contain the original subject; " +
+ "msgsubject=" +
+ msgsubject +
+ ", subjectText=" +
+ subjectText
+ );
+ }
+
+ close_compose_window(compWin, false);
+ close_tab(mc.window.document.getElementById("tabmail").currentTabInfo);
+}
+
+/**
+ * Test that replying to an attached .eml contains the expected texts.
+ */
+add_task(function test_reply_to_attached_eml() {
+ return setupWindowAndTest("R", { shiftKey: false, accelKey: true });
+});
+
+/**
+ * Test that forwarding an attached .eml contains the expected texts.
+ */
+add_task(async function test_forward_attached_eml() {
+ await setupWindowAndTest("L", { shiftKey: false, accelKey: true });
+
+ Assert.report(
+ false,
+ undefined,
+ undefined,
+ "Test ran to completion successfully"
+ );
+});