diff options
Diffstat (limited to 'comm/mailnews/compose/test/unit/test_mailtoURL.js')
-rw-r--r-- | comm/mailnews/compose/test/unit/test_mailtoURL.js | 810 |
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: "μ", + }, +]; |