import { describe, expect, it } from "vitest"; import { formatGatewayServiceDescription, GATEWAY_LAUNCH_AGENT_LABEL, GATEWAY_SYSTEMD_SERVICE_NAME, GATEWAY_WINDOWS_TASK_NAME, resolveGatewayLaunchAgentLabel, resolveGatewaySystemdServiceName, resolveGatewayWindowsTaskName, } from "./constants.js"; describe("resolveGatewayLaunchAgentLabel", () => { it("returns default label when no profile is set", () => { const result = resolveGatewayLaunchAgentLabel(); expect(result).toBe(GATEWAY_LAUNCH_AGENT_LABEL); expect(result).toBe("com.clawdbot.gateway"); }); it("returns default label when profile is undefined", () => { const result = resolveGatewayLaunchAgentLabel(undefined); expect(result).toBe(GATEWAY_LAUNCH_AGENT_LABEL); }); it("returns default label when profile is 'default'", () => { const result = resolveGatewayLaunchAgentLabel("default"); expect(result).toBe(GATEWAY_LAUNCH_AGENT_LABEL); }); it("returns default label when profile is 'Default' (case-insensitive)", () => { const result = resolveGatewayLaunchAgentLabel("Default"); expect(result).toBe(GATEWAY_LAUNCH_AGENT_LABEL); }); it("returns profile-specific label when profile is set", () => { const result = resolveGatewayLaunchAgentLabel("dev"); expect(result).toBe("com.clawdbot.dev"); }); it("returns profile-specific label for custom profile", () => { const result = resolveGatewayLaunchAgentLabel("work"); expect(result).toBe("com.clawdbot.work"); }); it("trims whitespace from profile", () => { const result = resolveGatewayLaunchAgentLabel(" staging "); expect(result).toBe("com.clawdbot.staging"); }); it("returns default label for empty string profile", () => { const result = resolveGatewayLaunchAgentLabel(""); expect(result).toBe(GATEWAY_LAUNCH_AGENT_LABEL); }); it("returns default label for whitespace-only profile", () => { const result = resolveGatewayLaunchAgentLabel(" "); expect(result).toBe(GATEWAY_LAUNCH_AGENT_LABEL); }); }); describe("resolveGatewaySystemdServiceName", () => { it("returns default service name when no profile is set", () => { const result = resolveGatewaySystemdServiceName(); expect(result).toBe(GATEWAY_SYSTEMD_SERVICE_NAME); expect(result).toBe("clawdbot-gateway"); }); it("returns default service name when profile is undefined", () => { const result = resolveGatewaySystemdServiceName(undefined); expect(result).toBe(GATEWAY_SYSTEMD_SERVICE_NAME); }); it("returns default service name when profile is 'default'", () => { const result = resolveGatewaySystemdServiceName("default"); expect(result).toBe(GATEWAY_SYSTEMD_SERVICE_NAME); }); it("returns default service name when profile is 'DEFAULT' (case-insensitive)", () => { const result = resolveGatewaySystemdServiceName("DEFAULT"); expect(result).toBe(GATEWAY_SYSTEMD_SERVICE_NAME); }); it("returns profile-specific service name when profile is set", () => { const result = resolveGatewaySystemdServiceName("dev"); expect(result).toBe("clawdbot-gateway-dev"); }); it("returns profile-specific service name for custom profile", () => { const result = resolveGatewaySystemdServiceName("production"); expect(result).toBe("clawdbot-gateway-production"); }); it("trims whitespace from profile", () => { const result = resolveGatewaySystemdServiceName(" test "); expect(result).toBe("clawdbot-gateway-test"); }); it("returns default service name for empty string profile", () => { const result = resolveGatewaySystemdServiceName(""); expect(result).toBe(GATEWAY_SYSTEMD_SERVICE_NAME); }); }); describe("resolveGatewayWindowsTaskName", () => { it("returns default task name when no profile is set", () => { const result = resolveGatewayWindowsTaskName(); expect(result).toBe(GATEWAY_WINDOWS_TASK_NAME); expect(result).toBe("Clawdbot Gateway"); }); it("returns default task name when profile is undefined", () => { const result = resolveGatewayWindowsTaskName(undefined); expect(result).toBe(GATEWAY_WINDOWS_TASK_NAME); }); it("returns default task name when profile is 'default'", () => { const result = resolveGatewayWindowsTaskName("default"); expect(result).toBe(GATEWAY_WINDOWS_TASK_NAME); }); it("returns default task name when profile is 'DeFaUlT' (case-insensitive)", () => { const result = resolveGatewayWindowsTaskName("DeFaUlT"); expect(result).toBe(GATEWAY_WINDOWS_TASK_NAME); }); it("returns profile-specific task name when profile is set", () => { const result = resolveGatewayWindowsTaskName("dev"); expect(result).toBe("Clawdbot Gateway (dev)"); }); it("returns profile-specific task name for custom profile", () => { const result = resolveGatewayWindowsTaskName("work"); expect(result).toBe("Clawdbot Gateway (work)"); }); it("trims whitespace from profile", () => { const result = resolveGatewayWindowsTaskName(" ci "); expect(result).toBe("Clawdbot Gateway (ci)"); }); it("returns default task name for empty string profile", () => { const result = resolveGatewayWindowsTaskName(""); expect(result).toBe(GATEWAY_WINDOWS_TASK_NAME); }); }); describe("formatGatewayServiceDescription", () => { it("returns default description when no profile/version", () => { expect(formatGatewayServiceDescription()).toBe("Clawdbot Gateway"); }); it("includes profile when set", () => { expect(formatGatewayServiceDescription({ profile: "work" })).toBe( "Clawdbot Gateway (profile: work)", ); }); it("includes version when set", () => { expect(formatGatewayServiceDescription({ version: "2026.1.10" })).toBe( "Clawdbot Gateway (v2026.1.10)", ); }); it("includes profile and version when set", () => { expect( formatGatewayServiceDescription({ profile: "dev", version: "1.2.3" }), ).toBe("Clawdbot Gateway (profile: dev, v1.2.3)"); }); });