import { describe, it } from "node:test"; import assert from "node:assert/strict"; import { createSessionToken, createApikeyToken, isSessionToken, isApikeyToken, } from "../../src/util/token.js"; describe("createSessionToken", () => { it("starts with 'as_'", () => { const token = createSessionToken(); assert.ok(token.startsWith("as_"), `expected as_ prefix, got: ${token}`); }); it("has 35 chars total (as_ + 32 hex)", () => { const token = createSessionToken(); assert.equal(token.length, 35); }); it("suffix is all hex characters", () => { const token = createSessionToken(); const hex = token.slice(3); assert.ok(/^[0-9a-f]{32}$/.test(hex), `not all hex: ${hex}`); }); it("produces different tokens on each call", () => { const tokens = new Set(Array.from({ length: 10 }, createSessionToken)); assert.equal(tokens.size, 10, "all tokens should be unique"); }); }); describe("createApikeyToken", () => { it("starts with 'at_'", () => { const token = createApikeyToken(); assert.ok(token.startsWith("at_"), `expected at_ prefix, got: ${token}`); }); it("has 35 chars total (at_ + 32 hex)", () => { const token = createApikeyToken(); assert.equal(token.length, 35); }); it("suffix is all hex characters", () => { const token = createApikeyToken(); const hex = token.slice(3); assert.ok(/^[0-9a-f]{32}$/.test(hex), `not all hex: ${hex}`); }); it("produces different tokens on each call", () => { const tokens = new Set(Array.from({ length: 10 }, createApikeyToken)); assert.equal(tokens.size, 10, "all tokens should be unique"); }); }); describe("isSessionToken", () => { it("returns true for as_ prefixed strings", () => { assert.equal(isSessionToken("as_" + "a".repeat(32)), true); }); it("returns false for at_ prefixed strings", () => { assert.equal(isSessionToken("at_abc"), false); }); it("returns false for empty string", () => { assert.equal(isSessionToken(""), false); }); it("returns false for plain strings", () => { assert.equal(isSessionToken("hello"), false); }); }); describe("isApikeyToken", () => { it("returns true for at_ prefixed strings", () => { assert.equal(isApikeyToken("at_" + "b".repeat(32)), true); }); it("returns false for as_ prefixed strings", () => { assert.equal(isApikeyToken("as_abc"), false); }); it("returns false for empty string", () => { assert.equal(isApikeyToken(""), false); }); });