summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/compose/test/unit/test_sendObserver.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/compose/test/unit/test_sendObserver.js')
-rw-r--r--comm/mailnews/compose/test/unit/test_sendObserver.js52
1 files changed, 52 insertions, 0 deletions
diff --git a/comm/mailnews/compose/test/unit/test_sendObserver.js b/comm/mailnews/compose/test/unit/test_sendObserver.js
new file mode 100644
index 0000000000..3640d1ca02
--- /dev/null
+++ b/comm/mailnews/compose/test/unit/test_sendObserver.js
@@ -0,0 +1,52 @@
+/*
+ * Tests that the mail-set-sender observer, used by extensions to modify the
+ * outgoing server, works.
+ *
+ * This is adapted from test_messageHeaders.js
+ */
+
+var CompFields = CC(
+ "@mozilla.org/messengercompose/composefields;1",
+ Ci.nsIMsgCompFields
+);
+
+// nsIObserver implementation.
+var gData = "";
+var observer = {
+ observe(aSubject, aTopic, aData) {
+ if (aTopic == "mail-set-sender") {
+ Assert.ok(aSubject instanceof Ci.nsIMsgCompose);
+ gData = aData;
+ }
+ },
+};
+
+add_task(async function testObserver() {
+ let fields = new CompFields();
+ let identity = getSmtpIdentity(
+ "from@tinderbox.invalid",
+ getBasicSmtpServer()
+ );
+ identity.fullName = "Observer Tester";
+ fields.to = "Emile <nobody@tinderbox.invalid>";
+ fields.cc = "Alex <alex@tinderbox.invalid>";
+ fields.subject = "Let's test the observer";
+
+ await richCreateMessage(fields, [], identity);
+ // observer data should have:
+ // (no account), Ci.nsIMsgSend.nsMsgSaveAsDraft, identity.key
+ Assert.equal(gData, ",4,id1");
+
+ // Now try with an account
+ await richCreateMessage(fields, [], identity, localAccountUtils.msgAccount);
+ // observer data should have:
+ // (local account key), Ci.nsIMsgSend.nsMsgSaveAsDraft, identity.key
+ Assert.equal(gData, "account1,4,id1");
+});
+
+function run_test() {
+ // Ensure we have at least one mail account
+ localAccountUtils.loadLocalMailAccount();
+ Services.obs.addObserver(observer, "mail-set-sender");
+ run_next_test();
+}