Files
openclaw/src/cli/program/route-args.test.ts
2026-05-04 22:18:25 +01:00

219 lines
4.9 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
parseAgentsListRouteArgs,
parseConfigGetRouteArgs,
parseConfigUnsetRouteArgs,
parseGatewayStatusRouteArgs,
parseHealthRouteArgs,
parseModelsListRouteArgs,
parseModelsStatusRouteArgs,
parseSessionsRouteArgs,
parseStatusRouteArgs,
} from "./route-args.js";
describe("route-args", () => {
it("parses health and status route args", () => {
expect(
parseHealthRouteArgs(["node", "openclaw", "health", "--json", "--timeout", "5000"]),
).toEqual({
json: true,
verbose: false,
timeoutMs: 5000,
});
expect(
parseStatusRouteArgs([
"node",
"openclaw",
"status",
"--json",
"--deep",
"--all",
"--usage",
"--timeout",
"5000",
]),
).toEqual({
json: true,
deep: true,
all: true,
usage: true,
verbose: false,
timeoutMs: 5000,
});
expect(parseStatusRouteArgs(["node", "openclaw", "status", "--timeout"])).toBeNull();
});
it("parses gateway status route args and rejects probe-only ssh flags", () => {
expect(
parseGatewayStatusRouteArgs([
"node",
"openclaw",
"gateway",
"status",
"--url",
"ws://127.0.0.1:18789",
"--token",
"abc",
"--password",
"def",
"--timeout",
"5000",
"--deep",
"--require-rpc",
"--json",
]),
).toEqual({
rpc: {
url: "ws://127.0.0.1:18789",
token: "abc",
password: "def",
timeout: "5000",
},
probe: true,
requireRpc: true,
deep: true,
json: true,
});
expect(
parseGatewayStatusRouteArgs(["node", "openclaw", "gateway", "status", "--ssh", "host"]),
).toBeNull();
expect(
parseGatewayStatusRouteArgs(["node", "openclaw", "gateway", "status", "--ssh-auto"]),
).toBeNull();
});
it("parses sessions and agents list route args", () => {
expect(
parseSessionsRouteArgs([
"node",
"openclaw",
"sessions",
"--json",
"--all-agents",
"--agent",
"default",
"--store",
"sqlite",
"--active",
"true",
"--limit",
"25",
]),
).toEqual({
json: true,
allAgents: true,
agent: "default",
store: "sqlite",
active: "true",
limit: "25",
});
expect(parseSessionsRouteArgs(["node", "openclaw", "sessions", "--agent"])).toBeNull();
expect(parseSessionsRouteArgs(["node", "openclaw", "sessions", "--limit"])).toBeNull();
expect(
parseAgentsListRouteArgs(["node", "openclaw", "agents", "list", "--json", "--bindings"]),
).toEqual({
json: true,
bindings: true,
});
expect(parseAgentsListRouteArgs(["node", "openclaw", "agents"])).toEqual({
json: false,
bindings: false,
});
});
it("parses config routes", () => {
expect(
parseConfigGetRouteArgs([
"node",
"openclaw",
"--log-level",
"debug",
"config",
"get",
"update.channel",
"--json",
]),
).toEqual({
path: "update.channel",
json: true,
});
expect(
parseConfigUnsetRouteArgs([
"node",
"openclaw",
"config",
"unset",
"--profile",
"work",
"update.channel",
]),
).toEqual({
path: "update.channel",
});
expect(parseConfigGetRouteArgs(["node", "openclaw", "config", "get", "--json"])).toBeNull();
});
it("parses models list and models status route args", () => {
expect(
parseModelsListRouteArgs([
"node",
"openclaw",
"models",
"list",
"--provider",
"openai",
"--all",
"--local",
"--json",
"--plain",
]),
).toEqual({
provider: "openai",
all: true,
local: true,
json: true,
plain: true,
});
expect(
parseModelsStatusRouteArgs([
"node",
"openclaw",
"models",
"status",
"--probe-provider",
"openai",
"--probe-timeout",
"5000",
"--probe-concurrency",
"2",
"--probe-max-tokens",
"64",
"--probe-profile",
"fast",
"--probe-profile",
"safe",
"--agent",
"default",
"--json",
"--plain",
"--check",
"--probe",
]),
).toEqual({
probeProvider: "openai",
probeTimeout: "5000",
probeConcurrency: "2",
probeMaxTokens: "64",
probeProfile: ["fast", "safe"],
agent: "default",
json: true,
plain: true,
check: true,
probe: true,
});
expect(
parseModelsStatusRouteArgs(["node", "openclaw", "models", "status", "--probe-profile"]),
).toBeNull();
});
});