Files
openclaw/src/daemon/constants.test.ts
T
2026-08-08 14:14:22 -07:00

144 lines
4.5 KiB
TypeScript

// Daemon constant tests cover platform constants used by service installers.
import { describe, expect, it } from "vitest";
import {
GATEWAY_LAUNCH_AGENT_LABEL,
LEGACY_GATEWAY_SYSTEMD_SERVICE_NAMES,
resolveGatewayLaunchAgentLabel,
resolveGatewayNativeServiceIdentityConflict,
resolveGatewayProfileSuffix,
resolveGatewayServiceDescription,
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 profile-specific label when profile is set", () => {
const result = resolveGatewayLaunchAgentLabel("dev");
expect(result).toBe("ai.openclaw.dev");
});
});
describe("resolveGatewaySystemdServiceName", () => {
it("returns default service name when no profile is set", () => {
const result = resolveGatewaySystemdServiceName();
expect(result).toBe("openclaw-gateway");
});
it("returns profile-specific service name when profile is set", () => {
const result = resolveGatewaySystemdServiceName("dev");
expect(result).toBe("openclaw-gateway-dev");
});
});
describe("resolveGatewayWindowsTaskName", () => {
it("returns default task name when no profile is set", () => {
const result = resolveGatewayWindowsTaskName();
expect(result).toBe("OpenClaw Gateway");
});
it("returns profile-specific task name when profile is set", () => {
const result = resolveGatewayWindowsTaskName("dev");
expect(result).toBe("OpenClaw Gateway (dev)");
});
});
describe("resolveGatewayNativeServiceIdentityConflict", () => {
it.each([
{
platform: "darwin" as const,
envKey: "OPENCLAW_LAUNCHD_LABEL",
value: "ai.openclaw.gateway",
},
{
platform: "linux" as const,
envKey: "OPENCLAW_SYSTEMD_UNIT",
value: "openclaw-gateway.service",
},
{
platform: "win32" as const,
envKey: "OPENCLAW_WINDOWS_TASK_NAME",
value: "OpenClaw Gateway",
},
])("rejects $envKey overrides for named profiles on $platform", ({ platform, envKey, value }) => {
expect(
resolveGatewayNativeServiceIdentityConflict(
{ OPENCLAW_PROFILE: "work", [envKey]: value },
platform,
),
).toMatchObject({ envKey });
});
it("accepts canonical named-profile identities and default-profile overrides", () => {
expect(
resolveGatewayNativeServiceIdentityConflict(
{ OPENCLAW_PROFILE: "work", OPENCLAW_SYSTEMD_UNIT: "openclaw-gateway-work" },
"linux",
),
).toBeNull();
expect(
resolveGatewayNativeServiceIdentityConflict(
{ OPENCLAW_SYSTEMD_UNIT: "custom-gateway.service" },
"linux",
),
).toBeNull();
});
});
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("resolveGatewayServiceDescription", () => {
it("returns default description when no profile", () => {
expect(resolveGatewayServiceDescription({ env: {} })).toBe("OpenClaw Gateway");
});
it("includes profile when set", () => {
expect(resolveGatewayServiceDescription({ env: { OPENCLAW_PROFILE: "work" } })).toBe(
"OpenClaw Gateway (profile: work)",
);
});
it("ignores legacy install-time version metadata", () => {
expect(
resolveGatewayServiceDescription({ env: { OPENCLAW_SERVICE_VERSION: "2026.1.10" } }),
).toBe("OpenClaw Gateway");
});
it("prefers explicit description override", () => {
expect(
resolveGatewayServiceDescription({
env: { OPENCLAW_PROFILE: "work" },
description: "Custom",
}),
).toBe("Custom");
});
});
describe("LEGACY_GATEWAY_SYSTEMD_SERVICE_NAMES", () => {
it("includes known pre-rebrand gateway unit names", () => {
expect(LEGACY_GATEWAY_SYSTEMD_SERVICE_NAMES).toContain("clawdbot-gateway");
});
});