diff options
Diffstat (limited to 'toolkit/modules/tests/browser/browser_CreditCard.js')
-rw-r--r-- | toolkit/modules/tests/browser/browser_CreditCard.js | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/toolkit/modules/tests/browser/browser_CreditCard.js b/toolkit/modules/tests/browser/browser_CreditCard.js new file mode 100644 index 0000000000..8ddb8f6996 --- /dev/null +++ b/toolkit/modules/tests/browser/browser_CreditCard.js @@ -0,0 +1,53 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +const { CreditCard } = ChromeUtils.import( + "resource://gre/modules/CreditCard.jsm" +); +const { OSKeyStore } = ChromeUtils.import( + "resource://gre/modules/OSKeyStore.jsm" +); +const { OSKeyStoreTestUtils } = ChromeUtils.import( + "resource://testing-common/OSKeyStoreTestUtils.jsm" +); + +let oldGetters = {}; +let gFakeLoggedIn = true; + +add_task(function setup() { + OSKeyStoreTestUtils.setup(); + oldGetters.isLoggedIn = Object.getOwnPropertyDescriptor( + OSKeyStore, + "isLoggedIn" + ).get; + OSKeyStore.__defineGetter__("isLoggedIn", () => gFakeLoggedIn); + registerCleanupFunction(async () => { + OSKeyStore.__defineGetter__("isLoggedIn", oldGetters.isLoggedIn); + await OSKeyStoreTestUtils.cleanup(); + + // CreditCard.jsm, OSKeyStore.jsm, and OSKeyStoreTestUtils.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.OSKeyStore; + delete window.CreditCard; + delete window.OSKeyStoreTestUtils; + }); +}); + +add_task(async function test_getLabel_withOSKeyStore() { + ok( + OSKeyStore.isLoggedIn, + "Confirm that OSKeyStore is faked and thinks it is logged in" + ); + + const ccNumber = "4111111111111111"; + const encryptedNumber = await OSKeyStore.encrypt(ccNumber); + const decryptedNumber = await OSKeyStore.decrypt(encryptedNumber); + is(decryptedNumber, ccNumber, "Decrypted CC number should match original"); + + const name = "Foxkeh"; + const label = CreditCard.getLabel({ name: "Foxkeh", number: ccNumber }); + is(label, `**** 1111, ${name}`, "Label matches"); +}); |