homeio
PublicForked from doctor-io/homeio
session-token.test.ts
import { beforeEach, describe, expect, it, vi } from "vitest";
describe("session token", () => {
beforeEach(() => {
vi.resetModules();
});
it("creates and verifies a valid token", async () => {
vi.doMock("@/lib/server/env", () => ({
serverEnv: {
AUTH_SESSION_SECRET: "a-very-long-secret-for-tests",
},
}));
const { createSessionToken, verifySessionToken } = await import(
"@/lib/server/modules/auth/session-token"
);
const expiresAt = Math.floor(Date.now() / 1000) + 3600;
const token = createSessionToken("session-123", expiresAt);
expect(verifySessionToken(token)).toEqual({
sessionId: "session-123",
expiresAtEpochSeconds: expiresAt,
});
});
it("rejects tampered token", async () => {
vi.doMock("@/lib/server/env", () => ({
serverEnv: {
AUTH_SESSION_SECRET: "a-very-long-secret-for-tests",
},
}));
const { createSessionToken, verifySessionToken } = await import(
"@/lib/server/modules/auth/session-token"
);
const expiresAt = Math.floor(Date.now() / 1000) + 3600;
const token = createSessionToken("session-123", expiresAt);
expect(verifySessionToken(`${token}tampered`)).toBeNull();
});
});