80 lines
2.9 KiB
HTML
80 lines
2.9 KiB
HTML
<!DOCTYPE html>
|
|
<meta charset="utf-8">
|
|
<title>WebAuthn navigator.credentials.get() 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 credPromise = createCredential();
|
|
var dummyExtension = {
|
|
foo: true,
|
|
bar: "yup"
|
|
};
|
|
var badExtId = {};
|
|
badExtId[createRandomString(65)] = dummyExtension;
|
|
|
|
// bad extension values
|
|
new GetCredentialsTest("options.publicKey.extensions", "hi mom")
|
|
.addCredential(credPromise)
|
|
.runTest("Bad extensions: extensions is string", TypeError);
|
|
|
|
// empty extensions
|
|
new GetCredentialsTest("options.publicKey.extensions", null)
|
|
.addCredential(credPromise)
|
|
.runTest("extensions is null");
|
|
new GetCredentialsTest("options.publicKey.extensions", [])
|
|
.addCredential(credPromise)
|
|
.runTest("extensions is empty Array");
|
|
new GetCredentialsTest("options.publicKey.extensions", new ArrayBuffer(0))
|
|
.addCredential(credPromise)
|
|
.runTest("extensions is empty ArrayBuffer");
|
|
|
|
// unknown extensions should be ignored
|
|
new GetCredentialsTest("options.publicKey.extensions", {foo: dummyExtension})
|
|
.addCredential(credPromise)
|
|
.runTest("ignored extension");
|
|
new GetCredentialsTest("options.publicKey.extensions", {badExtId: dummyExtension})
|
|
.addCredential(credPromise)
|
|
.runTest("extension ID too long");
|
|
|
|
new GetCredentialsTest("options.publicKey.extensions", {credProps: true})
|
|
.addCredential(credPromise)
|
|
.runTest("credProps is only supported at registration", "NotSupportedError");
|
|
|
|
new GetCredentialsTest("options.publicKey.extensions", {payment: {isPayment:true}})
|
|
.addCredential(credPromise)
|
|
.runTest("Payment extension is only supported at registration", "NotAllowedError");
|
|
|
|
promise_test(async t => {
|
|
const id = (await credPromise).rawId;
|
|
const assertion = await navigator.credentials.get({publicKey: {
|
|
challenge: new Uint8Array(),
|
|
allowCredentials: [{
|
|
id: id,
|
|
type: "public-key",
|
|
}],
|
|
extensions: {
|
|
prf: {
|
|
eval: {
|
|
first: new Uint8Array([1,2,3,4]).buffer,
|
|
},
|
|
},
|
|
},
|
|
}});
|
|
|
|
assert_not_own_property(assertion.getClientExtensionResults().prf, 'results');
|
|
}, "navigator.credentials.get() with prf requested but no support in authenticator");
|
|
});
|
|
|
|
/* JSHINT */
|
|
/* globals standardSetup, GetCredentialsTest, createRandomString, createCredential */
|
|
</script>
|