summaryrefslogtreecommitdiffstats
path: root/security/manager/ssl/tests/unit/test_pkcs11_tokenDB.js
diff options
context:
space:
mode:
Diffstat (limited to 'security/manager/ssl/tests/unit/test_pkcs11_tokenDB.js')
-rw-r--r--security/manager/ssl/tests/unit/test_pkcs11_tokenDB.js45
1 files changed, 45 insertions, 0 deletions
diff --git a/security/manager/ssl/tests/unit/test_pkcs11_tokenDB.js b/security/manager/ssl/tests/unit/test_pkcs11_tokenDB.js
new file mode 100644
index 000000000..ac382ab82
--- /dev/null
+++ b/security/manager/ssl/tests/unit/test_pkcs11_tokenDB.js
@@ -0,0 +1,45 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/publicdomain/zero/1.0/
+"use strict";
+
+// Tests the methods for interfacing with the PKCS #11 token database.
+
+// Ensure that the appropriate initialization has happened.
+do_get_profile();
+
+function run_test() {
+ let tokenDB = Cc["@mozilla.org/security/pk11tokendb;1"]
+ .getService(Ci.nsIPK11TokenDB);
+
+ let tokenListPreLoad = tokenDB.listTokens();
+ while (tokenListPreLoad.hasMoreElements()) {
+ let token = tokenListPreLoad.getNext().QueryInterface(Ci.nsIPK11Token);
+ notEqual(token.tokenLabel, "Test PKCS11 Tokeñ Label",
+ "Test PKCS11 Token 1 should not be listed prior to module load");
+ notEqual(token.tokenLabel, "Test PKCS11 Tokeñ 2 Label",
+ "Test PKCS11 Token 2 should not be listed prior to module load");
+ }
+
+ throws(() => tokenDB.findTokenByName("Test PKCS11 Tokeñ Label"),
+ /NS_ERROR_FAILURE/,
+ "Non-present test token 1 should not be findable by name");
+ throws(() => tokenDB.findTokenByName("Test PKCS11 Tokeñ 2 Label"),
+ /NS_ERROR_FAILURE/,
+ "Non-present test token 2 should not be findable by name");
+
+ loadPKCS11TestModule(false);
+
+ // Test Token 1 is simulated to insert and remove itself in a tight loop, so
+ // we don't bother testing that it's present.
+ let tokenListPostLoad = tokenDB.listTokens();
+ let foundTokenNames = [];
+ while (tokenListPostLoad.hasMoreElements()) {
+ let token = tokenListPostLoad.getNext().QueryInterface(Ci.nsIPK11Token);
+ foundTokenNames.push(token.tokenName);
+ }
+ ok(foundTokenNames.includes("Test PKCS11 Tokeñ 2 Label"),
+ "Test PKCS11 Token 2 should be listed after module load");
+
+ notEqual(tokenDB.findTokenByName("Test PKCS11 Tokeñ 2 Label"), null,
+ "Test token 2 should be findable by name after loading test module");
+}