<!DOCTYPE html>
<meta charset="utf-8">
<title>WebAuthn credential.get() Resident Key Passing Tests</title>
<meta name="timeout" content="long">
<link rel="help" href="hhttps://w3c.github.io/webauthn/#resident-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";

    // create a resident key credential
    var credPromise = createCredential({
        options: {
            publicKey: {
                authenticatorSelection: {
                    requireResidentKey: true,
                }
            }
        }
    });

    // empty allowCredential should find the requireResidentKey: true credential
    new GetCredentialsTest({path: "options.publicKey.allowCredentials", value: []})
        .addCredential(credPromise)
        .setIsResidentKeyTest(true)
        .runTest("empty allowCredentials");

    // undefined allowCredential should be equivalent to empty
    new GetCredentialsTest({path: "options.publicKey.allowCredentials", value: undefined})
        .addCredential(credPromise)
        .setIsResidentKeyTest(true)
        .runTest("undefined allowCredentials");
}, {
    // browsers may not allow resident key credential creation without uv
    protocol: "ctap2",
    hasResidentKey: true,
    hasUserVerification: true,
    isUserVerified: true,
});

/* JSHINT */
/* globals standardSetup, GetCredentialsTest, createCredential */
</script>
