




























@@ -38,3 +38,75 @@ describe("mapFailoverReasonToProbeStatus", () => {
3838expect(mapFailoverReasonToProbeStatus("something_else")).toBe("unknown");
3939});
4040});
41+42+describe("runAuthProbes", () => {
43+it("runs Codex auth probes through raw OpenClaw model-run mode", async () => {
44+const runEmbeddedAgent = vi.fn(async () => ({ text: "OK" }));
45+vi.doMock("../../agents/embedded-agent.js", () => ({ runEmbeddedAgent }));
46+vi.doMock("../../agents/auth-profiles.js", () => ({
47+externalCliDiscoveryScoped: () => undefined,
48+ensureAuthProfileStore: () => ({
49+version: 1,
50+profiles: {
51+"openai-codex:profile": {
52+type: "oauth",
53+provider: "openai-codex",
54+access: "access-token",
55+refresh: "refresh-token",
56+expires: Date.now() + 60_000,
57+},
58+},
59+order: {},
60+}),
61+listProfilesForProvider: () => ["openai-codex:profile"],
62+resolveAuthProfileDisplayLabel: ({ profileId }: { profileId: string }) => profileId,
63+resolveAuthProfileEligibility: () => ({ eligible: true }),
64+resolveAuthProfileOrder: () => ["openai-codex:profile"],
65+}));
66+vi.doMock("../../agents/model-auth.js", () => ({
67+hasUsableCustomProviderApiKey: () => false,
68+resolveEnvApiKey: () => null,
69+}));
70+vi.doMock("../../agents/model-catalog.js", () => ({
71+loadModelCatalog: async () => [{ provider: "openai-codex", id: "gpt-5.5" }],
72+}));
73+try {
74+const module = await importFreshModule<typeof import("./list.probe.js")>(
75+import.meta.url,
76+`./list.probe.js?scope=${Math.random().toString(36).slice(2)}`,
77+);
78+const result = await module.runAuthProbes({
79+cfg: {} as never,
80+agentId: "probe-agent",
81+agentDir: "/tmp/openclaw-probe-agent",
82+workspaceDir: "/tmp/openclaw-probe-workspace",
83+providers: ["openai-codex"],
84+modelCandidates: ["openai-codex/gpt-5.5"],
85+options: {
86+provider: "openai-codex",
87+profileIds: ["openai-codex:profile"],
88+timeoutMs: 5_000,
89+concurrency: 1,
90+maxTokens: 8,
91+},
92+});
93+94+expect(result.results[0]?.status).toBe("ok");
95+expect(runEmbeddedAgent).toHaveBeenCalledWith(
96+expect.objectContaining({
97+agentHarnessId: "openclaw",
98+agentHarnessRuntimeOverride: "openclaw",
99+modelRun: true,
100+disableTools: true,
101+authProfileId: "openai-codex:profile",
102+authProfileIdSource: "user",
103+}),
104+);
105+} finally {
106+vi.doUnmock("../../agents/embedded-agent.js");
107+vi.doUnmock("../../agents/auth-profiles.js");
108+vi.doUnmock("../../agents/model-auth.js");
109+vi.doUnmock("../../agents/model-catalog.js");
110+}
111+});
112+});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。