From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- comm/calendar/test/unit/test_email_utils.js | 265 ++++++++++++++++++++++++++++ 1 file changed, 265 insertions(+) create mode 100644 comm/calendar/test/unit/test_email_utils.js (limited to 'comm/calendar/test/unit/test_email_utils.js') 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" ', + }, + { + input: { + id: "mailto:first.last@example.net", + cname: "Last; First", + email: null, + useCn: true, + }, + expected: '"Last; First" ', + }, + { + input: { id: "mailto:first.last@example.net", cname: "First Last", email: null, useCn: true }, + expected: "First Last ", + }, + { + 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 ", + }, + { + 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 , second example , " + + "third example ", + }, + { + 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" , "example, second" , ' + + '"example, third" ', + }, + { + 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 , third ", + }, + ]; + + 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 ", + expected: "first last ", + }, + { + input: '"last, first" ', + expected: '"last, first" ', + }, + { + input: "last, first ", + expected: '"last, first" ', + }, + { + input: '"last; first" ', + expected: '"last; first" ', + }, + { + 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 , "last3, first' + + '3" ', + expected: + 'first1.last1@example.net, first2 last2 , "last3, fi' + + 'rst3" ', + }, + { + input: + 'first1.last1@example.net, last2; first2 , "last3; first' + + '3" ', + expected: + 'first1.last1@example.net, "last2; first2" , "last' + + '3; first3" ', + }, + { + input: + "first1 last2 , last2, first2 " + + ', "last3, first3" ', + expected: + 'first1 last2 , "last2, first2" , "last3, first3" ', + }, + ]; + + 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"])); +} -- cgit v1.2.3