Revision control

Copy as Markdown

Other Tools

/* 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.importESModule(
);
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;
}
/** @implements {nsIMsgCopyServiceListener} */
var copyListener = {
onStartCopy() {},
onProgress() {},
setMessageKey() {},
getMessageId() {
return null;
},
onStopCopy() {
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();
}
}