summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/mime/test/unit/test_handlerRegistration.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/mime/test/unit/test_handlerRegistration.js')
-rw-r--r--comm/mailnews/mime/test/unit/test_handlerRegistration.js64
1 files changed, 64 insertions, 0 deletions
diff --git a/comm/mailnews/mime/test/unit/test_handlerRegistration.js b/comm/mailnews/mime/test/unit/test_handlerRegistration.js
new file mode 100644
index 0000000000..5a2aef8799
--- /dev/null
+++ b/comm/mailnews/mime/test/unit/test_handlerRegistration.js
@@ -0,0 +1,64 @@
+/* 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 https://mozilla.org/MPL/2.0/. */
+
+var { EnigmailVerify } = ChromeUtils.import(
+ "chrome://openpgp/content/modules/mimeVerify.jsm"
+);
+
+/**
+ * Tests switching content-type handlers on demand.
+ */
+add_task(function () {
+ const CONTRACT_ID = "@mozilla.org/mimecth;1?type=multipart/signed";
+ const INTERFACE = Ci.nsIMimeContentTypeHandler;
+
+ Assert.ok(
+ !Components.manager.isContractIDRegistered(CONTRACT_ID),
+ "no factory is registered initially"
+ );
+
+ EnigmailVerify.registerPGPMimeHandler();
+ Assert.equal(
+ Cc[CONTRACT_ID].number,
+ EnigmailVerify.pgpMimeFactory.classID.number,
+ "pgpMimeFactory is the registered factory"
+ );
+ Assert.ok(
+ Cc[CONTRACT_ID].createInstance(INTERFACE),
+ "pgpMimeFactory successfully created an instance"
+ );
+
+ EnigmailVerify.unregisterPGPMimeHandler();
+ Assert.ok(
+ !Components.manager.isContractIDRegistered(CONTRACT_ID),
+ "pgpMimeFactory has been unregistered"
+ );
+ Assert.throws(
+ () => Cc[CONTRACT_ID].createInstance(INTERFACE),
+ /NS_ERROR_XPC_CI_RETURNED_FAILURE/,
+ "exception correctly thrown"
+ );
+
+ EnigmailVerify.registerPGPMimeHandler();
+ Assert.equal(
+ Cc[CONTRACT_ID].number,
+ EnigmailVerify.pgpMimeFactory.classID.number,
+ "pgpMimeFactory is the registered factory"
+ );
+ Assert.ok(
+ Cc[CONTRACT_ID].createInstance(INTERFACE),
+ "pgpMimeFactory successfully created an instance"
+ );
+
+ EnigmailVerify.unregisterPGPMimeHandler();
+ Assert.ok(
+ !Components.manager.isContractIDRegistered(CONTRACT_ID),
+ "pgpMimeFactory has been unregistered"
+ );
+ Assert.throws(
+ () => Cc[CONTRACT_ID].createInstance(INTERFACE),
+ /NS_ERROR_XPC_CI_RETURNED_FAILURE/,
+ "exception correctly thrown"
+ );
+});