mirror of https://github.com/openclaw/openclaw.git
76 lines
2.4 KiB
TypeScript
76 lines
2.4 KiB
TypeScript
import { describe, expect, it, vi } from "vitest";
|
|
import {
|
|
buildCliRespawnPlan,
|
|
EXPERIMENTAL_WARNING_FLAG,
|
|
OPENCLAW_NODE_EXTRA_CA_CERTS_READY,
|
|
OPENCLAW_NODE_OPTIONS_READY,
|
|
} from "./entry.respawn.js";
|
|
|
|
const shouldSkipRespawnForArgvMock = vi.hoisted(() => vi.fn(() => false));
|
|
const isTruthyEnvValueMock = vi.hoisted(() =>
|
|
vi.fn((value: string | undefined) => value === "1" || value === "true"),
|
|
);
|
|
|
|
vi.mock("./cli/respawn-policy.js", () => ({
|
|
shouldSkipRespawnForArgv: shouldSkipRespawnForArgvMock,
|
|
}));
|
|
|
|
vi.mock("./infra/env.js", () => ({
|
|
isTruthyEnvValue: isTruthyEnvValueMock,
|
|
}));
|
|
|
|
describe("buildCliRespawnPlan", () => {
|
|
it("returns null when respawn policy skips the argv", () => {
|
|
shouldSkipRespawnForArgvMock.mockReturnValueOnce(true);
|
|
|
|
expect(
|
|
buildCliRespawnPlan({
|
|
argv: ["node", "openclaw", "status"],
|
|
env: {},
|
|
execArgv: [],
|
|
autoNodeExtraCaCerts: "/etc/ssl/certs/ca-certificates.crt",
|
|
}),
|
|
).toBeNull();
|
|
});
|
|
|
|
it("adds NODE_EXTRA_CA_CERTS and warning suppression in one respawn", () => {
|
|
const plan = buildCliRespawnPlan({
|
|
argv: ["node", "openclaw", "gateway", "run"],
|
|
env: {},
|
|
execArgv: [],
|
|
autoNodeExtraCaCerts: "/etc/ssl/certs/ca-certificates.crt",
|
|
});
|
|
|
|
expect(plan).not.toBeNull();
|
|
expect(plan?.argv[0]).toBe(EXPERIMENTAL_WARNING_FLAG);
|
|
expect(plan?.env.NODE_EXTRA_CA_CERTS).toBe("/etc/ssl/certs/ca-certificates.crt");
|
|
expect(plan?.env[OPENCLAW_NODE_EXTRA_CA_CERTS_READY]).toBe("1");
|
|
expect(plan?.env[OPENCLAW_NODE_OPTIONS_READY]).toBe("1");
|
|
});
|
|
|
|
it("does not overwrite an existing NODE_EXTRA_CA_CERTS value", () => {
|
|
const plan = buildCliRespawnPlan({
|
|
argv: ["node", "openclaw", "gateway", "run"],
|
|
env: { NODE_EXTRA_CA_CERTS: "/custom/ca.pem" },
|
|
execArgv: [],
|
|
autoNodeExtraCaCerts: "/etc/ssl/certs/ca-certificates.crt",
|
|
});
|
|
|
|
expect(plan?.env.NODE_EXTRA_CA_CERTS).toBe("/custom/ca.pem");
|
|
});
|
|
|
|
it("returns null when both respawn guards are already satisfied", () => {
|
|
expect(
|
|
buildCliRespawnPlan({
|
|
argv: ["node", "openclaw", "gateway", "run"],
|
|
env: {
|
|
[OPENCLAW_NODE_EXTRA_CA_CERTS_READY]: "1",
|
|
[OPENCLAW_NODE_OPTIONS_READY]: "1",
|
|
},
|
|
execArgv: [EXPERIMENTAL_WARNING_FLAG],
|
|
autoNodeExtraCaCerts: "/etc/ssl/certs/ca-certificates.crt",
|
|
}),
|
|
).toBeNull();
|
|
});
|
|
});
|