summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/compose/test/unit/test_sendMessageLater3.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/compose/test/unit/test_sendMessageLater3.js')
-rw-r--r--comm/mailnews/compose/test/unit/test_sendMessageLater3.js188
1 files changed, 188 insertions, 0 deletions
diff --git a/comm/mailnews/compose/test/unit/test_sendMessageLater3.js b/comm/mailnews/compose/test/unit/test_sendMessageLater3.js
new file mode 100644
index 0000000000..08e32481c6
--- /dev/null
+++ b/comm/mailnews/compose/test/unit/test_sendMessageLater3.js
@@ -0,0 +1,188 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/**
+ * Protocol tests for SMTP.
+ *
+ * For trying to send a message later with no server connected, this test
+ * verifies:
+ * - A correct status response.
+ * - A correct state at the end of attempting to send.
+ */
+
+/* import-globals-from ../../../test/resources/alertTestUtils.js */
+load("../../../resources/alertTestUtils.js");
+
+var { MailServices } = ChromeUtils.import(
+ "resource:///modules/MailServices.jsm"
+);
+
+var originalData;
+var identity = null;
+var testFile = do_get_file("data/429891_testcase.eml");
+
+var kSender = "from@foo.invalid";
+var kTo = "to@foo.invalid";
+
+var msgSendLater = Cc["@mozilla.org/messengercompose/sendlater;1"].getService(
+ Ci.nsIMsgSendLater
+);
+
+// for alertTestUtils.js
+function alertPS(parent, aDialogTitle, aText) {
+ dump("Hiding Alert {\n" + aText + "\n} End Alert\n");
+}
+
+// This listener handles the post-sending of the actual message and checks the
+// sequence and ensures the data is correct.
+function msll() {}
+
+msll.prototype = {
+ _initialTotal: 0,
+ _errorRaised: false,
+
+ // nsIMsgSendLaterListener
+ onStartSending(aTotal) {
+ this._initialTotal = 1;
+ Assert.equal(msgSendLater.sendingMessages, true);
+ },
+ onMessageStartSending(
+ aCurrentMessage,
+ aTotalMessageCount,
+ aMessageHeader,
+ aIdentity
+ ) {},
+ onMessageSendProgress(
+ aCurrentMessage,
+ aTotalMessageCount,
+ aMessageSendPercent,
+ aMessageCopyPercent
+ ) {},
+ onMessageSendError(aCurrentMessage, aMessageHeader, aStatus, aMsg) {
+ this._errorRaised = true;
+ },
+ onStopSending(aStatus, aMsg, aTotal, aSuccessful) {
+ print("msll onStopSending\n");
+
+ // NS_ERROR_SMTP_SEND_FAILED_REFUSED is 2153066798
+ Assert.equal(aStatus, 2153066798);
+ Assert.equal(aTotal, 1);
+ Assert.equal(aSuccessful, 0);
+ Assert.equal(this._initialTotal, 1);
+ Assert.equal(this._errorRaised, true);
+ Assert.equal(msgSendLater.sendingMessages, false);
+ // Check that the send later service still thinks we have messages to send.
+ Assert.equal(msgSendLater.hasUnsentMessages(identity), true);
+
+ do_test_finished();
+ },
+};
+
+/* exported OnStopCopy */
+// for head_compose.js
+function OnStopCopy(aStatus) {
+ Assert.equal(aStatus, 0);
+
+ // Check this is false before we start sending
+ Assert.equal(msgSendLater.sendingMessages, false);
+
+ let folder = msgSendLater.getUnsentMessagesFolder(identity);
+
+ // Check that the send later service thinks we have messages to send.
+ Assert.equal(msgSendLater.hasUnsentMessages(identity), true);
+
+ // Check we have a message in the unsent message folder
+ Assert.equal(folder.getTotalMessages(false), 1);
+
+ // Now do a comparison of what is in the unsent mail folder
+ let msgData = mailTestUtils.loadMessageToString(
+ folder,
+ mailTestUtils.firstMsgHdr(folder)
+ );
+
+ // Skip the headers etc that mailnews adds
+ var pos = msgData.indexOf("From:");
+ Assert.notEqual(pos, -1);
+
+ msgData = msgData.substr(pos);
+
+ // Check the data is matching.
+ Assert.equal(originalData, msgData);
+
+ do_timeout(0, sendMessageLater);
+}
+
+// This function does the actual send later
+function sendMessageLater() {
+ // No server for this test, just attempt to send unsent and wait.
+ var messageListener = new msll();
+
+ msgSendLater.addListener(messageListener);
+
+ // Send the unsent message
+ msgSendLater.sendUnsentMessages(identity);
+}
+
+add_task(async function run_the_test() {
+ registerAlertTestUtils();
+
+ // Test file - for bug 429891
+ originalData = await IOUtils.readUTF8(testFile.path);
+
+ // Ensure we have a local mail account, an normal account and appropriate
+ // servers and identities.
+ localAccountUtils.loadLocalMailAccount();
+
+ // Check that the send later service thinks we don't have messages to send.
+ Assert.equal(msgSendLater.hasUnsentMessages(identity), false);
+
+ MailServices.accounts.setSpecialFolders();
+
+ let account = MailServices.accounts.createAccount();
+ let incomingServer = MailServices.accounts.createIncomingServer(
+ "test",
+ "localhost",
+ "pop3"
+ );
+
+ var smtpServer = getBasicSmtpServer();
+ identity = getSmtpIdentity(kSender, smtpServer);
+
+ account.addIdentity(identity);
+ account.defaultIdentity = identity;
+ account.incomingServer = incomingServer;
+ MailServices.accounts.defaultAccount = account;
+
+ localAccountUtils.rootFolder.createLocalSubfolder("Sent");
+
+ identity.doFcc = false;
+
+ // Now prepare to actually "send" the message later, i.e. dump it in the
+ // unsent messages folder.
+
+ var compFields = Cc[
+ "@mozilla.org/messengercompose/composefields;1"
+ ].createInstance(Ci.nsIMsgCompFields);
+
+ compFields.from = identity.email;
+ compFields.to = kTo;
+
+ var msgSend = Cc["@mozilla.org/messengercompose/send;1"].createInstance(
+ Ci.nsIMsgSend
+ );
+
+ msgSend.sendMessageFile(
+ identity,
+ "",
+ compFields,
+ testFile,
+ false,
+ false,
+ Ci.nsIMsgSend.nsMsgQueueForLater,
+ null,
+ copyListener,
+ null,
+ null
+ );
+
+ // Now we wait till we get copy notification of completion.
+ do_test_pending();
+});