53 lines
1.6 KiB
TypeScript
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");
|
|
});
|
|
});
|