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>