summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/webauthn/createcredential-pubkeycredparams.https.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/webauthn/createcredential-pubkeycredparams.https.html')
-rw-r--r--testing/web-platform/tests/webauthn/createcredential-pubkeycredparams.https.html73
1 files changed, 73 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webauthn/createcredential-pubkeycredparams.https.html b/testing/web-platform/tests/webauthn/createcredential-pubkeycredparams.https.html
new file mode 100644
index 0000000000..d1df7952d6
--- /dev/null
+++ b/testing/web-platform/tests/webauthn/createcredential-pubkeycredparams.https.html
@@ -0,0 +1,73 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>WebAuthn navigator.credentials.create() pubKeyCredParams 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 badType = {
+ type: "something-else",
+ alg: cose_alg_ECDSA_w_SHA512
+ };
+ var badTypeEmptyString = cloneObject(badType);
+ badTypeEmptyString.type = "";
+ var badTypeNull = cloneObject(badType);
+ badTypeNull.type = null;
+ var badTypeEmptyObj = cloneObject(badType);
+ badTypeEmptyObj.type = {};
+
+ var badAlg = {
+ type: "public-key",
+ alg: 42
+ };
+ var badAlgZero = cloneObject(badAlg);
+ badAlgZero.alg = 0;
+
+ // bad pubKeyCredParams values
+ new CreateCredentialsTest({path: "options.publicKey.pubKeyCredParams", value: undefined}).runTest("Bad pubKeyCredParams: pubKeyCredParams is undefined", TypeError);
+ new CreateCredentialsTest("options.publicKey.pubKeyCredParams", "hi mom").runTest("Bad pubKeyCredParams: pubKeyCredParams is string", TypeError);
+ new CreateCredentialsTest("options.publicKey.pubKeyCredParams", null).runTest("Bad pubKeyCredParams: pubKeyCredParams is null", TypeError);
+ new CreateCredentialsTest("options.publicKey.pubKeyCredParams", [badType]).runTest("Bad pubKeyCredParams: first param has bad type (\"something-else\")", TypeError);
+ new CreateCredentialsTest("options.publicKey.pubKeyCredParams", [badTypeEmptyString]).runTest("Bad pubKeyCredParams: first param has bad type (\"\")", TypeError);
+ new CreateCredentialsTest("options.publicKey.pubKeyCredParams", [badTypeNull]).runTest("Bad pubKeyCredParams: first param has bad type (null)", TypeError);
+ new CreateCredentialsTest("options.publicKey.pubKeyCredParams", [badTypeEmptyObj]).runTest("Bad pubKeyCredParams: first param has bad type (empty object)", TypeError);
+ new CreateCredentialsTest("options.publicKey.pubKeyCredParams", [badAlg])
+ .modify("options.publicKey.timeout", 300)
+ .runTest("Bad pubKeyCredParams: first param has bad alg (42)", "NotAllowedError");
+ new CreateCredentialsTest("options.publicKey.pubKeyCredParams", [badAlgZero])
+ .modify("options.publicKey.timeout", 300)
+ .runTest("Bad pubKeyCredParams: first param has bad alg (0)", "NotAllowedError");
+
+ // TODO: come back to this when mock authenticators support multiple cryptos so that we can test the preference ranking
+ // function verifyEC256(res) {
+ // debug ("verifyEC256 got", res);
+ // debug ("client data JSON", ab2str(res.response.clientDataJSON));
+ // parseAuthenticatorData(res.response.attestationObject);
+ // }
+ // new CreateCredentialsTest("options.publicKey.pubKeyCredParams", [pkParamEC256, pkParamEC512])
+ // .afterTest(verifyEC256)
+ // .runTest("EC256, EC512 pubKeyCredParams");
+ // function verifyEC512(res) {
+ // debug ("verifyEC512 got", res);
+ // debug ("client data JSON", ab2str(res.response.clientDataJSON));
+ // // parseAuthenticatorData(res.response.attestationObject);
+ // printHex ("clientDataJSON", res.response.clientDataJSON);
+ // printHex ("attestationObject", res.response.attestationObject);
+ // }
+ // new CreateCredentialsTest("options.publicKey.pubKeyCredParams", [pkParamEC512, pkParamEC256])
+ // .afterTest(verifyEC512)
+ // .runTest("EC512, EC256 pubKeyCredParams");
+});
+
+/* JSHINT */
+/* globals standardSetup, CreateCredentialsTest, cose_alg_ECDSA_w_SHA512, cloneObject */
+</script>