import { verifyDpopProof } from "@t3tools/shared/dpop"; import * as Effect from "effect/Effect"; import { describe, expect, it, vi } from "vite-plus/test"; import { browserCryptoLayer, createBrowserDpopProof, generateBrowserDpopKey } from "./dpop"; describe("browser DPoP proofs", () => { it("signs relay resource proofs with an access-token hash", async () => { vi.stubGlobal("indexedDB", undefined); const issuedAt = Math.floor(Date.now() / 1_000); const proofKey = await Effect.runPromise(generateBrowserDpopKey); const proof = await Effect.runPromise( createBrowserDpopProof({ method: "POST", url: "https://relay.example.test/v1/environments/env-1/connect?ignored=true", accessToken: "relay-access-token", proofKey, }).pipe(Effect.provide(browserCryptoLayer)), ); expect( verifyDpopProof({ proof: proof.proof, method: "POST", url: "https://relay.example.test/v1/environments/env-1/connect", expectedThumbprint: proof.thumbprint, expectedAccessToken: "relay-access-token", nowEpochSeconds: issuedAt, }), ).toMatchObject({ ok: true }); }); });