46 lines
2.0 KiB
JavaScript
46 lines
2.0 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
ChromeUtils.import("resource://gre/modules/CreditCard.jsm");
|
|
ChromeUtils.import("resource://formautofill/MasterPassword.jsm");
|
|
|
|
let oldGetters = {};
|
|
let gFakeLoggedIn = true;
|
|
|
|
add_task(function setup() {
|
|
oldGetters._token = Object.getOwnPropertyDescriptor(MasterPassword, "_token").get;
|
|
oldGetters.isEnabled = Object.getOwnPropertyDescriptor(MasterPassword, "isEnabled").get;
|
|
oldGetters.isLoggedIn = Object.getOwnPropertyDescriptor(MasterPassword, "isLoggedIn").get;
|
|
MasterPassword.__defineGetter__("_token", () => { return {hasPassword: true}; });
|
|
MasterPassword.__defineGetter__("isEnabled", () => true);
|
|
MasterPassword.__defineGetter__("isLoggedIn", () => gFakeLoggedIn);
|
|
registerCleanupFunction(() => {
|
|
MasterPassword.__defineGetter__("_token", oldGetters._token);
|
|
MasterPassword.__defineGetter__("isEnabled", oldGetters.isEnabled);
|
|
MasterPassword.__defineGetter__("isLoggedIn", oldGetters.isLoggedIn);
|
|
|
|
// CreditCard.jsm and MasterPassword.jsm are imported into the global scope
|
|
// -- the window -- above. If they're not deleted, they outlive the test and
|
|
// are reported as a leak.
|
|
delete window.MasterPassword;
|
|
delete window.CreditCard;
|
|
});
|
|
});
|
|
|
|
add_task(async function test_getLabel_withMasterPassword() {
|
|
ok(MasterPassword.isEnabled, "Confirm that MasterPassword is faked and thinks it is enabled");
|
|
ok(MasterPassword.isLoggedIn, "Confirm that MasterPassword is faked and thinks it is logged in");
|
|
|
|
const ccNumber = "4111111111111111";
|
|
const encryptedNumber = await MasterPassword.encrypt(ccNumber);
|
|
const decryptedNumber = await MasterPassword.decrypt(encryptedNumber);
|
|
is(decryptedNumber, ccNumber, "Decrypted CC number should match original");
|
|
|
|
const name = "Foxkeh";
|
|
const creditCard = new CreditCard({encryptedNumber, name: "Foxkeh"});
|
|
const label = await creditCard.getLabel({showNumbers: true});
|
|
is(label, `${ccNumber}, ${name}`);
|
|
});
|