tor-browser

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

signal-current-user-details.https.html (2941B)


      1 <!DOCTYPE html>
      2 <meta charset="utf-8">
      3 <title>Signal current user details tests</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 
     11 <body></body>
     12 <script>
     13  "use strict";
     14 
     15  const authenticatorOptions = {
     16    protocol: "ctap2_1",
     17    hasResidentKey: true,
     18    isUserVerified: true,
     19    hasUserVerification: true,
     20  };
     21 
     22  const userId = Uint8Array.from([1, 2, 3, 4]);
     23 
     24  function createDiscoverableCredential() {
     25    return createCredential({
     26      options: {
     27        publicKey: {
     28          authenticatorSelection: {
     29            residentKey: "required",
     30          },
     31          user: {
     32            id: userId,
     33            name: "reimu",
     34            displayName: "Reimu Hakurei",
     35          }
     36        },
     37      },
     38    });
     39  }
     40 
     41  virtualAuthenticatorPromiseTest(async t => {
     42    return promise_rejects_dom(t, "SecurityError", PublicKeyCredential.signalCurrentUserDetails({
     43      rpId: "umbrella-corporation.example.com",
     44      userId: base64urlEncode(userId),
     45      name: "marisa",
     46      displayName: "Marisa Kirisame",
     47    }));
     48  }, authenticatorOptions, "signalCurrentUserDetails fails with SecurityError for invalid RP IDs");
     49 
     50  virtualAuthenticatorPromiseTest(async t => {
     51    return promise_rejects_js(t, TypeError, PublicKeyCredential.signalCurrentUserDetails({
     52      rpId: window.location.hostname,
     53      userId: "not base 64 url",
     54      name: "marisa",
     55      displayName: "Marisa Kirisame",
     56    }));
     57  }, authenticatorOptions, "signalCurrentUserDetails fails with TypeError for invalid userId base64url");
     58 
     59  virtualAuthenticatorPromiseTest(async (t, authenticator) => {
     60    await createDiscoverableCredential();
     61    PublicKeyCredential.signalCurrentUserDetails({
     62      rpId: window.location.hostname,
     63      userId: base64urlEncode([5, 6, 7, 8]),
     64      name: "marisa",
     65      displayName: "Marisa Kirisame",
     66    });
     67    const credential = (await window.test_driver.get_credentials(authenticator))[0];
     68    assert_equals(credential.userName, "reimu");
     69    assert_equals(credential.userDisplayName, "Reimu Hakurei");
     70  }, authenticatorOptions, "signalCurrentUserDetails does not update a different user id");
     71 
     72  virtualAuthenticatorPromiseTest(async (t, authenticator) => {
     73    await createDiscoverableCredential();
     74    PublicKeyCredential.signalCurrentUserDetails({
     75      rpId: window.location.hostname,
     76      userId: base64urlEncode(userId),
     77      name: "marisa",
     78      displayName: "Marisa Kirisame",
     79    });
     80    const credential = (await window.test_driver.get_credentials(authenticator))[0];
     81    assert_equals(credential.userName, "marisa");
     82    assert_equals(credential.userDisplayName, "Marisa Kirisame");
     83  }, authenticatorOptions, "signalCurrentUserDetails updates a matching user id");
     84 </script>