summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/compose/test/unit/test_nsMsgCompose1.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/compose/test/unit/test_nsMsgCompose1.js')
-rw-r--r--comm/mailnews/compose/test/unit/test_nsMsgCompose1.js137
1 files changed, 137 insertions, 0 deletions
diff --git a/comm/mailnews/compose/test/unit/test_nsMsgCompose1.js b/comm/mailnews/compose/test/unit/test_nsMsgCompose1.js
new file mode 100644
index 0000000000..700232b46e
--- /dev/null
+++ b/comm/mailnews/compose/test/unit/test_nsMsgCompose1.js
@@ -0,0 +1,137 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+
+/**
+ * Tests nsMsgCompose expandMailingLists.
+ */
+
+/**
+ * Helper to check population worked as expected.
+ *
+ * @param {string} aTo - Text in the To field.
+ * @param {string} aCheckTo - The expected To addresses (after possible list population)
+ */
+function checkPopulate(aTo, aCheckTo) {
+ var msgCompose = Cc["@mozilla.org/messengercompose/compose;1"].createInstance(
+ Ci.nsIMsgCompose
+ );
+
+ // Set up some basic fields for compose.
+ var fields = Cc[
+ "@mozilla.org/messengercompose/composefields;1"
+ ].createInstance(Ci.nsIMsgCompFields);
+
+ fields.to = aTo;
+
+ // Set up some params
+ var params = Cc[
+ "@mozilla.org/messengercompose/composeparams;1"
+ ].createInstance(Ci.nsIMsgComposeParams);
+
+ params.composeFields = fields;
+
+ msgCompose.initialize(params);
+
+ msgCompose.expandMailingLists();
+ let addresses = fields.getHeader("To");
+ let checkEmails = MailServices.headerParser.parseDecodedHeader(aCheckTo);
+ Assert.equal(addresses.length, checkEmails.length);
+ for (let i = 0; i < addresses.length; i++) {
+ Assert.equal(addresses[i].name, checkEmails[i].name);
+ Assert.equal(addresses[i].email, checkEmails[i].email);
+ }
+}
+
+function run_test() {
+ loadABFile("../../../data/abLists1", kPABData.fileName);
+ loadABFile("../../../data/abLists2", kCABData.fileName);
+
+ // Test - Check we can initialize with fewest specified
+ // parameters and don't fail/crash like we did in bug 411646.
+
+ var msgCompose = Cc["@mozilla.org/messengercompose/compose;1"].createInstance(
+ Ci.nsIMsgCompose
+ );
+
+ // Set up some params
+ var params = Cc[
+ "@mozilla.org/messengercompose/composeparams;1"
+ ].createInstance(Ci.nsIMsgComposeParams);
+
+ msgCompose.initialize(params);
+
+ // Test - expandMailingLists basic functionality.
+
+ // Re-initialize
+ msgCompose = Cc["@mozilla.org/messengercompose/compose;1"].createInstance(
+ Ci.nsIMsgCompose
+ );
+
+ // Set up some basic fields for compose.
+ var fields = Cc[
+ "@mozilla.org/messengercompose/composefields;1"
+ ].createInstance(Ci.nsIMsgCompFields);
+
+ // These aren't in the address book copied above.
+ fields.from = "test1@foo1.invalid";
+ fields.to = "test2@foo1.invalid";
+ fields.cc = "test3@foo1.invalid";
+ fields.bcc = "test4@foo1.invalid";
+
+ // Set up some params
+ params = Cc["@mozilla.org/messengercompose/composeparams;1"].createInstance(
+ Ci.nsIMsgComposeParams
+ );
+
+ params.composeFields = fields;
+
+ msgCompose.initialize(params);
+
+ msgCompose.expandMailingLists();
+ Assert.equal(fields.to, "test2@foo1.invalid");
+ Assert.equal(fields.cc, "test3@foo1.invalid");
+ Assert.equal(fields.bcc, "test4@foo1.invalid");
+
+ // Test - expandMailingLists with plain text.
+
+ checkPopulate("test4@foo.invalid", "test4@foo.invalid");
+
+ // Test - expandMailingLists with html.
+
+ checkPopulate("test5@foo.invalid", "test5@foo.invalid");
+
+ // Test - expandMailingLists with a list of three items.
+
+ checkPopulate(
+ "TestList1 <TestList1>",
+ "test1@foo.invalid,test2@foo.invalid,test3@foo.invalid"
+ );
+
+ // Test - expandMailingLists with a list of one item.
+
+ checkPopulate("TestList2 <TestList2>", "test4@foo.invalid");
+
+ checkPopulate("TestList3 <TestList3>", "test5@foo.invalid");
+
+ // Test - expandMailingLists with items from multiple address books.
+
+ checkPopulate(
+ "TestList1 <TestList1>, test3@com.invalid",
+ "test1@foo.invalid,test2@foo.invalid,test3@foo.invalid,test3@com.invalid"
+ );
+
+ checkPopulate(
+ "TestList2 <TestList2>, ListTest2 <ListTest2>",
+ "test4@foo.invalid,test4@com.invalid"
+ );
+
+ checkPopulate(
+ "TestList3 <TestList3>, ListTest1 <ListTest1>",
+ "test5@foo.invalid,test1@com.invalid,test2@com.invalid,test3@com.invalid"
+ );
+
+ // test bug 254519 rfc 2047 encoding
+ checkPopulate(
+ "=?iso-8859-1?Q?Sure=F6name=2C_Forename_Dr=2E?= <pb@bieringer.invalid>",
+ '"Sure\u00F6name, Forename Dr." <pb@bieringer.invalid>'
+ );
+}