summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/local/test/unit/test_saveMessage.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/local/test/unit/test_saveMessage.js')
-rw-r--r--comm/mailnews/local/test/unit/test_saveMessage.js69
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);
+ }
+}