summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/search/test/unit/test_searchAddressInAb.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/search/test/unit/test_searchAddressInAb.js')
-rw-r--r--comm/mailnews/search/test/unit/test_searchAddressInAb.js337
1 files changed, 337 insertions, 0 deletions
diff --git a/comm/mailnews/search/test/unit/test_searchAddressInAb.js b/comm/mailnews/search/test/unit/test_searchAddressInAb.js
new file mode 100644
index 0000000000..a93f405047
--- /dev/null
+++ b/comm/mailnews/search/test/unit/test_searchAddressInAb.js
@@ -0,0 +1,337 @@
+/* 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/. */
+
+// Testing of to, cc, toorcc in addressbook search features added in bug 187768
+// Added testing of AllAddresses from bug 310359
+
+/* import-globals-from ../../../test/resources/searchTestUtils.js */
+load("../../../resources/searchTestUtils.js");
+
+// add address book setup
+/* import-globals-from ../../../test/resources/abSetup.js */
+load("../../../resources/abSetup.js");
+
+var { MailServices } = ChromeUtils.import(
+ "resource:///modules/MailServices.jsm"
+);
+
+var ABUri = kPABData.URI;
+
+var IsntInAB = Ci.nsMsgSearchOp.IsntInAB;
+var IsInAB = Ci.nsMsgSearchOp.IsInAB;
+var IsBefore = Ci.nsMsgSearchOp.IsBefore; // control entry that is not enabled
+var Is = Ci.nsMsgSearchOp.Is;
+var Isnt = Ci.nsMsgSearchOp.Isnt;
+
+var offlineMail = Ci.nsMsgSearchScope.offlineMail;
+var onlineMail = Ci.nsMsgSearchScope.onlineMail;
+var offlineMailFilter = Ci.nsMsgSearchScope.offlineMailFilter;
+var onlineMailFilter = Ci.nsMsgSearchScope.onlineMailFilter;
+var news = Ci.nsMsgSearchScope.news; // control entry that is not enabled
+
+var Sender = Ci.nsMsgSearchAttrib.Sender;
+var To = Ci.nsMsgSearchAttrib.To;
+var CCopy = Ci.nsMsgSearchAttrib.CC;
+var ToOrCC = Ci.nsMsgSearchAttrib.ToOrCC;
+var AllAddresses = Ci.nsMsgSearchAttrib.AllAddresses;
+var Keywords = Ci.nsMsgSearchAttrib.Keywords; // control entry that is not enabled
+
+/*
+ * The address available in the test address book is "PrimaryEmail1@test.invalid"
+ * Test emails may also include the address "invalid@example.com"
+ *
+ *
+ * Map of test email contents: (P is "Prim...", I is "inva.." address, N is none)
+ *
+ *
+ * Email From To CC BCC
+ * 1 P I I N
+ * 2 P P P N
+ * 3 I P I N
+ * 4 I I P N
+ * 5 P I P N
+ * 6 I I,P P,I N
+ * 7 I I I P
+ * 8 I P P N
+ *
+ */
+
+var Tests = [
+ {
+ value: ABUri,
+ attrib: Sender,
+ op: IsInAB,
+ count: 3,
+ },
+ {
+ value: ABUri,
+ attrib: To,
+ op: IsInAB,
+ count: 4,
+ },
+ {
+ value: ABUri,
+ attrib: ToOrCC,
+ op: IsInAB,
+ count: 6,
+ },
+ {
+ value: ABUri,
+ attrib: AllAddresses,
+ op: IsInAB,
+ count: 8,
+ },
+ {
+ value: ABUri,
+ attrib: CCopy,
+ op: IsInAB,
+ count: 5,
+ },
+ {
+ value: ABUri,
+ attrib: Sender,
+ op: IsntInAB,
+ count: 5,
+ },
+ {
+ value: ABUri,
+ attrib: To,
+ op: IsntInAB,
+ count: 5,
+ },
+ {
+ value: ABUri,
+ attrib: ToOrCC,
+ op: IsntInAB,
+ count: 6,
+ },
+ {
+ value: ABUri,
+ attrib: AllAddresses,
+ op: IsntInAB,
+ count: 7,
+ },
+ {
+ value: ABUri,
+ attrib: CCopy,
+ op: IsntInAB,
+ count: 4,
+ },
+ {
+ value: "PrimaryEmail1@test.invalid",
+ attrib: AllAddresses,
+ op: Is,
+ count: 8,
+ },
+ {
+ value: "PrimaryEmail1@test.invalid",
+ attrib: AllAddresses,
+ op: Isnt,
+ count: 0,
+ },
+ {
+ value: "invalid@example.com",
+ attrib: AllAddresses,
+ op: Is,
+ count: 7,
+ },
+ {
+ value: "invalid@example.com",
+ attrib: AllAddresses,
+ op: Isnt,
+ count: 1,
+ },
+ {
+ value: "PrimaryEmail1@test.invalid",
+ attrib: ToOrCC,
+ op: Is,
+ count: 6,
+ },
+ {
+ value: "PrimaryEmail1@test.invalid",
+ attrib: ToOrCC,
+ op: Isnt,
+ count: 2,
+ },
+ {
+ value: "invalid@example.com",
+ attrib: ToOrCC,
+ op: Is,
+ count: 6,
+ },
+ {
+ value: "invalid@example.com",
+ attrib: ToOrCC,
+ op: Isnt,
+ count: 2,
+ },
+];
+
+var Files = [
+ "../../../data/bugmail1",
+ "../../../data/bugmail2",
+ "../../../data/bugmail3",
+ "../../../data/bugmail4",
+ "../../../data/bugmail5",
+ "../../../data/bugmail6",
+ "../../../data/bugmail7",
+ "../../../data/bugmail8",
+];
+
+function run_test() {
+ // Setup local mail accounts.
+ localAccountUtils.loadLocalMailAccount();
+
+ loadABFile(
+ "../../../addrbook/test/unit/data/cardForEmail",
+ kPABData.fileName
+ );
+
+ // test that validity table terms are valid
+
+ // offline mail table
+ testValidityTable(offlineMail, IsInAB, Sender, true);
+ testValidityTable(offlineMail, IsInAB, To, true);
+ testValidityTable(offlineMail, IsInAB, ToOrCC, true);
+ testValidityTable(offlineMail, IsInAB, AllAddresses, true);
+ testValidityTable(offlineMail, IsInAB, CCopy, true);
+ testValidityTable(offlineMail, IsInAB, Keywords, false);
+ testValidityTable(offlineMail, IsntInAB, Sender, true);
+ testValidityTable(offlineMail, IsntInAB, To, true);
+ testValidityTable(offlineMail, IsntInAB, ToOrCC, true);
+ testValidityTable(offlineMail, IsntInAB, AllAddresses, true);
+ testValidityTable(offlineMail, IsntInAB, CCopy, true);
+ testValidityTable(offlineMail, IsntInAB, Keywords, false);
+ testValidityTable(offlineMail, IsBefore, Sender, false);
+ testValidityTable(offlineMail, IsBefore, To, false);
+ testValidityTable(offlineMail, IsBefore, ToOrCC, false);
+ testValidityTable(offlineMail, IsBefore, AllAddresses, false);
+ testValidityTable(offlineMail, IsBefore, CCopy, false);
+ testValidityTable(offlineMail, IsBefore, Keywords, false);
+ testValidityTable(offlineMail, Is, AllAddresses, true);
+ testValidityTable(offlineMail, Isnt, AllAddresses, true);
+
+ // offline mail filter table
+ testValidityTable(offlineMailFilter, IsInAB, Sender, true);
+ testValidityTable(offlineMailFilter, IsInAB, To, true);
+ testValidityTable(offlineMailFilter, IsInAB, ToOrCC, true);
+ testValidityTable(offlineMailFilter, IsInAB, AllAddresses, true);
+ testValidityTable(offlineMailFilter, IsInAB, CCopy, true);
+ testValidityTable(offlineMailFilter, IsInAB, Keywords, false);
+ testValidityTable(offlineMailFilter, IsntInAB, Sender, true);
+ testValidityTable(offlineMailFilter, IsntInAB, To, true);
+ testValidityTable(offlineMailFilter, IsntInAB, AllAddresses, true);
+ testValidityTable(offlineMailFilter, IsntInAB, ToOrCC, true);
+ testValidityTable(offlineMailFilter, IsntInAB, CCopy, true);
+ testValidityTable(offlineMailFilter, IsntInAB, Keywords, false);
+ testValidityTable(offlineMailFilter, IsBefore, Sender, false);
+ testValidityTable(offlineMailFilter, IsBefore, To, false);
+ testValidityTable(offlineMailFilter, IsBefore, ToOrCC, false);
+ testValidityTable(offlineMailFilter, IsBefore, AllAddresses, false);
+ testValidityTable(offlineMailFilter, IsBefore, CCopy, false);
+ testValidityTable(offlineMailFilter, IsBefore, Keywords, false);
+ testValidityTable(offlineMailFilter, Is, AllAddresses, true);
+ testValidityTable(offlineMailFilter, Isnt, AllAddresses, true);
+
+ // online mail
+ testValidityTable(onlineMail, IsInAB, Sender, false);
+ testValidityTable(onlineMail, IsInAB, To, false);
+ testValidityTable(onlineMail, IsInAB, ToOrCC, false);
+ testValidityTable(onlineMail, IsInAB, CCopy, false);
+ testValidityTable(onlineMail, IsInAB, Keywords, false);
+ testValidityTable(onlineMail, IsntInAB, Sender, false);
+ testValidityTable(onlineMail, IsntInAB, To, false);
+ testValidityTable(onlineMail, IsntInAB, ToOrCC, false);
+ testValidityTable(onlineMail, IsntInAB, CCopy, false);
+ testValidityTable(onlineMail, IsntInAB, Keywords, false);
+ testValidityTable(onlineMail, IsBefore, Sender, false);
+ testValidityTable(onlineMail, IsBefore, To, false);
+ testValidityTable(onlineMail, IsBefore, ToOrCC, false);
+ testValidityTable(onlineMail, IsBefore, CCopy, false);
+ testValidityTable(onlineMail, IsBefore, Keywords, false);
+
+ // online mail filter
+ testValidityTable(onlineMailFilter, IsInAB, Sender, true);
+ testValidityTable(onlineMailFilter, IsInAB, To, true);
+ testValidityTable(onlineMailFilter, IsInAB, ToOrCC, true);
+ testValidityTable(onlineMailFilter, IsInAB, CCopy, true);
+ testValidityTable(onlineMailFilter, IsInAB, Keywords, false);
+ testValidityTable(onlineMailFilter, IsntInAB, Sender, true);
+ testValidityTable(onlineMailFilter, IsntInAB, To, true);
+ testValidityTable(onlineMailFilter, IsntInAB, ToOrCC, true);
+ testValidityTable(onlineMailFilter, IsntInAB, CCopy, true);
+ testValidityTable(onlineMailFilter, IsntInAB, Keywords, false);
+ testValidityTable(onlineMailFilter, IsBefore, Sender, false);
+ testValidityTable(onlineMailFilter, IsBefore, To, false);
+ testValidityTable(onlineMailFilter, IsBefore, ToOrCC, false);
+ testValidityTable(onlineMailFilter, IsBefore, CCopy, false);
+ testValidityTable(onlineMailFilter, IsBefore, Keywords, false);
+
+ // news
+ testValidityTable(news, IsInAB, Sender, false);
+ testValidityTable(news, IsInAB, To, false);
+ testValidityTable(news, IsInAB, ToOrCC, false);
+ testValidityTable(news, IsInAB, CCopy, false);
+ testValidityTable(news, IsInAB, Keywords, false);
+ testValidityTable(news, IsntInAB, Sender, false);
+ testValidityTable(news, IsntInAB, To, false);
+ testValidityTable(news, IsntInAB, ToOrCC, false);
+ testValidityTable(news, IsntInAB, CCopy, false);
+ testValidityTable(news, IsntInAB, Keywords, false);
+ testValidityTable(news, IsBefore, Sender, false);
+ testValidityTable(news, IsBefore, To, false);
+ testValidityTable(news, IsBefore, ToOrCC, false);
+ testValidityTable(news, IsBefore, CCopy, false);
+ testValidityTable(news, IsBefore, Keywords, false);
+
+ // Get a message into the local filestore. function testAbSearch() continues the testing after the copy.
+ do_test_pending();
+ copyListener.OnStopCopy(null);
+ return true;
+}
+
+var copyListener = {
+ OnStartCopy() {},
+ OnProgress(aProgress, aProgressMax) {},
+ SetMessageKey(aKey) {},
+ SetMessageId(aMessageId) {},
+ OnStopCopy(aStatus) {
+ var fileName = Files.shift();
+ if (fileName) {
+ var file = do_get_file(fileName);
+ MailServices.copy.copyFileMessage(
+ file,
+ localAccountUtils.inboxFolder,
+ null,
+ false,
+ 0,
+ "",
+ copyListener,
+ null
+ );
+ } else {
+ testAbSearch();
+ }
+ },
+};
+
+// Runs at completion of copy
+
+// process each test from queue, calls itself upon completion of each search
+function testAbSearch() {
+ print("Test AbSearch");
+ var test = Tests.shift();
+ if (test) {
+ new TestSearch(
+ localAccountUtils.inboxFolder,
+ test.value,
+ test.attrib,
+ test.op,
+ test.count,
+ testAbSearch
+ );
+ } else {
+ do_test_finished();
+ }
+}