<!DOCTYPE html> <meta charset="utf-8"> <title>WebAuthn navigator.credentials.create() extensions Tests</title> <meta name="timeout" content="long"> <link rel="author" title="Adam Powers" href="mailto:adam@fidoalliance.org"> <link rel="help" href="https://w3c.github.io/webauthn/#iface-credential"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/testdriver.js"></script> <script src="/resources/testdriver-vendor.js"></script> <script src=helpers.js></script> <body></body> <script> standardSetup(function() { "use strict"; var dummyExtension = { foo: true, bar: "yup" }; // bad extension values new CreateCredentialsTest("options.publicKey.extensions", "hi mom").runTest("Bad extensions: extensions is string", TypeError); // phony extensions var randomExtId = {}; randomExtId[createRandomString(64)] = dummyExtension; new CreateCredentialsTest("options.publicKey.extensions", {foo: JSON.stringify(randomExtId)}).runTest("extensions is a nonsensical JSON string"); // appid new CreateCredentialsTest("options.publicKey.extensions", {appid: ""}).runTest("empty appid in create request", "NotSupportedError"); new CreateCredentialsTest("options.publicKey.extensions", {appid: null}).runTest("null appid in create request", "NotSupportedError"); new CreateCredentialsTest("options.publicKey.extensions", {appid: "anything"}).runTest("appid in create request", "NotSupportedError"); promise_test(async t => { const credential = await createCredential({ options: { publicKey: { extensions: { prf: {}, }, }, }, }); assert_false(credential.getClientExtensionResults().prf.enabled); }, "navigator.credentials.create() with prf requested but no support in authenticator"); }); /* JSHINT */ /* globals standardSetup, CreateCredentialsTest, createRandomString */ </script>