tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

createcredential-large-blob-supported.https.html (2930B)


      1 <!DOCTYPE html>
      2 <meta charset="utf-8">
      3 <title>navigator.credentials.create() largeBlob extension tests with authenticator support</title>
      4 <meta name="timeout" content="long">
      5 <script src="/resources/testharness.js"></script>
      6 <script src="/resources/testharnessreport.js"></script>
      7 <script src="/resources/testdriver.js"></script>
      8 <script src="/resources/testdriver-vendor.js"></script>
      9 <script src=helpers.js></script>
     10 <body></body>
     11 <script>
     12 standardSetup(function() {
     13  "use strict";
     14 
     15  promise_test(async t => {
     16    const credential = await createCredential({
     17      options: {
     18        publicKey: {
     19          authenticatorSelection: {
     20            requireResidentKey: true,
     21          },
     22          extensions: {
     23            largeBlob: {
     24              support: "preferred",
     25            },
     26          },
     27        },
     28      },
     29    });
     30    assert_own_property(credential.getClientExtensionResults(), "largeBlob");
     31    assert_true(credential.getClientExtensionResults().largeBlob.supported);
     32    assert_not_own_property(credential.getClientExtensionResults().largeBlob, "blob");
     33    assert_not_own_property(credential.getClientExtensionResults().largeBlob, "written");
     34  }, "navigator.credentials.create() with largeBlob.support set to preferred and supported by authenticator");
     35 
     36  promise_test(async t => {
     37    const credential = await createCredential({
     38      options: {
     39        publicKey: {
     40          authenticatorSelection: {
     41            requireResidentKey: true,
     42          },
     43          extensions: {
     44            largeBlob: {},
     45          },
     46        },
     47      },
     48    });
     49    assert_own_property(credential.getClientExtensionResults(), "largeBlob");
     50    assert_true(credential.getClientExtensionResults().largeBlob.supported);
     51    assert_not_own_property(credential.getClientExtensionResults().largeBlob, "blob");
     52    assert_not_own_property(credential.getClientExtensionResults().largeBlob, "written");
     53  }, "navigator.credentials.create() with largeBlob.support not set and supported by authenticator");
     54 
     55  promise_test(async t => {
     56    const credential = await createCredential({
     57      options: {
     58        publicKey: {
     59          authenticatorSelection: {
     60            requireResidentKey: true,
     61          },
     62          extensions: {
     63            largeBlob: {
     64              support: "required"
     65            },
     66          },
     67        },
     68      },
     69    });
     70    assert_own_property(credential.getClientExtensionResults(), "largeBlob");
     71    assert_true(credential.getClientExtensionResults().largeBlob.supported);
     72    assert_not_own_property(credential.getClientExtensionResults().largeBlob, "blob");
     73    assert_not_own_property(credential.getClientExtensionResults().largeBlob, "written");
     74  }, "navigator.credentials.create() with largeBlob.support set to required and supported by authenticator");
     75 }, {
     76  protocol: "ctap2_1",
     77  hasResidentKey: true,
     78  hasUserVerification: true,
     79  isUserVerified: true,
     80  extensions: ["largeBlob"],
     81 });
     82 </script>