mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-22 18:35:21 -06:00
144 lines
4.5 KiB
TypeScript
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");
|
|
});
|
|
});
|