import assert from 'node:assert/strict' import { createServer, request as httpRequest } from 'node:http' import test from 'node:test' import { createBrowserAuthentication, AUTH_CSRF_COOKIE, AUTH_RETRY_COOKIE, DSH_SESSION_COOKIE, MANAGEMENT_CSRF_COOKIE, MANAGEMENT_SESSION_COOKIE, TOTP_LOGIN_COOKIE, } from '../lib/browser-auth.mjs' import { safeReturnPath } from '../lib/proxy.mjs' async function listen(server) { await new Promise((resolve, reject) => { server.once('error', reject) server.listen(0, '127.0.0.1', resolve) }) return server.address().port } async function close(server) { server.closeAllConnections?.() await new Promise(resolve => server.close(resolve)) } function request(port, { path = '/', method = 'GET', headers = {}, body } = {}) { return new Promise((resolve, reject) => { const outgoing = httpRequest({ hostname: '127.0.0.1', port, path, method, headers }, response => { const chunks = [] response.on('data', chunk => chunks.push(chunk)) response.on('end', () => resolve({ status: response.statusCode, headers: response.headers, body: Buffer.concat(chunks).toString('utf8'), })) }) outgoing.once('error', reject) outgoing.end(body) }) } function assertInlineScriptsCompile(html) { const scripts = [...html.matchAll(/