| <!DOCTYPE html> |
| <meta charset="utf-8"> |
| <title>WebAuthn navigator.credentials.create() 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"; |
| |
| // 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 CreateCredentialsTest({path: "options.publicKey.timeout", value: -1}).runTest("Bad timeout: negative", new TypeError()); |
| // new CreateCredentialsTest({path: "options.publicKey.timeout", value: 4294967295 + 1}).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. |
| promise_test(() => { |
| return new Promise((resolve, reject) => { |
| var args = { |
| options: { |
| publicKey: { |
| timeout: 1 |
| } |
| } |
| }; |
| |
| setTimeout(() => { |
| reject(new Error ("timed out")); |
| }, 1000); |
| |
| createCredential(args).then((res) => { |
| resolve(res); |
| }); |
| }); |
| }, "ensure create credential times out"); |
| // TODO: createCredential.timeout > 1s && setTimeout < 1s |
| // TODO: createCredential.timeout < 5s && setTimeout > 5s |
| }); |
| |
| /* JSHINT */ |
| /* globals standardSetup, CreateCredentialsTest, createCredential, promise_test */ |
| </script> |