diff options
Diffstat (limited to 'comm/mailnews/local/test/unit/test_pop3MoveFilter2.js')
-rw-r--r-- | comm/mailnews/local/test/unit/test_pop3MoveFilter2.js | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/comm/mailnews/local/test/unit/test_pop3MoveFilter2.js b/comm/mailnews/local/test/unit/test_pop3MoveFilter2.js new file mode 100644 index 0000000000..71a7578310 --- /dev/null +++ b/comm/mailnews/local/test/unit/test_pop3MoveFilter2.js @@ -0,0 +1,108 @@ +/* + * This file tests that a pop3 move filter doesn't reuse msg hdr + * info from previous moves. + * + * Original author: David Bienvenu <dbienvenu@mozilla.com> + */ + +/* import-globals-from ../../../test/resources/POP3pump.js */ +load("../../../resources/POP3pump.js"); +var gFiles = ["../../../data/bugmail10", "../../../data/basic1"]; + +Services.prefs.setBoolPref("mail.server.default.leave_on_server", true); + +// Currently we have two mailbox storage formats. +var gPluggableStores = [ + "@mozilla.org/msgstore/berkeleystore;1", + "@mozilla.org/msgstore/maildirstore;1", +]; +var basic1_preview = "Hello, world!"; +var bugmail10_preview = + "Do not reply to this email. You can add comments to this bug at https://bugzilla.mozilla.org/show_bug.cgi?id=436880 -- Configure bugmail: https://bugzilla.mozilla.org/userprefs.cgi?tab=email ------- You are receiving this mail because: -----"; + +var gMoveFolder; +var gFilter; // the test filter +var gFilterList; +var gTestArray = [ + function createFilters() { + gFilterList = gPOP3Pump.fakeServer.getFilterList(null); + // create a cc filter which will match the first message but not the second. + gFilter = gFilterList.createFilter("MoveCc"); + let searchTerm = gFilter.createTerm(); + searchTerm.attrib = Ci.nsMsgSearchAttrib.CC; + searchTerm.op = Ci.nsMsgSearchOp.Contains; + var oldValue = searchTerm.value; + oldValue.attrib = Ci.nsMsgSearchAttrib.CC; + oldValue.str = "invalid@example.com"; + searchTerm.value = oldValue; + gFilter.appendTerm(searchTerm); + let moveAction = gFilter.createAction(); + moveAction.type = Ci.nsMsgFilterAction.MoveToFolder; + moveAction.targetFolderUri = gMoveFolder.URI; + gFilter.appendAction(moveAction); + gFilter.enabled = true; + gFilter.filterType = Ci.nsMsgFilterType.InboxRule; + gFilterList.insertFilterAt(0, gFilter); + }, + // just get a message into the local folder + async function getLocalMessages1() { + gPOP3Pump.files = gFiles; + await gPOP3Pump.run(); + }, + function verifyFolders2() { + Assert.equal(folderCount(gMoveFolder), 1); + // the local inbox folder should have one message. + Assert.equal(folderCount(localAccountUtils.inboxFolder), 1); + }, + function verifyMessages() { + // check MoveFolder message + let hdr = [...gMoveFolder.msgDatabase.enumerateMessages()][0]; + Assert.ok(!gMoveFolder.fetchMsgPreviewText([hdr.messageKey], null)); + Assert.equal(hdr.getStringProperty("preview"), bugmail10_preview); + // check inbox message + hdr = [...localAccountUtils.inboxFolder.msgDatabase.enumerateMessages()][0]; + Assert.ok( + !localAccountUtils.inboxFolder.fetchMsgPreviewText([hdr.messageKey], null) + ); + Assert.equal(hdr.getStringProperty("preview"), basic1_preview); + }, +]; + +function folderCount(folder) { + return [...folder.msgDatabase.enumerateMessages()].length; +} + +function setup_store(storeID) { + return function _setup_store() { + // Initialize pop3Pump with correct mailbox format. + gPOP3Pump.resetPluggableStore(storeID); + + // Set the default mailbox store. + Services.prefs.setCharPref("mail.serverDefaultStoreContractID", storeID); + + // Make sure we're not quarantining messages + Services.prefs.setBoolPref("mailnews.downloadToTempFile", false); + if (!localAccountUtils.inboxFolder) { + localAccountUtils.loadLocalMailAccount(); + } + + gMoveFolder = + localAccountUtils.rootFolder.createLocalSubfolder("MoveFolder"); + }; +} + +function run_test() { + for (let store of gPluggableStores) { + add_task(setup_store(store)); + gTestArray.forEach(x => add_task(x)); + } + + add_task(exitTest); + run_next_test(); +} + +function exitTest() { + // Cleanup and exit the test. + info("Exiting mail tests\n"); + gPOP3Pump = null; +} |