Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

<!DOCTYPE html>
<meta charset="utf-8">
<title>DBSC session configuration resolving URLs</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="helper.js" type="module"></script>
<script type="module">
import { expireCookie, waitForCookie, addCookieAndSessionCleanup, configureServer, setupShardedServerState, documentHasCookie, postJson } from "./helper.js";
async function runTest(t, registrationUrl, refreshUrl) {
await setupShardedServerState();
const expectedCookieAndValue = "auth_cookie=abcdef0123";
const expectedCookieAndAttributes = `${expectedCookieAndValue};Domain=${location.hostname};Path=/device-bound-session-credentials`;
addCookieAndSessionCleanup(t, expectedCookieAndAttributes);
// Configure server to use the absolute URL for refresh instead of a relative URL.
configureServer({ refreshUrl });
// Configure registration to use absolute URL instead of relative.
// Prompt starting a session, and wait until registration completes.
const loginResponse = await postJson('login.py', { registrationUrl });
assert_equals(loginResponse.status, 200);
await waitForCookie(expectedCookieAndValue, /*expectCookie=*/true);
// Confirm that a request has the cookie set.
const authResponse = await fetch('verify_authenticated.py');
assert_equals(authResponse.status, 200);
// Trigger refresh and confirm that the cookie gets set again.
expireCookie(expectedCookieAndAttributes);
assert_false(documentHasCookie(expectedCookieAndValue));
const authResponseAfterExpiry = await fetch('verify_authenticated.py');
assert_equals(authResponseAfterExpiry.status, 200);
assert_true(documentHasCookie(expectedCookieAndValue));
}
promise_test(async t => {
const registrationUrl = `${location.origin}/device-bound-session-credentials/start_session.py`;
const refreshUrl = `${location.origin}/device-bound-session-credentials/refresh_session.py`;
await runTest(t, registrationUrl, refreshUrl);
}, "The registration and refresh endpoints can be configured as absolute URLs");
promise_test(async t => {
const registrationUrl = `/device-bound-session-credentials/start_session.py`;
const refreshUrl = `/device-bound-session-credentials/refresh_session.py`;
await runTest(t, registrationUrl, refreshUrl);
}, "The registration and refresh endpoints can be configured as relative URLs with leading slash");
promise_test(async t => {
const registrationUrl = `start_session.py`;
const refreshUrl = `refresh_session.py`;
await runTest(t, registrationUrl, refreshUrl);
}, "The registration and refresh endpoints can be configured as relative URLs without leading slash");
</script>