summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/mime/test/unit/test_bug493544.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/mime/test/unit/test_bug493544.js')
-rw-r--r--comm/mailnews/mime/test/unit/test_bug493544.js106
1 files changed, 106 insertions, 0 deletions
diff --git a/comm/mailnews/mime/test/unit/test_bug493544.js b/comm/mailnews/mime/test/unit/test_bug493544.js
new file mode 100644
index 0000000000..f0da7ef167
--- /dev/null
+++ b/comm/mailnews/mime/test/unit/test_bug493544.js
@@ -0,0 +1,106 @@
+//
+// Tests if a multi-line MIME header is parsed even if it violates RFC 2047
+//
+
+var { MailServices } = ChromeUtils.import(
+ "resource:///modules/MailServices.jsm"
+);
+
+function run_test() {
+ const headers = [
+ {
+ // Bug 833028
+ encoded:
+ "Subject: AAA =?UTF-8?Q?bbb?= CCC =?UTF-8?Q?ddd?= EEE =?UTF-8?Q?fff?= GGG",
+ defaultCharset: "UTF-8",
+ overrideCharset: false,
+ eatContinuation: false,
+ decoded: "Subject: AAA bbb CCC ddd EEE fff GGG",
+ },
+ {
+ // Bug 493544
+ encoded:
+ "Subject: =?UTF-8?B?4oiAICDiiIEgIOKIgiAg4oiDICDiiIQgIOKIhSAg4oiGICDiiIcgIOKIiCAg?=\n" +
+ " =?UTF-8?B?4oiJICDiiIogIOKIiyAg4oiMICDiiI0gIOKIjiAg4oiP?=",
+ defaultCharset: "UTF-8",
+ overrideCharset: false,
+ eatContinuation: false,
+ decoded: "Subject: ∀ ∁ ∂ ∃ ∄ ∅ ∆ ∇ ∈ ∉ ∊ ∋ ∌ ∍ ∎ ∏",
+ },
+ {
+ // Bug 476741
+ encoded:
+ "Subject: =?utf-8?Q?=E2=88=80__=E2=88=81__=E2=88=82__=E2=88=83__=E2=88=84__=E2?=\n" +
+ " =?utf-8?Q?=88=85__=E2=88=86__=E2=88=87__=E2=88=88__=E2=88=89__=E2=88?=\n" +
+ " =?utf-8?Q?=8A__=E2=88=8B__=E2=88=8C__=E2=88=8D__=E2=88=8E__=E2=88=8F?=",
+ defaultCharset: "UTF-8",
+ overrideCharset: false,
+ eatContinuation: false,
+ decoded: "Subject: ∀ ∁ ∂ ∃ ∄ ∅ ∆ ∇ ∈ ∉ ∊ ∋ ∌ ∍ ∎ ∏",
+ },
+ {
+ // Normal case
+ encoded:
+ "Subject: =?UTF-8?B?4oiAICDiiIEgIOKIgiAg4oiDICDiiIQgIOKIhSAg4oiGICDiiIcgIOKIiA==?=\n" +
+ " =?UTF-8?B?ICDiiIkgIOKIiiAg4oiLICDiiIwgIOKIjSAg4oiOICDiiI8=?=",
+ defaultCharset: "UTF-8",
+ overrideCharset: false,
+ eatContinuation: false,
+ decoded: "Subject: ∀ ∁ ∂ ∃ ∄ ∅ ∆ ∇ ∈ ∉ ∊ ∋ ∌ ∍ ∎ ∏",
+ },
+ {
+ // Normal case with the encoding character in lower case
+ encoded:
+ "Subject: =?UTF-8?b?4oiAICDiiIEgIOKIgiAg4oiDICDiiIQgIOKIhSAg4oiGICDiiIcgIOKIiA==?=\n" +
+ " =?UTF-8?b?ICDiiIkgIOKIiiAg4oiLICDiiIwgIOKIjSAg4oiOICDiiI8=?=",
+ defaultCharset: "UTF-8",
+ overrideCharset: false,
+ eatContinuation: false,
+ decoded: "Subject: ∀ ∁ ∂ ∃ ∄ ∅ ∆ ∇ ∈ ∉ ∊ ∋ ∌ ∍ ∎ ∏",
+ },
+ {
+ // Normal case
+ encoded:
+ "Subject: =?utf-8?Q?=E2=88=80__=E2=88=81__=E2=88=82__=E2=88=83__=E2=88=84__?=\n" +
+ " =?utf-8?Q?=E2=88=85__=E2=88=86__=E2=88=87__=E2=88=88__=E2=88=89__?=\n" +
+ " =?utf-8?Q?=E2=88=8A__=E2=88=8B__=E2=88=8C__=E2=88=8D__=E2=88=8E__?=\n" +
+ " =?utf-8?Q?=E2=88=8F?=",
+ defaultCharset: "UTF-8",
+ overrideCharset: false,
+ eatContinuation: false,
+ decoded: "Subject: ∀ ∁ ∂ ∃ ∄ ∅ ∆ ∇ ∈ ∉ ∊ ∋ ∌ ∍ ∎ ∏",
+ },
+ {
+ // Normal case with the encoding character in lower case
+ encoded:
+ "Subject: =?utf-8?q?=E2=88=80__=E2=88=81__=E2=88=82__=E2=88=83__=E2=88=84__?=\n" +
+ " =?utf-8?q?=E2=88=85__=E2=88=86__=E2=88=87__=E2=88=88__=E2=88=89__?=\n" +
+ " =?utf-8?q?=E2=88=8A__=E2=88=8B__=E2=88=8C__=E2=88=8D__=E2=88=8E__?=\n" +
+ " =?utf-8?q?=E2=88=8F?=",
+ defaultCharset: "UTF-8",
+ overrideCharset: false,
+ eatContinuation: false,
+ decoded: "Subject: ∀ ∁ ∂ ∃ ∄ ∅ ∆ ∇ ∈ ∉ ∊ ∋ ∌ ∍ ∎ ∏",
+ },
+ {
+ // Regression test for bug 227290
+ encoded:
+ "Subject: =?UTF-8?B?4oiAICDiiIEgIOKIgiAg4oiDICDiiIQgIOKIhSAg4oiGICDiiIcgIOKIiA===?=\n" +
+ " =?UTF-8?B?ICDiiIkgIOKIiiAg4oiLICDiiIwgIOKIjSAg4oiOICDiiI8=?=",
+ defaultCharset: "UTF-8",
+ overrideCharset: false,
+ eatContinuation: false,
+ decoded: "Subject: ∀ ∁ ∂ ∃ ∄ ∅ ∆ ∇ ∈ ∉ ∊ ∋ ∌ ∍ ∎ ∏",
+ },
+ ];
+
+ for (let i = 0; i < headers.length; ++i) {
+ let decoded = MailServices.mimeConverter.decodeMimeHeader(
+ headers[i].encoded,
+ headers[i].defaultCharset,
+ headers[i].overrideCharset,
+ headers[i].eatContinuation
+ );
+ Assert.equal(decoded, headers[i].decoded);
+ }
+}