Files
aetheel-2/tests/unit/session-manager.test.ts

53 lines
1.6 KiB
TypeScript

import { describe, it, expect, beforeEach } from "vitest";
import { SessionManager } from "../../src/session-manager.js";
describe("SessionManager", () => {
let manager: SessionManager;
beforeEach(() => {
manager = new SessionManager();
});
it("returns undefined for unknown channel", () => {
expect(manager.getSessionId("unknown")).toBeUndefined();
});
it("stores and retrieves a session", () => {
manager.setSessionId("ch-1", "sess-abc");
expect(manager.getSessionId("ch-1")).toBe("sess-abc");
});
it("overwrites an existing session", () => {
manager.setSessionId("ch-1", "sess-old");
manager.setSessionId("ch-1", "sess-new");
expect(manager.getSessionId("ch-1")).toBe("sess-new");
});
it("removes a session", () => {
manager.setSessionId("ch-1", "sess-abc");
manager.removeSession("ch-1");
expect(manager.getSessionId("ch-1")).toBeUndefined();
});
it("removeSession on unknown channel is a no-op", () => {
expect(() => manager.removeSession("nope")).not.toThrow();
});
it("clear removes all sessions", () => {
manager.setSessionId("ch-1", "s1");
manager.setSessionId("ch-2", "s2");
manager.clear();
expect(manager.getSessionId("ch-1")).toBeUndefined();
expect(manager.getSessionId("ch-2")).toBeUndefined();
});
it("isolates sessions across channels", () => {
manager.setSessionId("ch-1", "s1");
manager.setSessionId("ch-2", "s2");
expect(manager.getSessionId("ch-1")).toBe("s1");
expect(manager.getSessionId("ch-2")).toBe("s2");
manager.removeSession("ch-1");
expect(manager.getSessionId("ch-2")).toBe("s2");
});
});