summaryrefslogtreecommitdiffstats
path: root/comm/mail/test/browser/composition/browser_forwardHeaders.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mail/test/browser/composition/browser_forwardHeaders.js')
-rw-r--r--comm/mail/test/browser/composition/browser_forwardHeaders.js175
1 files changed, 175 insertions, 0 deletions
diff --git a/comm/mail/test/browser/composition/browser_forwardHeaders.js b/comm/mail/test/browser/composition/browser_forwardHeaders.js
new file mode 100644
index 0000000000..1568f134b0
--- /dev/null
+++ b/comm/mail/test/browser/composition/browser_forwardHeaders.js
@@ -0,0 +1,175 @@
+/* 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 headers like References and X-Forwarded-Message-Id are
+ * set properly when forwarding messages.
+ */
+
+"use strict";
+
+var {
+ assert_previous_text,
+ get_compose_body,
+ open_compose_with_forward,
+ open_compose_with_forward_as_attachments,
+} = ChromeUtils.import("resource://testing-common/mozmill/ComposeHelpers.jsm");
+var {
+ add_message_sets_to_folders,
+ be_in_folder,
+ create_folder,
+ create_thread,
+ get_special_folder,
+ make_display_unthreaded,
+ mc,
+ press_delete,
+ select_click_row,
+ select_shift_click_row,
+} = ChromeUtils.import(
+ "resource://testing-common/mozmill/FolderDisplayHelpers.jsm"
+);
+var { MsgHdrToMimeMessage } = ChromeUtils.import(
+ "resource:///modules/gloda/MimeMessage.jsm"
+);
+var { plan_for_window_close, wait_for_window_close } = ChromeUtils.import(
+ "resource://testing-common/mozmill/WindowHelpers.jsm"
+);
+
+var cwc = null; // compose window controller
+var folder;
+var gDrafts;
+
+add_setup(async function () {
+ folder = await create_folder("Test");
+ let thread1 = create_thread(10);
+ await add_message_sets_to_folders([folder], [thread1]);
+
+ gDrafts = await get_special_folder(Ci.nsMsgFolderFlags.Drafts, true);
+
+ // Don't create paragraphs in the test.
+ // The test checks for the first DOM node and expects a text and not
+ // a paragraph.
+ Services.prefs.setBoolPref("mail.compose.default_to_paragraph", false);
+});
+
+registerCleanupFunction(function () {
+ Services.prefs.clearUserPref("mail.compose.default_to_paragraph");
+});
+
+async function forward_selected_messages_and_go_to_drafts_folder(f) {
+ const kText = "Hey check out this megalol link";
+ // opening a new compose window
+ cwc = f(mc);
+ cwc.window.document.getElementById("messageEditor").focus();
+ EventUtils.sendString(kText, cwc.window);
+
+ let mailBody = get_compose_body(cwc);
+ assert_previous_text(mailBody.firstChild, [kText]);
+
+ plan_for_window_close(cwc);
+ // mwc is modal window controller
+ let dialogPromise = BrowserTestUtils.promiseAlertDialog("accept");
+ // quit -> do you want to save ?
+ cwc.window.goDoCommand("cmd_close");
+ await dialogPromise;
+ // Actually quit the window.
+ wait_for_window_close();
+
+ // Visit the existing Drafts folder.
+ await be_in_folder(gDrafts);
+ make_display_unthreaded();
+}
+
+add_task(async function test_forward_inline() {
+ await be_in_folder(folder);
+ make_display_unthreaded();
+ // original message header
+ let oMsgHdr = select_click_row(0);
+
+ await forward_selected_messages_and_go_to_drafts_folder(
+ open_compose_with_forward
+ );
+
+ // forwarded message header
+ let fMsgHdr = select_click_row(0);
+
+ Assert.ok(
+ fMsgHdr.numReferences > 0,
+ "No References Header in forwarded msg."
+ );
+ Assert.equal(
+ fMsgHdr.getStringReference(0),
+ oMsgHdr.messageId,
+ "The forwarded message should have References: = Message-Id: of the original msg"
+ );
+
+ // test for x-forwarded-message id and exercise the js mime representation as
+ // well
+ return new Promise(resolve => {
+ MsgHdrToMimeMessage(fMsgHdr, null, function (aMsgHdr, aMimeMsg) {
+ Assert.equal(
+ aMimeMsg.headers["x-forwarded-message-id"],
+ "<" + oMsgHdr.messageId + ">"
+ );
+ Assert.equal(aMimeMsg.headers.references, "<" + oMsgHdr.messageId + ">");
+
+ press_delete(mc);
+ resolve();
+ });
+ });
+});
+
+add_task(async function test_forward_as_attachments() {
+ await be_in_folder(folder);
+ make_display_unthreaded();
+
+ // original message header
+ let oMsgHdr0 = select_click_row(0);
+ let oMsgHdr1 = select_click_row(1);
+ select_shift_click_row(0);
+
+ await forward_selected_messages_and_go_to_drafts_folder(
+ open_compose_with_forward_as_attachments
+ );
+
+ // forwarded message header
+ let fMsgHdr = select_click_row(0);
+
+ Assert.ok(
+ fMsgHdr.numReferences > 0,
+ "No References Header in forwarded msg."
+ );
+ Assert.ok(
+ fMsgHdr.numReferences > 1,
+ "Only one References Header in forwarded msg."
+ );
+ Assert.equal(
+ fMsgHdr.getStringReference(1),
+ oMsgHdr1.messageId,
+ "The forwarded message should have References: = Message-Id: of the original msg#1"
+ );
+ Assert.equal(
+ fMsgHdr.getStringReference(0),
+ oMsgHdr0.messageId,
+ "The forwarded message should have References: = Message-Id: of the original msg#0"
+ );
+
+ // test for x-forwarded-message id and exercise the js mime representation as
+ // well
+ return new Promise(resolve => {
+ MsgHdrToMimeMessage(fMsgHdr, null, function (aMsgHdr, aMimeMsg) {
+ Assert.equal(
+ aMimeMsg.headers["x-forwarded-message-id"],
+ "<" + oMsgHdr0.messageId + "> <" + oMsgHdr1.messageId + ">"
+ );
+ Assert.equal(
+ aMimeMsg.headers.references,
+ "<" + oMsgHdr0.messageId + "> <" + oMsgHdr1.messageId + ">"
+ );
+
+ press_delete(mc);
+ resolve();
+ });
+ });
+});