| <!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> |