https://github.com/web-platform-tests/wpt
Raw File
Tip revision: 6668ff3716086d3f8efead0f5db2d8d2864c3563 authored by Robert Ma on 21 March 2018, 17:35:46 UTC
Fix resources/test (when running locally)
Tip revision: 6668ff3
getcredential-timeout.https.html
<!DOCTYPE html>
<meta charset="utf-8">
<title>WebAuthn navigator.credentials.get() timeout 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 credPromise = createCredential();

    // bad timeout values
    // TODO: there is some debate as to whether MAX_UNSIGNED_LONG + 1 and / or -1 should be disallowed since they get converted to valid values internally
    // new GetCredentialsTest({path: "options.publicKey.timeout", value: -1})
    //     .addCredential(credPromise)
    //     .runTest("Bad timeout: negative", new TypeError());
    // new GetCredentialsTest({path: "options.publicKey.timeout", value: 4294967295 + 1})
    //     .addCredential(credPromise)
    //     .runTest("Bad timeout: too big", new TypeError());

    // timeout test
    // XXX: this probably always passes with most mock authenticators unless
    // some setup happens right here to make sure they don't return a credential
    // right away. So... uhh... I guess test this with a real authenticator if you
    // want to see if it really works.
    var timer;
    function startTimer() {
        timer = setTimeout(() => {
            throw new Error("Timer went off before timeout");
        }, 1000);
    }
    function stopTimer() {
        clearTimeout(timer);
    }
    new GetCredentialsTest({path: "options.publicKey.timeout", value: 1})
        .addCredential(credPromise)
        .beforeTest(startTimer)
        .afterTest(stopTimer)
        .runTest("ensure create credential times out");
    // TODO: createCredential.timeout > 1s && setTimeout < 1s
    // TODO: createCredential.timeout < 5s && setTimeout > 5s
});

/* JSHINT */
/* globals standardSetup, GetCredentialsTest, createCredential */
</script>
back to top