From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../test/browser/composition/browser_emlActions.js | 194 +++++++++++++++++++++ 1 file changed, 194 insertions(+) create mode 100644 comm/mail/test/browser/composition/browser_emlActions.js (limited to 'comm/mail/test/browser/composition/browser_emlActions.js') 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 +}); -- cgit v1.2.3