diff options
Diffstat (limited to 'comm/mailnews/local/test/unit/test_saveMessage.js')
-rw-r--r-- | comm/mailnews/local/test/unit/test_saveMessage.js | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/comm/mailnews/local/test/unit/test_saveMessage.js b/comm/mailnews/local/test/unit/test_saveMessage.js new file mode 100644 index 0000000000..e488a0ed5b --- /dev/null +++ b/comm/mailnews/local/test/unit/test_saveMessage.js @@ -0,0 +1,69 @@ +/** + * Test bug 460636 - Saving message in local folder as .EML removes starting dot in all lines, and ignores line if single dot only line. + */ + +var { PromiseTestUtils } = ChromeUtils.import( + "resource://testing-common/mailnews/PromiseTestUtils.jsm" +); + +var MSG_LINEBREAK = "\r\n"; +var dot = do_get_file("data/dot"); +var saveFile = Services.dirsvc.get("TmpD", Ci.nsIFile); +saveFile.append(dot.leafName + ".eml"); +saveFile.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0o600); + +function run_test() { + registerCleanupFunction(teardown); + do_test_pending(); + do_timeout(10000, function () { + do_throw( + "SaveMessageToDisk did not complete within 10 seconds" + + "(incorrect messageURI?). ABORTING." + ); + }); + copyFileMessageInLocalFolder(dot, 0, "", null, save_message); +} + +async function save_message(aMessageHeaderKeys, aStatus) { + let headerKeys = aMessageHeaderKeys; + Assert.notEqual(headerKeys, null); + + let message = localAccountUtils.inboxFolder.GetMessageHeader(headerKeys[0]); + let msgURI = localAccountUtils.inboxFolder.getUriForMsg(message); + let messageService = Cc[ + "@mozilla.org/messenger/messageservice;1?type=mailbox-message" + ].getService(Ci.nsIMsgMessageService); + let promiseUrlListener = new PromiseTestUtils.PromiseUrlListener(); + messageService.SaveMessageToDisk( + msgURI, + saveFile, + false, + promiseUrlListener, + {}, + true, + null + ); + await promiseUrlListener.promise; + check_each_line( + await IOUtils.readUTF8(dot.path), + await IOUtils.readUTF8(saveFile.path) + ); + do_test_finished(); +} + +function check_each_line(aExpectedLines, aActualLines) { + let expectedStrings = aExpectedLines.split(MSG_LINEBREAK); + let actualStrings = aActualLines.split(MSG_LINEBREAK); + + expectedStrings.shift(); + Assert.equal(expectedStrings.length, actualStrings.length); + for (let line = 0; line < expectedStrings.length; line++) { + Assert.equal(expectedStrings[line], actualStrings[line]); + } +} + +function teardown() { + if (saveFile.exists()) { + saveFile.remove(false); + } +} |