diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
commit | 6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /comm/calendar/test/unit/test_email_utils.js | |
parent | Initial commit. (diff) | |
download | thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'comm/calendar/test/unit/test_email_utils.js')
-rw-r--r-- | comm/calendar/test/unit/test_email_utils.js | 265 |
1 files changed, 265 insertions, 0 deletions
diff --git a/comm/calendar/test/unit/test_email_utils.js b/comm/calendar/test/unit/test_email_utils.js new file mode 100644 index 0000000000..a1a55e3f17 --- /dev/null +++ b/comm/calendar/test/unit/test_email_utils.js @@ -0,0 +1,265 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +var { XPCOMUtils } = ChromeUtils.importESModule("resource://gre/modules/XPCOMUtils.sys.mjs"); + +XPCOMUtils.defineLazyModuleGetters(this, { + CalAttendee: "resource:///modules/CalAttendee.jsm", +}); + +function run_test() { + test_prependMailTo(); + test_removeMailTo(); + test_getAttendeeEmail(); + test_createRecipientList(); + test_validateRecipientList(); + test_attendeeMatchesAddresses(); +} + +function test_prependMailTo() { + let data = [ + { input: "mailto:first.last@example.net", expected: "mailto:first.last@example.net" }, + { input: "MAILTO:first.last@example.net", expected: "mailto:first.last@example.net" }, + { input: "first.last@example.net", expected: "mailto:first.last@example.net" }, + { input: "first.last.example.net", expected: "first.last.example.net" }, + ]; + for (let [i, test] of Object.entries(data)) { + equal(cal.email.prependMailTo(test.input), test.expected, "(test #" + i + ")"); + } +} + +function test_removeMailTo() { + let data = [ + { input: "mailto:first.last@example.net", expected: "first.last@example.net" }, + { input: "MAILTO:first.last@example.net", expected: "first.last@example.net" }, + { input: "first.last@example.net", expected: "first.last@example.net" }, + { input: "first.last.example.net", expected: "first.last.example.net" }, + ]; + for (let [i, test] of Object.entries(data)) { + equal(cal.email.removeMailTo(test.input), test.expected, "(test #" + i + ")"); + } +} + +function test_getAttendeeEmail() { + let data = [ + { + input: { + id: "mailto:first.last@example.net", + cname: "Last, First", + email: null, + useCn: true, + }, + expected: '"Last, First" <first.last@example.net>', + }, + { + input: { + id: "mailto:first.last@example.net", + cname: "Last; First", + email: null, + useCn: true, + }, + expected: '"Last; First" <first.last@example.net>', + }, + { + input: { id: "mailto:first.last@example.net", cname: "First Last", email: null, useCn: true }, + expected: "First Last <first.last@example.net>", + }, + { + input: { + id: "mailto:first.last@example.net", + cname: "Last, First", + email: null, + useCn: false, + }, + expected: "first.last@example.net", + }, + { + input: { id: "mailto:first.last@example.net", cname: null, email: null, useCn: true }, + expected: "first.last@example.net", + }, + { + input: { + id: "urn:uuid:first.last.example.net", + cname: null, + email: "first.last@example.net", + useCn: false, + }, + expected: "first.last@example.net", + }, + { + input: { + id: "urn:uuid:first.last.example.net", + cname: null, + email: "first.last@example.net", + useCn: true, + }, + expected: "first.last@example.net", + }, + { + input: { + id: "urn:uuid:first.last.example.net", + cname: "First Last", + email: "first.last@example.net", + useCn: true, + }, + expected: "First Last <first.last@example.net>", + }, + { + input: { id: "urn:uuid:first.last.example.net", cname: null, email: null, useCn: false }, + expected: "", + }, + ]; + for (let [i, test] of Object.entries(data)) { + let attendee = new CalAttendee(); + attendee.id = test.input.id; + if (test.input.cname) { + attendee.commonName = test.input.cname; + } + if (test.input.email) { + attendee.setProperty("EMAIL", test.input.email); + } + equal( + cal.email.getAttendeeEmail(attendee, test.input.useCn), + test.expected, + "(test #" + i + ")" + ); + } +} + +function test_createRecipientList() { + let data = [ + { + input: [ + { id: "mailto:first@example.net", cname: null }, + { id: "mailto:second@example.net", cname: null }, + { id: "mailto:third@example.net", cname: null }, + ], + expected: "first@example.net, second@example.net, third@example.net", + }, + { + input: [ + { id: "mailto:first@example.net", cname: "first example" }, + { id: "mailto:second@example.net", cname: "second example" }, + { id: "mailto:third@example.net", cname: "third example" }, + ], + expected: + "first example <first@example.net>, second example <second@example.net>, " + + "third example <third@example.net>", + }, + { + input: [ + { id: "mailto:first@example.net", cname: "example, first" }, + { id: "mailto:second@example.net", cname: "example, second" }, + { id: "mailto:third@example.net", cname: "example, third" }, + ], + expected: + '"example, first" <first@example.net>, "example, second" <second@example.net>, ' + + '"example, third" <third@example.net>', + }, + { + input: [ + { id: "mailto:first@example.net", cname: null }, + { id: "urn:uuid:second.example.net", cname: null }, + { id: "mailto:third@example.net", cname: null }, + ], + expected: "first@example.net, third@example.net", + }, + { + input: [ + { id: "mailto:first@example.net", cname: "first" }, + { id: "urn:uuid:second.example.net", cname: "second" }, + { id: "mailto:third@example.net", cname: "third" }, + ], + expected: "first <first@example.net>, third <third@example.net>", + }, + ]; + + let i = 0; + for (let test of data) { + i++; + let attendees = []; + for (let att of test.input) { + let attendee = new CalAttendee(); + attendee.id = att.id; + if (att.cname) { + attendee.commonName = att.cname; + } + attendees.push(attendee); + } + equal(cal.email.createRecipientList(attendees), test.expected, "(test #" + i + ")"); + } +} + +function test_validateRecipientList() { + let data = [ + { + input: "first.last@example.net", + expected: "first.last@example.net", + }, + { + input: "first last <first.last@example.net>", + expected: "first last <first.last@example.net>", + }, + { + input: '"last, first" <first.last@example.net>', + expected: '"last, first" <first.last@example.net>', + }, + { + input: "last, first <first.last@example.net>", + expected: '"last, first" <first.last@example.net>', + }, + { + input: '"last; first" <first.last@example.net>', + expected: '"last; first" <first.last@example.net>', + }, + { + input: "first1.last1@example.net,first2.last2@example.net,first3.last2@example.net", + expected: "first1.last1@example.net, first2.last2@example.net, first3.last2@example.net", + }, + { + input: "first1.last1@example.net, first2.last2@example.net, first3.last2@example.net", + expected: "first1.last1@example.net, first2.last2@example.net, first3.last2@example.net", + }, + { + input: + 'first1.last1@example.net, first2 last2 <first2.last2@example.net>, "last3, first' + + '3" <first3.last2@example.net>', + expected: + 'first1.last1@example.net, first2 last2 <first2.last2@example.net>, "last3, fi' + + 'rst3" <first3.last2@example.net>', + }, + { + input: + 'first1.last1@example.net, last2; first2 <first2.last2@example.net>, "last3; first' + + '3" <first3.last2@example.net>', + expected: + 'first1.last1@example.net, "last2; first2" <first2.last2@example.net>, "last' + + '3; first3" <first3.last2@example.net>', + }, + { + input: + "first1 last2 <first1.last1@example.net>, last2, first2 <first2.last2@example.net>" + + ', "last3, first3" <first3.last2@example.net>', + expected: + 'first1 last2 <first1.last1@example.net>, "last2, first2" <first2.last2@examp' + + 'le.net>, "last3, first3" <first3.last2@example.net>', + }, + ]; + + for (let [i, test] of Object.entries(data)) { + equal(cal.email.validateRecipientList(test.input), test.expected, "(test #" + i + ")"); + } +} + +function test_attendeeMatchesAddresses() { + let a = new CalAttendee("ATTENDEE:mailto:horst"); + ok(cal.email.attendeeMatchesAddresses(a, ["HORST", "peter"])); + ok(!cal.email.attendeeMatchesAddresses(a, ["HORSTpeter", "peter"])); + ok(!cal.email.attendeeMatchesAddresses(a, ["peter"])); + + a = new CalAttendee('ATTENDEE;EMAIL="horst":urn:uuid:horst'); + ok(cal.email.attendeeMatchesAddresses(a, ["HORST", "peter"])); + ok(!cal.email.attendeeMatchesAddresses(a, ["HORSTpeter", "peter"])); + ok(!cal.email.attendeeMatchesAddresses(a, ["peter"])); +} |