File size: 4,699 Bytes
fc93158 | 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 | import { describe, expect, it } from "vitest";
import {
formatGatewayServiceDescription,
GATEWAY_LAUNCH_AGENT_LABEL,
GATEWAY_SYSTEMD_SERVICE_NAME,
GATEWAY_WINDOWS_TASK_NAME,
LEGACY_GATEWAY_SYSTEMD_SERVICE_NAMES,
normalizeGatewayProfile,
resolveGatewayLaunchAgentLabel,
resolveGatewayProfileSuffix,
resolveGatewayServiceDescription,
resolveGatewaySystemdServiceName,
resolveGatewayWindowsTaskName,
} from "./constants.js";
describe("normalizeGatewayProfile", () => {
it("returns null for empty/default profiles", () => {
expect(normalizeGatewayProfile()).toBeNull();
expect(normalizeGatewayProfile("")).toBeNull();
expect(normalizeGatewayProfile(" ")).toBeNull();
expect(normalizeGatewayProfile("default")).toBeNull();
expect(normalizeGatewayProfile(" Default ")).toBeNull();
});
it("returns trimmed custom profiles", () => {
expect(normalizeGatewayProfile("dev")).toBe("dev");
expect(normalizeGatewayProfile(" staging ")).toBe("staging");
});
});
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(GATEWAY_SYSTEMD_SERVICE_NAME);
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(GATEWAY_WINDOWS_TASK_NAME);
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("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)",
);
});
});
describe("resolveGatewayServiceDescription", () => {
it("prefers explicit description override", () => {
expect(
resolveGatewayServiceDescription({
env: { OPENCLAW_PROFILE: "work", OPENCLAW_SERVICE_VERSION: "1.0.0" },
description: "Custom",
}),
).toBe("Custom");
});
it("resolves version from explicit environment map", () => {
expect(
resolveGatewayServiceDescription({
env: { OPENCLAW_PROFILE: "work", OPENCLAW_SERVICE_VERSION: "local" },
environment: { OPENCLAW_SERVICE_VERSION: "remote" },
}),
).toBe("OpenClaw Gateway (profile: work, vremote)");
});
});
describe("LEGACY_GATEWAY_SYSTEMD_SERVICE_NAMES", () => {
it("includes known pre-rebrand gateway unit names", () => {
expect(LEGACY_GATEWAY_SYSTEMD_SERVICE_NAMES).toContain("clawdbot-gateway");
expect(LEGACY_GATEWAY_SYSTEMD_SERVICE_NAMES).toContain("moltbot-gateway");
});
});
|