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