blob: 7024638a127dcd8e579083813c031e048b0fbeb5 [file] [log] [blame]
<!DOCTYPE html>
<title>Federated Credential Management logout() API.</title>
<link rel="help" href="https://wicg.github.io/FedCM">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<body>
<script>
const url_prefix = 'https://{{host}}:{{ports[https][0]}}/credential-management/support/';
const test_options = {
federated: {
providers: [{
url: url_prefix,
clientId: '1',
// hint has to match the account id in support/accounts.json
hint: '1234',
}]
}
};
const test_options_no_hint = {
federated: {
providers: [{
url: url_prefix,
clientId: '1',
}]
}
};
const login_options = {
nonce: '2',
};
async function set_cookie() {
// Wait for the identity provider's cookie to be installed.
await new Promise(resolve => {
const img = document.createElement('img');
img.addEventListener('error', resolve);
img.src = url_prefix + 'set_cookie';
document.body.appendChild(img);
});
}
promise_test(async t => {
await set_cookie();
const cred = await navigator.credentials.get(test_options);
const token = await cred.login(login_options);
assert_equals(token.idToken, "token");
await cred.logout();
}, "logout should not throw an exception.");
promise_test(async t => {
const cred = await navigator.credentials.get(test_options);
return promise_rejects_dom(t, "InvalidStateError", cred.logout());
}, "logout should throw an exception when not logged in.");
promise_test(async t => {
await set_cookie();
const cred = await navigator.credentials.get(test_options_no_hint);
const token = await cred.login(login_options);
assert_equals(token.idToken, "token");
return promise_rejects_dom(t, "InvalidStateError", cred.logout());
}, "logout should require a hint.");
</script>