diff options
Diffstat (limited to 'comm/mail/test/browser/message-window/browser_commands.js')
-rw-r--r-- | comm/mail/test/browser/message-window/browser_commands.js | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/comm/mail/test/browser/message-window/browser_commands.js b/comm/mail/test/browser/message-window/browser_commands.js new file mode 100644 index 0000000000..32ff6d5bdc --- /dev/null +++ b/comm/mail/test/browser/message-window/browser_commands.js @@ -0,0 +1,103 @@ +/* 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/. */ + +"use strict"; + +var { MailServices } = ChromeUtils.import( + "resource:///modules/MailServices.jsm" +); + +var { + be_in_folder, + create_folder, + get_about_message, + make_message_sets_in_folders, + mc, + open_message_from_file, + press_delete, + select_click_row, +} = ChromeUtils.import( + "resource://testing-common/mozmill/FolderDisplayHelpers.jsm" +); +var { click_menus_in_sequence, close_window } = ChromeUtils.import( + "resource://testing-common/mozmill/WindowHelpers.jsm" +); + +var folder1, folder2; + +add_setup(async function () { + folder1 = await create_folder("CopyFromFolder"); + folder2 = await create_folder("CopyToFolder"); + await make_message_sets_in_folders([folder1], [{ count: 1 }]); +}); + +add_task(async function test_copy_eml_message() { + // First, copy an email to a folder and delete it immediately just so it shows + // up in the recent folders list. This simplifies navigation of the copy + // context menu. + await be_in_folder(folder1); + let message = select_click_row(0); + MailServices.copy.copyMessages( + folder1, + [message], + folder2, + true, + null, + mc.window.msgWindow, + true + ); + await be_in_folder(folder2); + select_click_row(0); + press_delete(mc); + + // Now, open a .eml file and copy it to our folder. + let file = new FileUtils.File(getTestFilePath("data/evil.eml")); + let msgc = await open_message_from_file(file); + let aboutMessage = get_about_message(msgc.window); + + // First check the properties are correct when opening the .eml from file. + let emlMessage = aboutMessage.gMessage; + Assert.equal(emlMessage.mime2DecodedSubject, "An email"); + Assert.equal(emlMessage.mime2DecodedAuthor, "from@example.com"); + Assert.equal( + emlMessage.date, + new Date("Mon, 10 Jan 2011 12:00:00 -0500").getTime() * 1000 + ); + Assert.equal( + emlMessage.messageId, + "11111111-bdfd-ca83-6479-3427940164a8@invalid" + ); + + let documentChild = msgc.window.content.document.documentElement; + EventUtils.synthesizeMouseAtCenter( + documentChild, + { type: "contextmenu", button: 2 }, + documentChild.ownerGlobal + ); + await click_menus_in_sequence( + aboutMessage.document.getElementById("mailContext"), + [ + { id: "mailContext-copyMenu" }, + { label: "Recent" }, + { label: "CopyToFolder" }, + ] + ); + close_window(msgc); + + // Make sure the copy worked. Make sure the first header is the one used, + // in case the message (incorrectly) has multiple when max-number is 1 + // according to RFC 5322. + let copiedMessage = select_click_row(0); + Assert.equal(copiedMessage.mime2DecodedSubject, "An email"); + Assert.equal(copiedMessage.mime2DecodedAuthor, "from@example.com"); + Assert.equal( + copiedMessage.date, + new Date("Mon, 10 Jan 2011 12:00:00 -0500").getTime() * 1000 + ); + Assert.equal(copiedMessage.numReferences, 2); + Assert.equal( + copiedMessage.messageId, + "11111111-bdfd-ca83-6479-3427940164a8@invalid" + ); +}); |