Spaces:
Paused
Paused
| import { describe, expect, it } from "vitest"; | |
| import { | |
| formatGatewayServiceDescription, | |
| GATEWAY_LAUNCH_AGENT_LABEL, | |
| GATEWAY_SYSTEMD_SERVICE_NAME, | |
| GATEWAY_WINDOWS_TASK_NAME, | |
| resolveGatewayLaunchAgentLabel, | |
| resolveGatewayProfileSuffix, | |
| 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("ai.openclaw.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("ai.openclaw.dev"); | |
| }); | |
| it("returns profile-specific label for custom profile", () => { | |
| const result = resolveGatewayLaunchAgentLabel("work"); | |
| expect(result).toBe("ai.openclaw.work"); | |
| }); | |
| it("trims whitespace from profile", () => { | |
| const result = resolveGatewayLaunchAgentLabel(" staging "); | |
| expect(result).toBe("ai.openclaw.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("openclaw-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("openclaw-gateway-dev"); | |
| }); | |
| it("returns profile-specific service name for custom profile", () => { | |
| const result = resolveGatewaySystemdServiceName("production"); | |
| expect(result).toBe("openclaw-gateway-production"); | |
| }); | |
| it("trims whitespace from profile", () => { | |
| const result = resolveGatewaySystemdServiceName(" test "); | |
| expect(result).toBe("openclaw-gateway-test"); | |
| }); | |
| it("returns default service name for empty string profile", () => { | |
| const result = resolveGatewaySystemdServiceName(""); | |
| expect(result).toBe(GATEWAY_SYSTEMD_SERVICE_NAME); | |
| }); | |
| it("returns default service name for whitespace-only 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("OpenClaw 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("OpenClaw Gateway (dev)"); | |
| }); | |
| it("returns profile-specific task name for custom profile", () => { | |
| const result = resolveGatewayWindowsTaskName("work"); | |
| expect(result).toBe("OpenClaw Gateway (work)"); | |
| }); | |
| it("trims whitespace from profile", () => { | |
| const result = resolveGatewayWindowsTaskName(" ci "); | |
| expect(result).toBe("OpenClaw Gateway (ci)"); | |
| }); | |
| it("returns default task name for empty string profile", () => { | |
| const result = resolveGatewayWindowsTaskName(""); | |
| expect(result).toBe(GATEWAY_WINDOWS_TASK_NAME); | |
| }); | |
| it("returns default task name for whitespace-only profile", () => { | |
| const result = resolveGatewayWindowsTaskName(" "); | |
| expect(result).toBe(GATEWAY_WINDOWS_TASK_NAME); | |
| }); | |
| }); | |
| describe("resolveGatewayProfileSuffix", () => { | |
| it("returns empty string when no profile is set", () => { | |
| expect(resolveGatewayProfileSuffix()).toBe(""); | |
| }); | |
| it("returns empty string for default profiles", () => { | |
| expect(resolveGatewayProfileSuffix("default")).toBe(""); | |
| expect(resolveGatewayProfileSuffix(" Default ")).toBe(""); | |
| }); | |
| it("returns a hyphenated suffix for custom profiles", () => { | |
| expect(resolveGatewayProfileSuffix("dev")).toBe("-dev"); | |
| }); | |
| it("trims whitespace from profiles", () => { | |
| expect(resolveGatewayProfileSuffix(" staging ")).toBe("-staging"); | |
| }); | |
| }); | |
| describe("formatGatewayServiceDescription", () => { | |
| it("returns default description when no profile/version", () => { | |
| expect(formatGatewayServiceDescription()).toBe("OpenClaw Gateway"); | |
| }); | |
| it("includes profile when set", () => { | |
| expect(formatGatewayServiceDescription({ profile: "work" })).toBe( | |
| "OpenClaw Gateway (profile: work)", | |
| ); | |
| }); | |
| it("includes version when set", () => { | |
| expect(formatGatewayServiceDescription({ version: "2026.1.10" })).toBe( | |
| "OpenClaw Gateway (v2026.1.10)", | |
| ); | |
| }); | |
| it("includes profile and version when set", () => { | |
| expect(formatGatewayServiceDescription({ profile: "dev", version: "1.2.3" })).toBe( | |
| "OpenClaw Gateway (profile: dev, v1.2.3)", | |
| ); | |
| }); | |
| }); | |