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 --- .../unit/test_customCommandReturnsFetchResponse.js | 134 +++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 comm/mailnews/imap/test/unit/test_customCommandReturnsFetchResponse.js (limited to 'comm/mailnews/imap/test/unit/test_customCommandReturnsFetchResponse.js') diff --git a/comm/mailnews/imap/test/unit/test_customCommandReturnsFetchResponse.js b/comm/mailnews/imap/test/unit/test_customCommandReturnsFetchResponse.js new file mode 100644 index 0000000000..abf45ab3e3 --- /dev/null +++ b/comm/mailnews/imap/test/unit/test_customCommandReturnsFetchResponse.js @@ -0,0 +1,134 @@ +/* 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/. */ + +/* + * Test to ensure that imap customCommandResult function works properly + * Bug 778246 + */ + +var { PromiseTestUtils } = ChromeUtils.import( + "resource://testing-common/mailnews/PromiseTestUtils.jsm" +); + +// IMAP pump + +// Globals + +// Messages to load must have CRLF line endings, that is Windows style +var gMessageFileName = "bugmail10"; // message file used as the test message +var gMessage, gExpectedLength; + +var gCustomList = ["Custom1", "Custom2", "Custom3"]; + +var gMsgWindow = Cc["@mozilla.org/messenger/msgwindow;1"].createInstance( + Ci.nsIMsgWindow +); + +setupIMAPPump("CUSTOM1"); + +add_setup(async function () { + Services.prefs.setBoolPref( + "mail.server.server1.autosync_offline_stores", + false + ); + // Load and update a message in the imap fake server. + + gMessage = new ImapMessage( + specForFileName(gMessageFileName), + IMAPPump.mailbox.uidnext++, + [] + ); + gMessage.xCustomList = []; + IMAPPump.mailbox.addMessage(gMessage); + let listener = new PromiseTestUtils.PromiseUrlListener(); + IMAPPump.inbox.updateFolderWithListener(null, listener); + await listener.promise; +}); + +add_task(async function testStoreCustomList() { + let msgHdr = mailTestUtils.firstMsgHdr(IMAPPump.inbox); + gExpectedLength = gCustomList.length; + let uri = IMAPPump.inbox.issueCommandOnMsgs( + "STORE", + msgHdr.messageKey + " X-CUSTOM-LIST (" + gCustomList.join(" ") + ")", + gMsgWindow + ); + uri.QueryInterface(Ci.nsIMsgMailNewsUrl); + // Listens for response from customCommandResult request for X-CUSTOM-LIST. + let storeCustomListSetListener = new PromiseTestUtils.PromiseUrlListener({ + OnStopRunningUrl(aUrl, aExitCode) { + aUrl.QueryInterface(Ci.nsIImapUrl); + Assert.equal( + aUrl.customCommandResult, + "(" + gMessage.xCustomList.join(" ") + ")" + ); + Assert.equal(gMessage.xCustomList.length, gExpectedLength); + }, + }); + uri.RegisterListener(storeCustomListSetListener); + await storeCustomListSetListener.promise; +}); + +add_task(async function testStoreMinusCustomList() { + let msgHdr = mailTestUtils.firstMsgHdr(IMAPPump.inbox); + gExpectedLength--; + let uri = IMAPPump.inbox.issueCommandOnMsgs( + "STORE", + msgHdr.messageKey + " -X-CUSTOM-LIST (" + gCustomList[0] + ")", + gMsgWindow + ); + uri.QueryInterface(Ci.nsIMsgMailNewsUrl); + // Listens for response from customCommandResult request for X-CUSTOM-LIST. + let storeCustomListRemovedListener = new PromiseTestUtils.PromiseUrlListener({ + OnStopRunningUrl(aUrl, aExitCode) { + aUrl.QueryInterface(Ci.nsIImapUrl); + Assert.equal( + aUrl.customCommandResult, + "(" + gMessage.xCustomList.join(" ") + ")" + ); + Assert.equal(gMessage.xCustomList.length, gExpectedLength); + }, + }); + uri.RegisterListener(storeCustomListRemovedListener); + await storeCustomListRemovedListener.promise; +}); + +add_task(async function testStorePlusCustomList() { + let msgHdr = mailTestUtils.firstMsgHdr(IMAPPump.inbox); + gExpectedLength++; + let uri = IMAPPump.inbox.issueCommandOnMsgs( + "STORE", + msgHdr.messageKey + ' +X-CUSTOM-LIST ("Custom4")', + gMsgWindow + ); + uri.QueryInterface(Ci.nsIMsgMailNewsUrl); + let storeCustomListAddedListener = new PromiseTestUtils.PromiseUrlListener({ + OnStopRunningUrl(aUrl, aExitCode) { + aUrl.QueryInterface(Ci.nsIImapUrl); + Assert.equal( + aUrl.customCommandResult, + "(" + gMessage.xCustomList.join(" ") + ")" + ); + Assert.equal(gMessage.xCustomList.length, gExpectedLength); + }, + }); + uri.RegisterListener(storeCustomListAddedListener); + await storeCustomListAddedListener.promise; +}); + +// Cleanup at end +add_task(function endTest() { + teardownIMAPPump(); +}); + +/* + * helper functions + */ + +// given a test file, return the file uri spec +function specForFileName(aFileName) { + let file = do_get_file("../../../data/" + aFileName); + let msgfileuri = Services.io.newFileURI(file).QueryInterface(Ci.nsIFileURL); + return msgfileuri.spec; +} -- cgit v1.2.3