diff options
Diffstat (limited to 'toolkit/components/aboutwebauthn/tests/browser/browser_aboutwebauthn_info.js')
-rw-r--r-- | toolkit/components/aboutwebauthn/tests/browser/browser_aboutwebauthn_info.js | 218 |
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, +}; |