summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/mime/test/unit/test_handlerRegistration.js
blob: 5a2aef87998718f2098543a70ba38dc7e5c7e5ce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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"
  );
});