mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-20 01:21:41 -06:00
62 lines
2.6 KiB
TypeScript
62 lines
2.6 KiB
TypeScript
// Test Live Cli Backend Docker tests cover test live cli backend docker script behavior.
|
|
import fs from "node:fs";
|
|
import path from "node:path";
|
|
import { describe, expect, it } from "vitest";
|
|
|
|
const SCRIPT_PATH = path.resolve(
|
|
import.meta.dirname,
|
|
"../../scripts/test-live-cli-backend-docker.sh",
|
|
);
|
|
|
|
function readForwardedDockerEnvVars(): string[] {
|
|
const script = fs.readFileSync(SCRIPT_PATH, "utf8");
|
|
return Array.from(script.matchAll(/-e\s+([A-Z0-9_]+)=/g), (match) => match[1] ?? "");
|
|
}
|
|
|
|
describe("scripts/test-live-cli-backend-docker.sh", () => {
|
|
it("runs the staged live test without invoking pnpm inside Docker", () => {
|
|
const script = fs.readFileSync(SCRIPT_PATH, "utf8");
|
|
|
|
expect(script).toContain(
|
|
"node scripts/test-live.mjs -- src/gateway/gateway-cli-backend.live.test.ts",
|
|
);
|
|
expect(script).not.toContain("pnpm test:live src/gateway/gateway-cli-backend.live.test.ts");
|
|
});
|
|
|
|
it("forwards both fresh and resume CLI arg overrides into the Docker container", () => {
|
|
const forwardedVars = readForwardedDockerEnvVars();
|
|
|
|
expect(forwardedVars).toContain("OPENCLAW_LIVE_CLI_BACKEND_ARGS");
|
|
expect(forwardedVars).toContain("OPENCLAW_LIVE_CLI_BACKEND_RESUME_ARGS");
|
|
expect(forwardedVars).toContain("OPENCLAW_TEST_CONSOLE");
|
|
});
|
|
|
|
it("prints redacted Claude subscription probe failures", () => {
|
|
const script = fs.readFileSync(SCRIPT_PATH, "utf8");
|
|
|
|
expect(script).toContain('direct_probe_output="$(mktemp)"');
|
|
expect(script).toContain('direct_probe_log="$(mktemp)"');
|
|
expect(script).toContain('>"$direct_probe_output" 2>"$direct_probe_log"');
|
|
expect(script).toContain("This is a local CLI smoke test.");
|
|
expect(script).toContain("What is two plus two?");
|
|
expect(script).toContain(
|
|
'[[ ! "$direct_output" =~ ^[[:space:]]*(4|[Ff][Oo][Uu][Rr])[[:space:]]*$ ]]',
|
|
);
|
|
expect(script).not.toContain("direct_token=");
|
|
expect(script).not.toContain("expected token");
|
|
expect(script).not.toContain("OPENCLAW-CLAUDE-SUBSCRIPTION-DIRECT");
|
|
expect(script).toContain("direct Claude subscription probe exited with status");
|
|
expect(script).toContain("<redacted-email>");
|
|
expect(script).toContain("<redacted-secret>");
|
|
});
|
|
|
|
it("prefers explicit Claude setup tokens over staged credentials", () => {
|
|
const script = fs.readFileSync(SCRIPT_PATH, "utf8");
|
|
|
|
expect(script).toMatch(
|
|
/if \[\[ -n "\$\{CLAUDE_CODE_OAUTH_TOKEN:-\}" \]\]; then[\s\S]*?CLAUDE_SUBSCRIPTION_AUTH_SOURCE="env-token"[\s\S]*?elif \[\[ -f "\$CLAUDE_CREDS_FILE" \]\]; then/,
|
|
);
|
|
expect(script).toContain(".claude.json | .claude/.credentials.json) ;;");
|
|
});
|
|
});
|