diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
commit | 6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /comm/mailnews/extensions/mdn/test/unit | |
parent | Initial commit. (diff) | |
download | thunderbird-upstream.tar.xz thunderbird-upstream.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'comm/mailnews/extensions/mdn/test/unit')
4 files changed, 151 insertions, 0 deletions
diff --git a/comm/mailnews/extensions/mdn/test/unit/head_mdn.js b/comm/mailnews/extensions/mdn/test/unit/head_mdn.js new file mode 100644 index 0000000000..0735341e30 --- /dev/null +++ b/comm/mailnews/extensions/mdn/test/unit/head_mdn.js @@ -0,0 +1,18 @@ +var { MailServices } = ChromeUtils.import( + "resource:///modules/MailServices.jsm" +); +var { mailTestUtils } = ChromeUtils.import( + "resource://testing-common/mailnews/MailTestUtils.jsm" +); +var { localAccountUtils } = ChromeUtils.import( + "resource://testing-common/mailnews/LocalAccountUtils.jsm" +); + +var CC = Components.Constructor; + +// Ensure the profile directory is set up +do_get_profile(); + +registerCleanupFunction(function () { + load("../../../../../mailnews/resources/mailShutdown.js"); +}); diff --git a/comm/mailnews/extensions/mdn/test/unit/test_askuser.js b/comm/mailnews/extensions/mdn/test/unit/test_askuser.js new file mode 100644 index 0000000000..b30ab49b0f --- /dev/null +++ b/comm/mailnews/extensions/mdn/test/unit/test_askuser.js @@ -0,0 +1,67 @@ +localAccountUtils.loadLocalMailAccount(); + +var localAccount = MailServices.accounts.FindAccountForServer( + localAccountUtils.incomingServer +); +var identity = MailServices.accounts.createIdentity(); +identity.email = "bob@t2.example.net"; +localAccount.addIdentity(identity); +localAccount.defaultIdentity = identity; + +function run_test() { + var headers = + "from: alice@t1.example.com\r\n" + + "to: bob@t2.example.net\r\n" + + "return-path: alice@t1.example.com\r\n" + + "Disposition-Notification-To: alice@t1.example.com\r\n"; + + let mimeHdr = Cc["@mozilla.org/messenger/mimeheaders;1"].createInstance( + Ci.nsIMimeHeaders + ); + mimeHdr.initialize(headers); + let receivedHeader = mimeHdr.extractHeader("To", false); + dump(receivedHeader + "\n"); + + localAccountUtils.inboxFolder.QueryInterface(Ci.nsIMsgLocalMailFolder); + localAccountUtils.inboxFolder.addMessage( + "From \r\n" + headers + "\r\nhello\r\n" + ); + // Need to setup some prefs + Services.prefs.setBoolPref("mail.mdn.report.enabled", true); + Services.prefs.setIntPref("mail.mdn.report.not_in_to_cc", 2); + Services.prefs.setIntPref("mail.mdn.report.other", 2); + Services.prefs.setIntPref("mail.mdn.report.outside_domain", 2); + + var msgFolder = localAccountUtils.inboxFolder; + + var msgWindow = {}; + + var msgHdr = mailTestUtils.firstMsgHdr(localAccountUtils.inboxFolder); + + // Everything looks good so far, let's generate the MDN response. + var mdnGenerator = Cc[ + "@mozilla.org/messenger-mdn/generator;1" + ].createInstance(Ci.nsIMsgMdnGenerator); + + Services.prefs.setIntPref("mail.mdn.report.outside_domain", 1); + var askUser = mdnGenerator.process( + Ci.nsIMsgMdnGenerator.eDisplayed, + msgWindow, + msgFolder, + msgHdr.messageKey, + mimeHdr, + false + ); + Assert.ok(!askUser); + + Services.prefs.setIntPref("mail.mdn.report.outside_domain", 2); + askUser = mdnGenerator.process( + Ci.nsIMsgMdnGenerator.eDisplayed, + msgWindow, + msgFolder, + msgHdr.messageKey, + mimeHdr, + false + ); + Assert.ok(askUser); +} diff --git a/comm/mailnews/extensions/mdn/test/unit/test_mdnFlags.js b/comm/mailnews/extensions/mdn/test/unit/test_mdnFlags.js new file mode 100644 index 0000000000..4d6094e89d --- /dev/null +++ b/comm/mailnews/extensions/mdn/test/unit/test_mdnFlags.js @@ -0,0 +1,60 @@ +/** + * This tests that setting mdn flags works correctly, so that we don't + * reprompt when the user re-selects a message. + */ + +localAccountUtils.loadLocalMailAccount(); + +var localAccount = MailServices.accounts.FindAccountForServer( + localAccountUtils.incomingServer +); +var identity = MailServices.accounts.createIdentity(); +identity.email = "bob@t2.example.net"; +localAccount.addIdentity(identity); +localAccount.defaultIdentity = identity; + +function run_test() { + var headers = + "from: alice@t1.example.com\r\n" + + "to: bob@t2.example.net\r\n" + + "return-path: alice@t1.example.com\r\n" + + "Disposition-Notification-To: alice@t1.example.com\r\n"; + + let mimeHdr = Cc["@mozilla.org/messenger/mimeheaders;1"].createInstance( + Ci.nsIMimeHeaders + ); + mimeHdr.initialize(headers); + mimeHdr.extractHeader("To", false); + + localAccountUtils.inboxFolder.QueryInterface(Ci.nsIMsgLocalMailFolder); + localAccountUtils.inboxFolder.addMessage( + "From \r\n" + headers + "\r\nhello\r\n" + ); + // Need to setup some prefs + Services.prefs.setBoolPref("mail.mdn.report.enabled", true); + Services.prefs.setIntPref("mail.mdn.report.not_in_to_cc", 2); + Services.prefs.setIntPref("mail.mdn.report.other", 2); + Services.prefs.setIntPref("mail.mdn.report.outside_domain", 2); + + var msgFolder = localAccountUtils.inboxFolder; + + var msgWindow = {}; + + var msgHdr = mailTestUtils.firstMsgHdr(localAccountUtils.inboxFolder); + + // Everything looks good so far, let's generate the MDN response. + var mdnGenerator = Cc[ + "@mozilla.org/messenger-mdn/generator;1" + ].createInstance(Ci.nsIMsgMdnGenerator); + mdnGenerator.process( + Ci.nsIMsgMdnGenerator.eDisplayed, + msgWindow, + msgFolder, + msgHdr.messageKey, + mimeHdr, + false + ); + mdnGenerator.userDeclined(); + Assert.notEqual(msgHdr.flags & Ci.nsMsgMessageFlags.MDNReportSent, 0); + Assert.equal(msgHdr.flags & Ci.nsMsgMessageFlags.MDNReportNeeded, 0); +} diff --git a/comm/mailnews/extensions/mdn/test/unit/xpcshell.ini b/comm/mailnews/extensions/mdn/test/unit/xpcshell.ini new file mode 100644 index 0000000000..243145b676 --- /dev/null +++ b/comm/mailnews/extensions/mdn/test/unit/xpcshell.ini @@ -0,0 +1,6 @@ +[DEFAULT] +head = head_mdn.js +tail = + +[test_askuser.js] +[test_mdnFlags.js] |