summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/compose/test/unit/test_mailtoURL.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/compose/test/unit/test_mailtoURL.js')
-rw-r--r--comm/mailnews/compose/test/unit/test_mailtoURL.js810
1 files changed, 810 insertions, 0 deletions
diff --git a/comm/mailnews/compose/test/unit/test_mailtoURL.js b/comm/mailnews/compose/test/unit/test_mailtoURL.js
new file mode 100644
index 0000000000..a793c99974
--- /dev/null
+++ b/comm/mailnews/compose/test/unit/test_mailtoURL.js
@@ -0,0 +1,810 @@
+/*
+ * Test suite for mailto: URLs
+ */
+
+var COMPOSE_HTML = Ci.nsIMsgCompFormat.HTML;
+var COMPOSE_DEFAULT = Ci.nsIMsgCompFormat.Default;
+
+function run_test() {
+ function test(aTest) {
+ var uri = Services.io.newURI(aTest.url);
+ uri = uri.QueryInterface(Ci.nsIMailtoUrl);
+
+ var to = {},
+ cc = {},
+ bcc = {},
+ subject = {},
+ body = {},
+ html = {},
+ reference = {},
+ newsgroup = {},
+ composeformat = {};
+ uri.getMessageContents(
+ to,
+ cc,
+ bcc,
+ subject,
+ body,
+ html,
+ reference,
+ newsgroup,
+ composeformat
+ );
+ Assert.equal(aTest.to, to.value);
+ Assert.equal(aTest.cc, cc.value);
+ Assert.equal(aTest.bcc, bcc.value);
+ Assert.equal(aTest.subject, subject.value);
+ Assert.equal(aTest.body, body.value);
+ Assert.equal(aTest.html, html.value);
+ Assert.equal(aTest.reference, reference.value);
+ Assert.equal(aTest.newsgroup, newsgroup.value);
+ Assert.equal(aTest.composeformat, composeformat.value);
+ Assert.equal(aTest.from, uri.fromPart);
+ Assert.equal(aTest.followupto, uri.followUpToPart);
+ Assert.equal(aTest.organization, uri.organizationPart);
+ Assert.equal(aTest.replyto, uri.replyToPart);
+ Assert.equal(aTest.priority, uri.priorityPart);
+ Assert.equal(aTest.newshost, uri.newsHostPart);
+ Assert.ok(uri.equals(uri));
+ }
+
+ for (var i = 0; i < tests.length; i++) {
+ test(tests[i]);
+ }
+
+ // Test cloning reparses the url by checking the to field.
+ let uri = Services.io.newURI(tests[0].url).QueryInterface(Ci.nsIMailtoUrl);
+ var to = {},
+ cc = {},
+ bcc = {},
+ subject = {},
+ body = {},
+ html = {},
+ reference = {},
+ newsgroup = {},
+ composeformat = {};
+ uri.getMessageContents(
+ to,
+ cc,
+ bcc,
+ subject,
+ body,
+ html,
+ reference,
+ newsgroup,
+ composeformat
+ );
+ Assert.equal(to.value, tests[0].to);
+}
+
+var tests = [
+ {
+ url: "mailto:one@example.com",
+ to: "one@example.com",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:two@example.com?",
+ to: "two@example.com",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ /* the heirarchical-part address shouldn't be mime-decoded */
+ {
+ url: "mailto:%3D%3FUTF-8%3FQ%3Fthree%3F%3D@example.com",
+ to: "=?UTF-8?Q?three?=@example.com",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ /* a to=address should be mime-decoded */
+ {
+ url: "mailto:?to=%3D%3FUTF-8%3FQ%3Ffour%3F%3D@example.com",
+ to: "four@example.com",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:fivea@example.com?to=%3D%3FUTF-8%3FQ%3Ffiveb%3F%3D@example.com",
+ to: "fivea@example.com, fiveb@example.com",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:sixa@example.com?to=sixb@example.com&to=sixc@example.com",
+ to: "sixa@example.com, sixb@example.com, sixc@example.com",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?cc=seven@example.com",
+ to: "",
+ cc: "seven@example.com",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?cc=%3D%3FUTF-8%3FQ%3Feight%3F%3D@example.com",
+ to: "",
+ cc: "eight@example.com",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?bcc=nine@example.com",
+ to: "",
+ cc: "",
+ bcc: "nine@example.com",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?bcc=%3D%3FUTF-8%3FQ%3Ften%3F%3D@example.com",
+ to: "",
+ cc: "",
+ bcc: "ten@example.com",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?subject=foo",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "foo",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?subject=%62%61%72",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "bar",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?subject=%3D%3Futf-8%3FQ%3F%3DC2%3DA1encoded_subject%21%3F%3D",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "¡encoded subject!",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?body=one%20body",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "one body",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?body=two%20bodies&body=two%20lines",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "two bodies\ntwo lines",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?html-part=html%20part",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "html part",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_HTML,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?html-body=html%20body",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "html body",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_HTML,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?html-part=html%20part&html-body=html-body%20trumps%20earlier%20html-part",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "html-body trumps earlier html-part",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_HTML,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?references=%3Cref1%40example.com%3E",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "<ref1@example.com>",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?in-reply-to=%3Crepl1%40example.com%3E",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "<repl1@example.com>",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url:
+ "mailto:?references=%3Cref2%40example.com%3E" +
+ "&in-reply-to=%3Crepl2%40example.com%3E",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "<ref2@example.com> <repl2@example.com>",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url:
+ "mailto:?references=%3Cref3%40example.com%3E%20%3Crepl3%40example.com%3E" +
+ "&in-reply-to=%3Crepl3%40example.com%3E",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "<ref3@example.com> <repl3@example.com>",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?newsgroups=mozilla.dev.apps.thunderbird",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "mozilla.dev.apps.thunderbird",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?newsgroups=%3D%3FUTF-8%3FQ%3Fmozilla.test.multimedia%3F%3D",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "mozilla.test.multimedia",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?from=notlikely@example.com",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "notlikely@example.com",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?from=%3D%3FUTF-8%3FQ%3Fme@example.com%3F%3D",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "me@example.com",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?followup-to=mozilla.dev.planning",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "mozilla.dev.planning",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?followup-to=%3D%3FUTF-8%3FQ%3Fmozilla.test%3F%3D",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "mozilla.test",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?organization=very%20little",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "very little",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?organization=%3D%3FUTF-8%3FQ%3Fmicroscopic%3F%3D",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "microscopic",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?reply-to=notme@example.com",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "notme@example.com",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?reply-to=%3D%3FUTF-8%3FB%3Fw4VrZQ%3D%3D%3F%3D%20%3Cake@example.org%3E",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "Åke <ake@example.org>",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?priority=1%20(People%20Are%20Dying!!1!)",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "1 (People Are Dying!!1!)",
+ newshost: "",
+ },
+ {
+ url: "mailto:?priority=%3D%3FUTF-8%3FQ%3F4%3F%3D",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "4",
+ newshost: "",
+ },
+ {
+ url: "mailto:?newshost=news.mozilla.org",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "news.mozilla.org",
+ },
+ {
+ url: "mailto:?newshost=%3D%3FUTF-8%3FQ%3Fnews.example.org%3F%3D",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "news.example.org",
+ },
+ {
+ url: "mailto:?%74%4F=to&%73%55%62%4A%65%43%74=subject&%62%4F%64%59=body&%63%43=cc&%62%43%63=bcc",
+ to: "to",
+ cc: "cc",
+ bcc: "bcc",
+ subject: "subject",
+ body: "body",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:to1?%74%4F=to2&to=to3&subject=&%73%55%62%4A%65%43%74=subject&%62%4F%64%59=line1&body=line2&%63%43=cc1&cc=cc2&%62%43%63=bcc1&bcc=bcc2",
+ to: "to1, to2, to3",
+ cc: "cc1, cc2",
+ bcc: "bcc1, bcc2",
+ subject: "subject",
+ body: "line1\nline2",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url: "mailto:?nto=1&nsubject=2&nbody=3&ncc=4&nbcc=5",
+ to: "",
+ cc: "",
+ bcc: "",
+ subject: "",
+ body: "",
+ html: "",
+ reference: "",
+ newsgroup: "",
+ composeformat: COMPOSE_DEFAULT,
+ from: "",
+ followupto: "",
+ organization: "",
+ replyto: "",
+ priority: "",
+ newshost: "",
+ },
+ {
+ url:
+ "mailto:%CE%B1?cc=%CE%B2&bcc=%CE%B3&subject=%CE%B4&body=%CE%B5" +
+ "&html-body=%CE%BE&newsgroups=%CE%B6&from=%CE%B7&followup-to=%CE%B8" +
+ "&organization=%CE%B9&reply-to=%CE%BA&priority=%CE%BB&newshost=%CE%BC",
+ to: "α",
+ cc: "β",
+ bcc: "γ",
+ subject: "δ",
+ body: "ε",
+ html: "ξ",
+ reference: "", // we expect this field to be ASCII-only
+ newsgroup: "ζ",
+ composeformat: COMPOSE_HTML,
+ from: "η",
+ followupto: "θ",
+ organization: "ι",
+ replyto: "κ",
+ priority: "λ",
+ newshost: "μ",
+ },
+];