<!DOCTYPE html>
<meta charset="utf-8">
<title>DBSC authorization value sent</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, documentHasCookie, waitForCookie, addCookieAndSessionCleanup, configureServer, setupShardedServerState } from "./helper.js";

  promise_test(async t => {
    await setupShardedServerState();
    const expectedCookieAndValue = "auth_cookie=abcdef0123";
    addCookieAndSessionCleanup(t);

    // Configure server send back an authorization header for registration.
    configureServer({ authorizationValue: "authcode" });

    // Prompt starting a session, and wait until registration completes.
    // The server will confirm that the authorization is sent in registration.
    const loginResponse = await fetch('login.py');
    assert_equals(loginResponse.status, 200);
    await waitForCookie(expectedCookieAndValue, /*expectCookie=*/true);

    // Confirm that registration succeeded (cookie was set).
    const authResponse = await fetch('verify_authenticated.py');
    assert_equals(authResponse.status, 200);
  }, "Session registration sends the authorization value");
</script>