59 lines
2.1 KiB
TypeScript
59 lines
2.1 KiB
TypeScript
import { describe, test, expect } from "bun:test";
|
|
import { SessionController } from "../../../src/controllers/SessionController";
|
|
import { buildMockSession } from "../../setup";
|
|
|
|
describe("SessionController", () => {
|
|
// -------------------------------------------------------------------
|
|
// Constructor
|
|
// -------------------------------------------------------------------
|
|
describe("constructor", () => {
|
|
test("sets all public properties from session data", () => {
|
|
const data = buildMockSession();
|
|
const ctrl = new SessionController(data);
|
|
expect(ctrl.id).toBe("session-1");
|
|
expect(ctrl.sessionKey).toBe("sk-abc123");
|
|
expect(ctrl.userId).toBe("user-1");
|
|
expect(ctrl.expires).toBeInstanceOf(Date);
|
|
expect(ctrl.refreshedAt).toBeNull();
|
|
expect(ctrl.invalidatedAt).toBeNull();
|
|
expect(ctrl.terminated).toBe(false);
|
|
});
|
|
|
|
test("sets custom values from overrides", () => {
|
|
const refreshDate = new Date("2025-06-01");
|
|
const ctrl = new SessionController(
|
|
buildMockSession({ refreshedAt: refreshDate }),
|
|
);
|
|
expect(ctrl.refreshedAt).toEqual(refreshDate);
|
|
});
|
|
});
|
|
|
|
// -------------------------------------------------------------------
|
|
// invalidate
|
|
// -------------------------------------------------------------------
|
|
describe("invalidate()", () => {
|
|
test("throws when session is already invalidated", async () => {
|
|
const ctrl = new SessionController(
|
|
buildMockSession({ invalidatedAt: new Date() }),
|
|
);
|
|
await expect(ctrl.invalidate()).rejects.toThrow(
|
|
"Session has already been invalidated",
|
|
);
|
|
});
|
|
});
|
|
|
|
// -------------------------------------------------------------------
|
|
// generateTokens
|
|
// -------------------------------------------------------------------
|
|
describe("generateTokens()", () => {
|
|
test("throws when tokens have already been generated", async () => {
|
|
const ctrl = new SessionController(
|
|
buildMockSession({ refreshTokenGenerated: true }),
|
|
);
|
|
await expect(ctrl.generateTokens()).rejects.toThrow(
|
|
"Tokens have alredy been generated",
|
|
);
|
|
});
|
|
});
|
|
});
|