import { describe, it, expect } from "bun:test";
import {
generateInviteToken,
hashInviteToken,
} from "../lib/invite-tokens";
import app from "../app";
describe("invite-tokens lib", () => {
it("generateInviteToken emits 32 hex chars and is unique across calls", () => {
const seen = new Set<string>();
for (let i = 0; i < 100; i++) {
const t = generateInviteToken();
expect(t).toMatch(/^[0-9a-f]{32}$/);
expect(seen.has(t)).toBe(false);
seen.add(t);
}
});
it("hashInviteToken is deterministic and differs per input", () => {
const a = generateInviteToken();
const b = generateInviteToken();
expect(hashInviteToken(a)).toBe(hashInviteToken(a));
expect(hashInviteToken(a)).not.toBe(hashInviteToken(b));
expect(hashInviteToken(a)).toMatch(/^[0-9a-f]{64}$/);
});
});
describe("GET /invites/:token", () => {
it("returns 404 for a bogus token", async () => {
const res = await app.request("/invites/not-a-real-token-xxxxxxxxxxxxxxxx");
expect(res.status).toBe(404);
});
});
|