mirror of
https://github.com/servo/servo.git
synced 2025-07-03 13:33:39 +01:00
75 lines
No EOL
5.7 KiB
HTML
75 lines
No EOL
5.7 KiB
HTML
<!DOCTYPE html>
|
|
<meta charset="utf-8">
|
|
<title>WebAuthn navigator.credentials.create() authenticator selection Tests</title>
|
|
<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=helpers.js></script>
|
|
<body></body>
|
|
<script>
|
|
standardSetup(function() {
|
|
"use strict";
|
|
|
|
var defaultAuthnrSel = {
|
|
authenticatorAttachment: "cross-platform",
|
|
requireResidentKey: false,
|
|
userVerification: "preferred"
|
|
};
|
|
// attachment
|
|
var authnrSelAttachPlatform = cloneObject(defaultAuthnrSel);
|
|
authnrSelAttachPlatform.authenticatorAttachment = "platform";
|
|
var authnrSelBadAttachEmptyStr = cloneObject(defaultAuthnrSel);
|
|
authnrSelBadAttachEmptyStr.authenticatorAttachment = "";
|
|
var authnrSelBadAttachEmptyObj = cloneObject(defaultAuthnrSel);
|
|
authnrSelBadAttachEmptyObj.authenticatorAttachment = {};
|
|
var authnrSelBadAttachNull = cloneObject(defaultAuthnrSel);
|
|
authnrSelBadAttachNull.authenticatorAttachment = null;
|
|
// resident key
|
|
var authnrSelRkTrue = cloneObject(defaultAuthnrSel);
|
|
authnrSelRkTrue.requireResidentKey = true;
|
|
var authnrSelRkBadString = cloneObject(defaultAuthnrSel);
|
|
authnrSelRkBadString.requireResidentKey = "foo";
|
|
// user verification
|
|
var authnrSelUvRequired = cloneObject(defaultAuthnrSel);
|
|
authnrSelUvRequired.userVerification = "required";
|
|
var authnrSelBadUvEmptyStr = cloneObject(defaultAuthnrSel);
|
|
authnrSelBadUvEmptyStr.userVerification = "";
|
|
var authnrSelBadUvEmptyObj = cloneObject(defaultAuthnrSel);
|
|
authnrSelBadUvEmptyObj.userVerification = {};
|
|
var authnrSelBadUvStr = cloneObject(defaultAuthnrSel);
|
|
authnrSelBadUvStr.userVerification = "requiredshirtshoestshirt";
|
|
var authnrSelBadUvNull = cloneObject(defaultAuthnrSel);
|
|
authnrSelBadUvNull.userVerification = null;
|
|
|
|
// authenticatorSelection bad values
|
|
new CreateCredentialsTest("options.publicKey.authenticatorSelection", []).runTest("Bad AuthenticatorSelectionCriteria: authenticatorSelection is empty array", new TypeError());
|
|
new CreateCredentialsTest("options.publicKey.authenticatorSelection", null).runTest("Bad AuthenticatorSelectionCriteria: authenticatorSelection is null", new TypeError());
|
|
new CreateCredentialsTest("options.publicKey.authenticatorSelection", "").runTest("Bad AuthenticatorSelectionCriteria: authenticatorSelection is empty string", new TypeError());
|
|
new CreateCredentialsTest("options.publicKey.authenticatorSelection", "none").runTest("Bad AuthenticatorSelectionCriteria: authenticatorSelection is string", new TypeError());
|
|
|
|
// authenticatorSelection bad attachment values
|
|
new CreateCredentialsTest("options.publicKey.authenticatorSelection", authnrSelBadAttachEmptyStr).runTest("Bad AuthenticatorSelectionCriteria: authenticatorSelection attachment is empty string", new TypeError());
|
|
new CreateCredentialsTest("options.publicKey.authenticatorSelection", authnrSelBadAttachEmptyObj).runTest("Bad AuthenticatorSelectionCriteria: authenticatorSelection attachment is empty object", new TypeError());
|
|
new CreateCredentialsTest("options.publicKey.authenticatorSelection", authnrSelBadAttachNull).runTest("Bad AuthenticatorSelectionCriteria: authenticatorSelection attachment is null", new TypeError());
|
|
// XXX: assumes authnr is behaving like most U2F authnrs; really depends on the authnr or mock configuration
|
|
new CreateCredentialsTest("options.publicKey.authenticatorSelection", authnrSelAttachPlatform).runTest("Bad AuthenticatorSelectionCriteria: authenticatorSelection attachment platform", "NotAllowedError");
|
|
|
|
// authenticatorSelection bad requireResidentKey values
|
|
// XXX: assumes authnr is behaving like most U2F authnrs; really depends on the authnr or mock configuration
|
|
new CreateCredentialsTest("options.publicKey.authenticatorSelection", authnrSelRkTrue).runTest("Bad AuthenticatorSelectionCriteria: authenticatorSelection residentKey true", "NotAllowedError");
|
|
new CreateCredentialsTest("options.publicKey.authenticatorSelection", authnrSelRkBadString).runTest("Bad AuthenticatorSelectionCriteria: authenticatorSelection residentKey is string", new TypeError());
|
|
// TODO: not sure if rk is "boolean" or "truthy"; add test cases if it should only accept boolean values
|
|
|
|
// authenticatorSelection bad userVerification values
|
|
new CreateCredentialsTest("options.publicKey.authenticatorSelection", authnrSelBadUvEmptyStr).runTest("Bad AuthenticatorSelectionCriteria: authenticatorSelection userVerification empty string", new TypeError());
|
|
new CreateCredentialsTest("options.publicKey.authenticatorSelection", authnrSelBadUvEmptyObj).runTest("Bad AuthenticatorSelectionCriteria: authenticatorSelection userVerification empty object", new TypeError());
|
|
new CreateCredentialsTest("options.publicKey.authenticatorSelection", authnrSelBadUvStr).runTest("Bad AuthenticatorSelectionCriteria: authenticatorSelection userVerification bad value", new TypeError());
|
|
new CreateCredentialsTest("options.publicKey.authenticatorSelection", authnrSelBadUvNull).runTest("Bad AuthenticatorSelectionCriteria: authenticatorSelection userVerification null", new TypeError());
|
|
// XXX: assumes this is a mock authenticator the properly reports that it is not doing userVerfication
|
|
new CreateCredentialsTest("options.publicKey.authenticatorSelection", authnrSelUvRequired).runTest("Bad AuthenticatorSelectionCriteria: authenticatorSelection userVerification required", "NotAllowedError");
|
|
});
|
|
|
|
/* JSHINT */
|
|
/* globals standardSetup, CreateCredentialsTest, cloneObject */
|
|
</script> |