summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/base/test/unit/test_getMsgTextFromStream.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/base/test/unit/test_getMsgTextFromStream.js')
-rw-r--r--comm/mailnews/base/test/unit/test_getMsgTextFromStream.js88
1 files changed, 88 insertions, 0 deletions
diff --git a/comm/mailnews/base/test/unit/test_getMsgTextFromStream.js b/comm/mailnews/base/test/unit/test_getMsgTextFromStream.js
new file mode 100644
index 0000000000..b803619e21
--- /dev/null
+++ b/comm/mailnews/base/test/unit/test_getMsgTextFromStream.js
@@ -0,0 +1,88 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ *
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/**
+ * Test suite for GetMsgTextFromStream.
+ *
+ * Currently tests: text/plain, text/html -- with tags stripped and without,
+ * base64, multipart.
+ * Does not currently test: quoted-printable, stripping quotes, UTF-8, small values of
+ * bytesToRead.
+ */
+var kDataRoot = "../../../data/";
+
+function create(fileName, bytes, compressQuotes, stripHTML, outContentType) {
+ return {
+ name: fileName,
+ bytesToRead: bytes,
+ compressQuotes,
+ stripHTML,
+ contentType: outContentType,
+ };
+}
+
+var gTestFiles = [
+ create("basic1", 1024, false, false, "text/plain"), // Simple plain text
+ create("basic1", 1024, false, true, "text/plain"), // should be same as above
+ create("basic2", 1024, false, false, "text/html"), // Simple HTML
+ create("basic3", 1024, false, true, "text/html"), // HTML with tags stripped out
+ create("basic4", 1024, false, false, "text/plain"), // No content type, should be assumed to be text/plain
+ create("basic4", 1024, false, true, "text/plain"),
+ create("basic5", 1024, false, false, "text/plain"), // HTML content in text/plain
+ create("basic5", 1024, false, true, "text/plain"),
+ create("base64-1", 1024, false, false, "text/plain"), // base64 text/plain
+ create("base64-1", 1024, false, true, "text/plain"),
+ create("base64-2", 1024, false, false, "text/html"), // base64 text/html
+ create("base64-3", 1024, false, true, "text/html"), // strip out tags here
+ create("multipart1", 1024, false, false, "text/plain"), // basic multipart message
+ create("multipart1", 1024, false, true, "text/plain"),
+ create("multipart2", 1024, false, false, "text/html"), // multipart HTML
+ create("multipart3", 1024, false, true, "text/html"),
+ create("multipart4", 1024, false, false, "text/plain"), // text with no headers
+ create("multipart4", 1024, false, true, "text/plain"),
+ create("multipart-base64-1", 1024, false, false, "text/plain"), // base64 encoded text
+ create("multipart-base64-1", 1024, false, true, "text/plain"),
+ create("multipart-base64-2", 1024, false, false, "text/html"),
+ create("multipart-base64-3", 1024, false, true, "text/html"),
+ create("multipart-complex1", 1024, false, true, "text/html"), // Things get more complex here
+ create("multipart-complex2", 1024, false, false, "text/plain"),
+ create("multipart-complex2", 1024, false, true, "text/plain"),
+];
+
+function run_test() {
+ localAccountUtils.loadLocalMailAccount();
+ var folder = localAccountUtils.incomingServer.rootMsgFolder;
+
+ gTestFiles.forEach(function (test) {
+ dump("Testing " + test.name + "\n");
+ var inFile = do_get_file(kDataRoot + test.name);
+ var inStream = Cc[
+ "@mozilla.org/network/file-input-stream;1"
+ ].createInstance(Ci.nsIFileInputStream);
+ inStream.init(inFile, -1, -1, Ci.nsIFileInputStream.CLOSE_ON_EOF);
+
+ // Now get the message body using getMsgTextFromStream
+ var contentType = {};
+ var body = folder.getMsgTextFromStream(
+ inStream,
+ "",
+ test.bytesToRead,
+ 65536,
+ test.compressQuotes,
+ test.stripHTML,
+ contentType
+ );
+
+ // Now we need to compare the output
+ Assert.equal(test.contentType, contentType.value);
+
+ var resultFile = do_get_file(kDataRoot + test.name + ".out");
+ var actualBody = mailTestUtils.loadFileToString(resultFile, "UTF-8");
+ Assert.equal(body, actualBody);
+ });
+}