import { describe, expect, it } from "vitest";
import type { Request } from "express";
import { getSessionConfig } from "../src/config/session.js";
type Query = Record<string, unknown>;
function makeRequest(query: Query): Request {
return { query } as Request;
}
describe("getSessionConfig", () => {
it("parses array parameters for allowTools and denyTools", () => {
const req = makeRequest({
allowTools: ["alpha", "beta", ""],
denyTools: "gamma"
});
const config = getSessionConfig(req);
expect(config.allowTools).toEqual(["alpha", "beta"]);
expect(config.denyTools).toBe("gamma");
});
it("normalises numeric parameters", () => {
const req = makeRequest({
defaultTeamId: "123",
requestTimeoutMs: "45000"
});
const config = getSessionConfig(req);
expect(config.defaultTeamId).toBe(123);
expect(config.requestTimeoutMs).toBe(45000);
});
it("applies default auth scheme when value is invalid", () => {
const req = makeRequest({ authScheme: "unsupported" });
const config = getSessionConfig(req);
expect(config.authScheme).toBe("auto");
});
it("trims string values", () => {
const req = makeRequest({
apiToken: " token ",
primaryLanguage: " en-US ",
baseUrl: " https://example.com ",
defaultHeadersJson: " {\"X-Test\":\"1\"} "
});
const config = getSessionConfig(req);
expect(config.apiToken).toBe("token");
expect(config.primaryLanguage).toBe("en-US");
expect(config.baseUrl).toBe("https://example.com");
expect(config.defaultHeadersJson).toBe("{\"X-Test\":\"1\"}");
});
});