111 lines
5.9 KiB
HTML
111 lines
5.9 KiB
HTML
<!doctype html>
|
|
<head>
|
|
<title>Test discovery of 'identity' credentials</title>
|
|
</head>
|
|
<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="support/lfedcm-helpers.js"></script>
|
|
<script type="module">
|
|
'use strict';
|
|
|
|
import {fedcm_select_account_promise} from './support/fedcm-helper.sub.js';
|
|
|
|
promise_test(async t => {
|
|
let getCredentialPromise, credentialGotten;
|
|
|
|
await test_driver.bless();
|
|
getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: "https://{{hosts[alt][]}}:{{ports[https][0]}}/", loginURL : `https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&origin=${encodeURIComponent("https://{{hosts[][]}}:{{ports[https][0]}}/")}&close=true`, loginTarget : "popup"}]}});
|
|
credentialGotten = await getCredentialPromise;
|
|
fedcm_select_account_promise(t, 0);
|
|
assert_not_equals(credentialGotten, null, "A discovered credential is returned from the CredentialContainer.");
|
|
|
|
await clearLightweightCredential("https://{{hosts[alt][]}}:{{ports[https][0]}}", "wpt-pick-me");
|
|
}, "Cross-origin identity credential discovery works");
|
|
|
|
promise_test(async t => {
|
|
let getCredentialPromise, credentialGotten;
|
|
|
|
await test_driver.bless();
|
|
getCredentialPromise = navigator.credentials.get({identity: {providers: [{loginURL : `https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&origin=${encodeURIComponent("https://{{hosts[][]}}:{{ports[https][0]}}/")}&close=true`, loginTarget : "popup"}]}});
|
|
fedcm_select_account_promise(t, 0);
|
|
credentialGotten = await getCredentialPromise;
|
|
assert_not_equals(credentialGotten, null, "A discovered credential is returned from the CredentialContainer.");
|
|
|
|
await clearLightweightCredential("https://{{hosts[alt][]}}:{{ports[https][0]}}", "wpt-pick-me");
|
|
}, "Origin inferred from loginURL for discovery");
|
|
|
|
promise_test(async t => {
|
|
let getCredentialPromise, credentialGotten;
|
|
|
|
await test_driver.bless();
|
|
getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: "https://{{hosts[alt][]}}:{{ports[https][0]}}/", loginURL : `https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&url=cors&close=true`, loginTarget : "popup", effectiveQueryURL: "https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/acao-cors.py"}]}});
|
|
fedcm_select_account_promise(t, 0);
|
|
credentialGotten = await getCredentialPromise;
|
|
assert_not_equals(credentialGotten, null, "A discovered credential is returned from the CredentialContainer.");
|
|
|
|
await clearLightweightCredential("https://{{hosts[alt][]}}:{{ports[https][0]}}", "wpt-pick-me");
|
|
}, "Cross-origin identity credential discovery works using the effectiveQueryURL");
|
|
|
|
promise_test(async t => {
|
|
let getCredentialPromise, credentialGotten;
|
|
|
|
let createdPromise = new Promise((resolve) => {
|
|
window.addEventListener(
|
|
"message",
|
|
(event) => {
|
|
if (event.data == "created") {
|
|
resolve();
|
|
}
|
|
}
|
|
);
|
|
});
|
|
|
|
await test_driver.bless();
|
|
let state = "pending";
|
|
getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: "https://{{hosts[alt][]}}:{{ports[https][0]}}/", loginURL : `https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&postMessage&origin=${encodeURIComponent("https://{{hosts[alt][]}}:{{ports[https][0]}}/")}&close=true`, loginTarget : "popup"}]}});
|
|
getCredentialPromise.finally(() => {state = "fulfilled"});
|
|
await createdPromise;
|
|
assert_equals(state, "pending", "promise is not fulfilled during discovery window by get.");
|
|
|
|
window.open(`https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&origin=${encodeURIComponent("https://{{hosts[][]}}:{{ports[https][0]}}/")}&close=true`);
|
|
fedcm_select_account_promise(t, 0);
|
|
credentialGotten = await getCredentialPromise;
|
|
|
|
assert_not_equals(credentialGotten, null, "Resolved with credential because the credential was stored.");
|
|
|
|
await clearLightweightCredential("https://{{hosts[alt][]}}:{{ports[https][0]}}", "wpt-pick-me");
|
|
}, "Cross-origin identity credential discovery does not resolve with ineffective store from the right origin");
|
|
|
|
|
|
promise_test(async t => {
|
|
let getCredentialPromise, credentialGotten;
|
|
|
|
let createdPromise = new Promise((resolve) => {
|
|
window.addEventListener(
|
|
"message",
|
|
(event) => {
|
|
if (event.data == "created") {
|
|
resolve();
|
|
}
|
|
}
|
|
);
|
|
});
|
|
|
|
await test_driver.bless();
|
|
let state = "pending";
|
|
getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: "https://{{hosts[alt][]}}:{{ports[https][0]}}/", loginURL : `https://{{hosts[alt][www]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&postMessage&origin=${encodeURIComponent("https://{{hosts[][]}}:{{ports[https][0]}}/")}&close=true`, loginTarget : "popup"}]}});
|
|
getCredentialPromise.finally(() => {state = "fulfilled"});
|
|
await createdPromise;
|
|
assert_equals(state, "pending", "promise is not fulfilled during discovery window by get.");
|
|
|
|
window.open(`https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&origin=${encodeURIComponent("https://{{hosts[][]}}:{{ports[https][0]}}")}&close=true`);
|
|
credentialGotten = await getCredentialPromise;
|
|
fedcm_select_account_promise(t, 0);
|
|
assert_not_equals(credentialGotten, null, "Resolved with credential because the credential was stored.");
|
|
|
|
await clearLightweightCredential("https://{{hosts[alt][]}}:{{ports[https][0]}}", "wpt-pick-me");
|
|
}, "Cross-origin identity credential discovery does not resolve with effective store from the wrong origin");
|
|
|
|
</script>
|