
























@@ -3,6 +3,38 @@ import type { OpenClawConfig } from "../../config/config.js";
33import type { ProviderPlugin } from "../../plugins/types.js";
44import type { RuntimeEnv } from "../../runtime.js";
556+type AuthRunCall = {
7+agentDir?: string;
8+workspaceDir?: string;
9+};
10+11+type ResolvePluginProvidersCall = {
12+activate?: boolean;
13+bundledProviderAllowlistCompat?: boolean;
14+bundledProviderVitestCompat?: boolean;
15+config?: unknown;
16+includeUntrustedWorkspacePlugins?: boolean;
17+providerRefs?: string[];
18+workspaceDir?: string;
19+};
20+21+type UpsertAuthProfileCall = {
22+agentDir?: string;
23+credential?: {
24+provider?: string;
25+type?: string;
26+};
27+profileId?: string;
28+};
29+30+function readMockCallArg(mock: { mock: { calls: unknown[][] } }, index = 0): unknown {
31+const value = mock.mock.calls[index]?.[0];
32+if (!value) {
33+throw new Error("Expected mock call argument");
34+}
35+return value;
36+}
37+638const mocks = vi.hoisted(() => ({
739clackCancel: vi.fn(),
840clackConfirm: vi.fn(),
@@ -386,23 +418,19 @@ describe("modelsAuthLoginCommand", () => {
386418runProviderAuth.mock.invocationCallOrder[0],
387419);
388420expect(runProviderAuth).toHaveBeenCalledOnce();
389-expect(mocks.upsertAuthProfile).toHaveBeenCalledWith({
390-profileId: "openai-codex:user@example.com",
391-credential: expect.objectContaining({
392-type: "oauth",
393-provider: "openai-codex",
394-}),
395-agentDir: "/tmp/openclaw/agents/main",
396-});
421+const upsertCall = readMockCallArg(mocks.upsertAuthProfile) as UpsertAuthProfileCall;
422+expect(upsertCall.profileId).toBe("openai-codex:user@example.com");
423+expect(upsertCall.credential?.type).toBe("oauth");
424+expect(upsertCall.credential?.provider).toBe("openai-codex");
425+expect(upsertCall.agentDir).toBe("/tmp/openclaw/agents/main");
397426expect(mocks.promoteAuthProfileInOrder).toHaveBeenCalledWith({
398427agentDir: "/tmp/openclaw/agents/main",
399428provider: "openai-codex",
400429profileId: "openai-codex:user@example.com",
401430});
402-expect(lastUpdatedConfig?.auth?.profiles?.["openai-codex:user@example.com"]).toMatchObject({
403-provider: "openai-codex",
404-mode: "oauth",
405-});
431+const savedProfile = lastUpdatedConfig?.auth?.profiles?.["openai-codex:user@example.com"];
432+expect(savedProfile?.provider).toBe("openai-codex");
433+expect(savedProfile?.mode).toBe("oauth");
406434expect(runtime.log).toHaveBeenCalledWith(
407435"Auth profile: openai-codex:user@example.com (openai-codex/oauth)",
408436);
@@ -442,14 +470,11 @@ describe("modelsAuthLoginCommand", () => {
442470},
443471},
444472);
445-expect(runProviderAuth).toHaveBeenCalledWith(
446-expect.objectContaining({
447-agentDir: "/tmp/openclaw/agents/coder",
448-workspaceDir: "/tmp/openclaw/workspaces/coder",
449-}),
450-);
451-expect(mocks.upsertAuthProfile).toHaveBeenCalledWith(
452-expect.objectContaining({ agentDir: "/tmp/openclaw/agents/coder" }),
473+const authRunCall = readMockCallArg(runProviderAuth) as AuthRunCall;
474+expect(authRunCall.agentDir).toBe("/tmp/openclaw/agents/coder");
475+expect(authRunCall.workspaceDir).toBe("/tmp/openclaw/workspaces/coder");
476+expect((readMockCallArg(mocks.upsertAuthProfile) as UpsertAuthProfileCall).agentDir).toBe(
477+"/tmp/openclaw/agents/coder",
453478);
454479});
455480@@ -493,17 +518,16 @@ describe("modelsAuthLoginCommand", () => {
493518runtime,
494519);
495520496-expect(mocks.resolvePluginProviders).toHaveBeenCalledWith(
497-expect.objectContaining({
498-config: {},
499-workspaceDir: "/tmp/openclaw/workspace",
500-bundledProviderAllowlistCompat: true,
501-bundledProviderVitestCompat: true,
502-includeUntrustedWorkspacePlugins: false,
503-providerRefs: ["anthropic"],
504-activate: true,
505-}),
506-);
521+const providerResolutionCall = readMockCallArg(
522+mocks.resolvePluginProviders,
523+) as ResolvePluginProvidersCall;
524+expect(providerResolutionCall.config).toEqual({});
525+expect(providerResolutionCall.workspaceDir).toBe("/tmp/openclaw/workspace");
526+expect(providerResolutionCall.bundledProviderAllowlistCompat).toBe(true);
527+expect(providerResolutionCall.bundledProviderVitestCompat).toBe(true);
528+expect(providerResolutionCall.includeUntrustedWorkspacePlugins).toBe(false);
529+expect(providerResolutionCall.providerRefs).toEqual(["anthropic"]);
530+expect(providerResolutionCall.activate).toBe(true);
507531expect(runClaudeCliMigration).toHaveBeenCalledOnce();
508532expect(mocks.upsertAuthProfile).not.toHaveBeenCalled();
509533expect(lastUpdatedConfig?.agents?.defaults?.model).toEqual({
@@ -899,14 +923,11 @@ describe("modelsAuthLoginCommand", () => {
899923await modelsAuthSetupTokenCommand({ provider: "moonshot", yes: true, agent: "coder" }, runtime);
900924901925expect(mocks.resolveDefaultAgentId).not.toHaveBeenCalled();
902-expect(runTokenAuth).toHaveBeenCalledWith(
903-expect.objectContaining({
904-agentDir: "/tmp/openclaw/agents/coder",
905-workspaceDir: "/tmp/openclaw/workspaces/coder",
906-}),
907-);
908-expect(mocks.upsertAuthProfile).toHaveBeenCalledWith(
909-expect.objectContaining({ agentDir: "/tmp/openclaw/agents/coder" }),
926+const tokenAuthCall = readMockCallArg(runTokenAuth) as AuthRunCall;
927+expect(tokenAuthCall.agentDir).toBe("/tmp/openclaw/agents/coder");
928+expect(tokenAuthCall.workspaceDir).toBe("/tmp/openclaw/workspaces/coder");
929+expect((readMockCallArg(mocks.upsertAuthProfile) as UpsertAuthProfileCall).agentDir).toBe(
930+"/tmp/openclaw/agents/coder",
910931);
911932});
912933@@ -944,14 +965,11 @@ describe("modelsAuthLoginCommand", () => {
944965await modelsAuthAddCommand({ agent: "coder" }, runtime);
945966946967expect(mocks.resolveDefaultAgentId).not.toHaveBeenCalled();
947-expect(runTokenAuth).toHaveBeenCalledWith(
948-expect.objectContaining({
949-agentDir: "/tmp/openclaw/agents/coder",
950-workspaceDir: "/tmp/openclaw/workspaces/coder",
951-}),
952-);
953-expect(mocks.upsertAuthProfile).toHaveBeenCalledWith(
954-expect.objectContaining({ agentDir: "/tmp/openclaw/agents/coder" }),
968+const tokenAuthCall = readMockCallArg(runTokenAuth) as AuthRunCall;
969+expect(tokenAuthCall.agentDir).toBe("/tmp/openclaw/agents/coder");
970+expect(tokenAuthCall.workspaceDir).toBe("/tmp/openclaw/workspaces/coder");
971+expect((readMockCallArg(mocks.upsertAuthProfile) as UpsertAuthProfileCall).agentDir).toBe(
972+"/tmp/openclaw/agents/coder",
955973);
956974});
957975此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。