| <!DOCTYPE html> | |
| <meta charset="utf-8"> | |
| <title>FederatedCredential.revoke() promise resolution</title> | |
| <link rel="author" title="Christian Biesinger" href="mailto:cbiesinger@chromium.org"> | |
| <link rel="help" href="https://wicg.github.io/FedCM/#browser-api-revocation"> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script type="module"> | |
| import {fedcm_test} from './support/fedcm-helper.js'; | |
| async function getCredential(provider_url) { | |
| const provider = { | |
| url: provider_url || "https://idp.example/", | |
| clientId: "1234", | |
| }; | |
| return await navigator.credentials.get({ | |
| federated: { | |
| providers: [provider], | |
| }, | |
| }); | |
| } | |
| fedcm_test(async (t, mock) => { | |
| mock.revokeReturn("kSuccess"); | |
| await (await getCredential()).revoke("foo@bar.com"); | |
| }, "Successfully revoking a token should resolve the promise."); | |
| fedcm_test(async (t, mock) => { | |
| mock.revokeReturn("kError"); | |
| const result = (await getCredential()).revoke("foo@bar.com"); | |
| return promise_rejects_dom(t, "NetworkError", result); | |
| }, "Error should reject the promise."); | |
| fedcm_test(async (t, mock) => { | |
| mock.revokeReturn("kError"); | |
| const result = (await getCredential()).revoke(""); | |
| return promise_rejects_dom(t, "InvalidStateError", result); | |
| }, "Empty hint should reject the promise."); | |
| fedcm_test(async (t, mock) => { | |
| const result = getCredential("https://other-idp.example/").then((c) => c.revoke("foo@bar.com")); | |
| return promise_rejects_dom(t, "NetworkError", result); | |
| }, "Provider URL should honor Content-Security-Policy."); | |
| </script> |