File size: 4,577 Bytes
d197cf3 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | // 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");
});
});
|