mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 12:20:44 +00:00
test: update channel metadata mocks
This commit is contained in:
@@ -2,9 +2,29 @@ import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import type { OutputRuntimeEnv } from "../runtime.js";
|
||||
|
||||
const { buildProviderStatusIndexMock, requireValidConfigMock } = vi.hoisted(() => ({
|
||||
const {
|
||||
buildProviderStatusIndexMock,
|
||||
buildProviderSummaryMetadataIndexMock,
|
||||
listProvidersForAgentMock,
|
||||
providerSummaryMetadataMock,
|
||||
requireValidConfigMock,
|
||||
summarizeBindingsMock,
|
||||
} = vi.hoisted(() => ({
|
||||
buildProviderStatusIndexMock: vi.fn(),
|
||||
buildProviderSummaryMetadataIndexMock: vi.fn(),
|
||||
listProvidersForAgentMock: vi.fn(),
|
||||
providerSummaryMetadataMock: new Map([
|
||||
[
|
||||
"telegram",
|
||||
{
|
||||
label: "Telegram",
|
||||
defaultAccountId: "default",
|
||||
visibleInConfiguredLists: true,
|
||||
},
|
||||
],
|
||||
]),
|
||||
requireValidConfigMock: vi.fn(),
|
||||
summarizeBindingsMock: vi.fn(),
|
||||
}));
|
||||
|
||||
vi.mock("./agents.command-shared.js", () => ({
|
||||
@@ -13,8 +33,9 @@ vi.mock("./agents.command-shared.js", () => ({
|
||||
|
||||
vi.mock("./agents.providers.js", () => ({
|
||||
buildProviderStatusIndex: buildProviderStatusIndexMock,
|
||||
listProvidersForAgent: () => ["Telegram default: configured"],
|
||||
summarizeBindings: () => ["Telegram default"],
|
||||
buildProviderSummaryMetadataIndex: buildProviderSummaryMetadataIndexMock,
|
||||
listProvidersForAgent: listProvidersForAgentMock,
|
||||
summarizeBindings: summarizeBindingsMock,
|
||||
}));
|
||||
|
||||
const { agentsListCommand } = await import("./agents.commands.list.js");
|
||||
@@ -47,6 +68,9 @@ describe("agentsListCommand", () => {
|
||||
vi.clearAllMocks();
|
||||
requireValidConfigMock.mockResolvedValue(createConfig());
|
||||
buildProviderStatusIndexMock.mockResolvedValue(new Map());
|
||||
buildProviderSummaryMetadataIndexMock.mockReturnValue(providerSummaryMetadataMock);
|
||||
listProvidersForAgentMock.mockReturnValue(["Telegram default: configured"]);
|
||||
summarizeBindingsMock.mockReturnValue(["Telegram default"]);
|
||||
});
|
||||
|
||||
it("keeps plain JSON output on the config-only path", async () => {
|
||||
@@ -67,6 +91,19 @@ describe("agentsListCommand", () => {
|
||||
await agentsListCommand({ json: true, bindings: true }, runtime);
|
||||
|
||||
expect(buildProviderStatusIndexMock).toHaveBeenCalledOnce();
|
||||
expect(buildProviderSummaryMetadataIndexMock).toHaveBeenCalledOnce();
|
||||
expect(summarizeBindingsMock).toHaveBeenCalledWith(
|
||||
expect.objectContaining({ agents: expect.any(Object) }),
|
||||
[expect.objectContaining({ agentId: "main" })],
|
||||
providerSummaryMetadataMock,
|
||||
);
|
||||
expect(listProvidersForAgentMock).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
cfg: expect.objectContaining({ agents: expect.any(Object) }),
|
||||
bindings: [expect.objectContaining({ agentId: "main" })],
|
||||
providerMetadata: providerSummaryMetadataMock,
|
||||
}),
|
||||
);
|
||||
expect(runtime.json[0]).toEqual([
|
||||
expect.objectContaining({
|
||||
id: "main",
|
||||
|
||||
@@ -6,6 +6,7 @@ import type { OpenClawConfig } from "../config/config.js";
|
||||
|
||||
const note = vi.hoisted(() => vi.fn());
|
||||
const pluginRegistry = vi.hoisted(() => ({ list: [] as unknown[] }));
|
||||
const listReadOnlyChannelPluginsForConfigMock = vi.hoisted(() => vi.fn());
|
||||
|
||||
vi.mock("../terminal/note.js", () => ({
|
||||
note,
|
||||
@@ -15,6 +16,10 @@ vi.mock("../channels/plugins/index.js", () => ({
|
||||
listChannelPlugins: () => pluginRegistry.list,
|
||||
}));
|
||||
|
||||
vi.mock("../channels/plugins/read-only.js", () => ({
|
||||
listReadOnlyChannelPluginsForConfig: listReadOnlyChannelPluginsForConfigMock,
|
||||
}));
|
||||
|
||||
vi.mock("../channels/read-only-account-inspect.js", () => ({
|
||||
inspectReadOnlyChannelAccount: vi.fn(async () => null),
|
||||
}));
|
||||
@@ -28,6 +33,8 @@ describe("noteSecurityWarnings gateway exposure", () => {
|
||||
|
||||
beforeEach(() => {
|
||||
note.mockClear();
|
||||
listReadOnlyChannelPluginsForConfigMock.mockReset();
|
||||
listReadOnlyChannelPluginsForConfigMock.mockImplementation(() => pluginRegistry.list);
|
||||
pluginRegistry.list = [];
|
||||
prevToken = process.env.OPENCLAW_GATEWAY_TOKEN;
|
||||
prevPassword = process.env.OPENCLAW_GATEWAY_PASSWORD;
|
||||
@@ -197,6 +204,10 @@ describe("noteSecurityWarnings gateway exposure", () => {
|
||||
];
|
||||
const cfg = { session: { dmScope: "main" } } as OpenClawConfig;
|
||||
await noteSecurityWarnings(cfg);
|
||||
expect(listReadOnlyChannelPluginsForConfigMock).toHaveBeenCalledWith(cfg, {
|
||||
includePersistedAuthState: true,
|
||||
includeSetupRuntimeFallback: false,
|
||||
});
|
||||
const message = lastMessage();
|
||||
expect(message).toContain('config set session.dmScope "per-channel-peer"');
|
||||
});
|
||||
@@ -454,6 +465,13 @@ describe("noteSecurityWarnings gateway exposure", () => {
|
||||
];
|
||||
|
||||
await noteSecurityWarnings({} as OpenClawConfig);
|
||||
expect(listReadOnlyChannelPluginsForConfigMock).toHaveBeenCalledWith(
|
||||
{},
|
||||
{
|
||||
includePersistedAuthState: true,
|
||||
includeSetupRuntimeFallback: false,
|
||||
},
|
||||
);
|
||||
const message = lastMessage();
|
||||
expect(message).toContain("[secrets]");
|
||||
expect(message).toContain("failed to resolve account");
|
||||
|
||||
Reference in New Issue
Block a user