summaryrefslogtreecommitdiffstats
path: root/toolkit/components/aboutwebauthn/tests/browser/browser_aboutwebauthn_info.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/aboutwebauthn/tests/browser/browser_aboutwebauthn_info.js')
-rw-r--r--toolkit/components/aboutwebauthn/tests/browser/browser_aboutwebauthn_info.js218
1 files changed, 218 insertions, 0 deletions
diff --git a/toolkit/components/aboutwebauthn/tests/browser/browser_aboutwebauthn_info.js b/toolkit/components/aboutwebauthn/tests/browser/browser_aboutwebauthn_info.js
new file mode 100644
index 0000000000..f66f5929fc
--- /dev/null
+++ b/toolkit/components/aboutwebauthn/tests/browser/browser_aboutwebauthn_info.js
@@ -0,0 +1,218 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+var doc, tab;
+
+add_setup(async function () {
+ info("Starting about:webauthn");
+ tab = await BrowserTestUtils.openNewForegroundTab({
+ gBrowser,
+ opening: "about:webauthn",
+ waitForLoad: true,
+ });
+
+ doc = tab.linkedBrowser.contentDocument;
+});
+
+registerCleanupFunction(async function () {
+ // Close tab.
+ await BrowserTestUtils.removeTab(tab);
+});
+
+function send_auth_data_and_check(auth_data) {
+ Services.obs.notifyObservers(
+ null,
+ "about-webauthn-prompt",
+ JSON.stringify({ type: "selected-device", auth_info: auth_data })
+ );
+
+ let info_text = doc.getElementById("info-text-div");
+ is(info_text.hidden, true, "Start prompt not hidden");
+
+ let info_section = doc.getElementById("token-info-section");
+ isnot(info_section.style.display, "none", "Info section hidden");
+}
+
+add_task(async function multiple_devices() {
+ Services.obs.notifyObservers(
+ null,
+ "about-webauthn-prompt",
+ JSON.stringify({ type: "select-device" })
+ );
+
+ let info_text = doc.getElementById("info-text-div");
+ is(info_text.hidden, false, "Start prompt hidden");
+ let field = doc.getElementById("info-text-field");
+ is(
+ field.getAttribute("data-l10n-id"),
+ "about-webauthn-text-select-device",
+ "Field does not prompt user to touch device for selection"
+ );
+});
+
+add_task(async function multiple_devices() {
+ send_auth_data_and_check(REAL_AUTH_INFO_1);
+ reset_about_page(doc);
+ send_auth_data_and_check(REAL_AUTH_INFO_2);
+ reset_about_page(doc);
+ send_auth_data_and_check(REAL_AUTH_INFO_3);
+ reset_about_page(doc);
+});
+
+// Yubikey BIO
+const REAL_AUTH_INFO_1 = {
+ versions: ["U2F_V2", "FIDO_2_0", "FIDO_2_1_PRE", "FIDO_2_1"],
+ extensions: [
+ "credProtect",
+ "hmac-secret",
+ "largeBlobKey",
+ "credBlob",
+ "minPinLength",
+ ],
+ aaguid: [
+ 216, 82, 45, 159, 87, 91, 72, 102, 136, 169, 186, 153, 250, 2, 243, 91,
+ ],
+ options: {
+ plat: false,
+ rk: true,
+ clientPin: true,
+ up: true,
+ uv: true,
+ pinUvAuthToken: true,
+ noMcGaPermissionsWithClientPin: null,
+ largeBlobs: true,
+ ep: null,
+ bioEnroll: true,
+ userVerificationMgmtPreview: true,
+ uvBioEnroll: null,
+ authnrCfg: true,
+ uvAcfg: null,
+ credMgmt: true,
+ credentialMgmtPreview: true,
+ setMinPINLength: true,
+ makeCredUvNotRqd: true,
+ alwaysUv: false,
+ },
+ max_msg_size: 1200,
+ pin_protocols: [2, 1],
+ max_credential_count_in_list: 8,
+ max_credential_id_length: 128,
+ transports: ["usb"],
+ algorithms: [
+ { alg: -7, type: "public-key" },
+ { alg: -8, type: "public-key" },
+ ],
+ max_ser_large_blob_array: 1024,
+ force_pin_change: false,
+ min_pin_length: 4,
+ firmware_version: 328966,
+ max_cred_blob_length: 32,
+ max_rpids_for_set_min_pin_length: 1,
+ preferred_platform_uv_attempts: 3,
+ uv_modality: 2,
+ certifications: null,
+ remaining_discoverable_credentials: 20,
+ vendor_prototype_config_commands: null,
+};
+
+// Yubikey 5
+const REAL_AUTH_INFO_2 = {
+ versions: ["U2F_V2", "FIDO_2_0", "FIDO_2_1_PRE"],
+ extensions: ["credProtect", "hmac-secret"],
+ aaguid: [
+ 47, 192, 87, 159, 129, 19, 71, 234, 177, 22, 187, 90, 141, 185, 32, 42,
+ ],
+ options: {
+ plat: false,
+ rk: true,
+ clientPin: true,
+ up: true,
+ uv: null,
+ pinUvAuthToken: null,
+ noMcGaPermissionsWithClientPin: null,
+ largeBlobs: null,
+ ep: null,
+ bioEnroll: null,
+ userVerificationMgmtPreview: null,
+ uvBioEnroll: null,
+ authnrCfg: null,
+ uvAcfg: null,
+ credMgmt: null,
+ credentialMgmtPreview: true,
+ setMinPINLength: null,
+ makeCredUvNotRqd: null,
+ alwaysUv: null,
+ },
+ max_msg_size: 1200,
+ pin_protocols: [1],
+ max_credential_count_in_list: 8,
+ max_credential_id_length: 128,
+ transports: ["nfc", "usb"],
+ algorithms: [
+ { alg: -7, type: "public-key" },
+ { alg: -8, type: "public-key" },
+ ],
+ max_ser_large_blob_array: null,
+ force_pin_change: null,
+ min_pin_length: null,
+ firmware_version: null,
+ max_cred_blob_length: null,
+ max_rpids_for_set_min_pin_length: null,
+ preferred_platform_uv_attempts: null,
+ uv_modality: null,
+ certifications: null,
+ remaining_discoverable_credentials: null,
+ vendor_prototype_config_commands: null,
+};
+
+// Nitrokey 3
+const REAL_AUTH_INFO_3 = {
+ versions: ["U2F_V2", "FIDO_2_0", "FIDO_2_1_PRE"],
+ extensions: ["credProtect", "hmac-secret"],
+ aaguid: [
+ 47, 192, 87, 159, 129, 19, 71, 234, 177, 22, 187, 90, 141, 185, 32, 42,
+ ],
+ options: {
+ plat: false,
+ rk: true,
+ clientPin: true,
+ up: true,
+ uv: null,
+ pinUvAuthToken: null,
+ noMcGaPermissionsWithClientPin: null,
+ largeBlobs: null,
+ ep: null,
+ bioEnroll: null,
+ userVerificationMgmtPreview: null,
+ uvBioEnroll: null,
+ authnrCfg: null,
+ uvAcfg: null,
+ credMgmt: null,
+ credentialMgmtPreview: true,
+ setMinPINLength: null,
+ makeCredUvNotRqd: null,
+ alwaysUv: null,
+ },
+ max_msg_size: 1200,
+ pin_protocols: [1],
+ max_credential_count_in_list: 8,
+ max_credential_id_length: 128,
+ transports: ["nfc", "usb"],
+ algorithms: [
+ { alg: -7, type: "public-key" },
+ { alg: -8, type: "public-key" },
+ ],
+ max_ser_large_blob_array: null,
+ force_pin_change: null,
+ min_pin_length: null,
+ firmware_version: null,
+ max_cred_blob_length: null,
+ max_rpids_for_set_min_pin_length: null,
+ preferred_platform_uv_attempts: null,
+ uv_modality: null,
+ certifications: null,
+ remaining_discoverable_credentials: null,
+ vendor_prototype_config_commands: null,
+};