blob: 947b663734ac873f74907d61abe91c90569fbe07 [file] [log] [blame]
// Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
entd.onLoad = function () {
var pkcs11 = new entd.crypto.Pkcs11();
if (!("slots" in pkcs11))
return println("Pkcs11 object is missing its 'slots' object");
if (!(pkcs11.slots instanceof entd.crypto.Pkcs11.Slots))
return println("Expected pkcs11.slots instanceof entd.crypto.Pkcs11.Slots");
var str = pkcs11.slots.toString();
if (str != "[object entd.crypto.Pkcs11.Slots]")
return println("pkcs11.slots has unexpected toString result: " + str);
var slots;
slots = pkcs11.slots;
var expectedProps = { 0: true, "length": true };
for (var key in slots) {
if (key in expectedProps)
delete expectedProps[key];
else
return println("Unexpected property in slots object: " + key);
}
var hasMissingProps = false;
for (var key in expectedProps) {
println("Missing expected property in slots object: " + key);
hasMissingProps = true;
}
if (hasMissingProps)
return;
delete slots.length;
if (!("length" in slots))
return println("Didn't expect to be able to delete slots.length.");
if (slots.length != 1)
return println("Expected one slot, found: " + slots.length);
slots.length = 10;
if (slots.length != 1)
return println("Didn't expect to be able to change slots.length");
var ex = null;
try {
delete slots[0];
} catch (ex_) {
ex = ex_;
}
if (!ex || !slots[0])
return println("Expected exception deleting slot.");
if (!ex.toString().match(/attempt to delete/i))
return println("Got unexpected exception deleting slot.");
if (!(0 in slots))
return println("Expected '0 in pkcs11.slots' to return true");
if ((1 in slots))
return println("Expected '1 in pkcs11.slots' to return false");
println("LOOKS OK");
}