import assert from "node:assert/strict"; import { signWsTicket, verifyWsTicket } from "../src/services/ws-tickets.js"; const issued = signWsTicket({ secret: "ticket-secret", audience: "interview", subject: "user-1", sessionId: "session-1", nowSeconds: 1_000 }); assert.equal(verifyWsTicket({ secret: "ticket-secret", ticket: issued.ticket, audience: "interview", sessionId: "session-1", subject: "user-1", nowSeconds: 1_001 }).sid, "session-1"); for (const invalid of [ { audience: "roleplay" as const, sessionId: "session-1", subject: "user-1", nowSeconds: 1_001 }, { audience: "interview" as const, sessionId: "session-2", subject: "user-1", nowSeconds: 1_001 }, { audience: "interview" as const, sessionId: "session-1", subject: "user-2", nowSeconds: 1_001 }, { audience: "interview" as const, sessionId: "session-1", subject: "user-1", nowSeconds: 1_061 }, ]) assert.throws(() => verifyWsTicket({ secret: "ticket-secret", ticket: issued.ticket, ...invalid })); assert.throws(() => verifyWsTicket({ secret: "ticket-secret", ticket: "not-a-ticket", audience: "interview", sessionId: "session-1", nowSeconds: 1_001 })); assert.throws(() => verifyWsTicket({ secret: "a2a-key", ticket: issued.ticket, audience: "interview", sessionId: "session-1", subject: "user-1", nowSeconds: 1_001 })); assert.throws(() => signWsTicket({ secret: "", audience: "interview", subject: "user-1", sessionId: "session-1" })); console.log("ws-ticket tests passed");