65 lines
1.8 KiB
HTML
65 lines
1.8 KiB
HTML
<!DOCTYPE html>
|
|
<meta charset="utf-8">
|
|
<title>getClientCapabilities tests</title>
|
|
<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>
|
|
"use strict";
|
|
|
|
const KNOWN_CAPABILITIES_SET = new Set([
|
|
"conditionalCreate",
|
|
"conditionalGet",
|
|
"hybridTransport",
|
|
"passkeyPlatformAuthenticator",
|
|
"relatedOrigins",
|
|
"signalAllAcceptedCredentials",
|
|
"signalCurrentUserDetails",
|
|
"signalUnknownCredential",
|
|
"userVerifyingPlatformAuthenticator",
|
|
|
|
// Extensions implemented by the client
|
|
"extension:appid",
|
|
"extension:appidExclude",
|
|
"extension:hmacCreateSecret",
|
|
"extension:credentialProtectionPolicy",
|
|
"extension:enforceCredentialProtectionPolicy",
|
|
"extension:minPinLength",
|
|
"extension:credProps",
|
|
"extension:largeBlob",
|
|
"extension:credBlob",
|
|
"extension:getCredBlob",
|
|
"extension:payment",
|
|
"extension:prf",
|
|
]);
|
|
|
|
promise_test(async t => {
|
|
const capabilities = await PublicKeyCredential.getClientCapabilities();
|
|
|
|
const keys = Object.keys(capabilities);
|
|
const sortedKeys = [...keys].sort();
|
|
assert_array_equals(keys, sortedKeys, "Keys should be sorted lexicographically");
|
|
|
|
for (const key of keys) {
|
|
assert_equals(
|
|
typeof capabilities[key],
|
|
"boolean",
|
|
`Value for "${key}" should be boolean`
|
|
);
|
|
}
|
|
}, "Capabilities object has sorted keys and boolean values");
|
|
|
|
promise_test(async t => {
|
|
const capabilities = await PublicKeyCredential.getClientCapabilities();
|
|
|
|
for (const key of Object.keys(capabilities)) {
|
|
assert_true(
|
|
KNOWN_CAPABILITIES_SET.has(key),
|
|
`Capability "${key}" should be a known capability`
|
|
);
|
|
}
|
|
}, "Capabilities keys are known");
|
|
</script>
|