mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-29 19:01:44 +00:00
106 lines
3.0 KiB
TypeScript
106 lines
3.0 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
|
const { resolvePluginToolsMock } = vi.hoisted(() => ({
|
|
resolvePluginToolsMock: vi.fn((params?: unknown) => {
|
|
void params;
|
|
return [];
|
|
}),
|
|
}));
|
|
|
|
vi.mock("../plugins/tools.js", () => ({
|
|
resolvePluginTools: resolvePluginToolsMock,
|
|
copyPluginToolMeta: vi.fn(),
|
|
getPluginToolMeta: vi.fn(() => undefined),
|
|
}));
|
|
|
|
let createOpenClawTools: typeof import("./openclaw-tools.js").createOpenClawTools;
|
|
let createOpenClawCodingTools: typeof import("./pi-tools.js").createOpenClawCodingTools;
|
|
|
|
describe("createOpenClawTools plugin context", () => {
|
|
beforeEach(async () => {
|
|
resolvePluginToolsMock.mockClear();
|
|
vi.resetModules();
|
|
({ createOpenClawTools } = await import("./openclaw-tools.js"));
|
|
({ createOpenClawCodingTools } = await import("./pi-tools.js"));
|
|
});
|
|
|
|
it("forwards trusted requester sender identity to plugin tool context", () => {
|
|
createOpenClawTools({
|
|
config: {} as never,
|
|
requesterSenderId: "trusted-sender",
|
|
senderIsOwner: true,
|
|
});
|
|
|
|
expect(resolvePluginToolsMock).toHaveBeenCalledWith(
|
|
expect.objectContaining({
|
|
context: expect.objectContaining({
|
|
requesterSenderId: "trusted-sender",
|
|
senderIsOwner: true,
|
|
}),
|
|
}),
|
|
);
|
|
});
|
|
|
|
it("forwards ephemeral sessionId to plugin tool context", () => {
|
|
createOpenClawTools({
|
|
config: {} as never,
|
|
agentSessionKey: "agent:main:telegram:direct:12345",
|
|
sessionId: "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
|
});
|
|
|
|
expect(resolvePluginToolsMock).toHaveBeenCalledWith(
|
|
expect.objectContaining({
|
|
context: expect.objectContaining({
|
|
sessionKey: "agent:main:telegram:direct:12345",
|
|
sessionId: "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
|
}),
|
|
}),
|
|
);
|
|
});
|
|
|
|
it("forwards browser session wiring to plugin tool context", () => {
|
|
createOpenClawTools({
|
|
config: {} as never,
|
|
sandboxBrowserBridgeUrl: "http://127.0.0.1:9999",
|
|
allowHostBrowserControl: true,
|
|
});
|
|
|
|
expect(resolvePluginToolsMock).toHaveBeenCalledWith(
|
|
expect.objectContaining({
|
|
context: expect.objectContaining({
|
|
browser: {
|
|
sandboxBridgeUrl: "http://127.0.0.1:9999",
|
|
allowHostControl: true,
|
|
},
|
|
}),
|
|
}),
|
|
);
|
|
});
|
|
|
|
it("forwards gateway subagent binding for plugin tools", () => {
|
|
createOpenClawTools({
|
|
config: {} as never,
|
|
allowGatewaySubagentBinding: true,
|
|
});
|
|
|
|
expect(resolvePluginToolsMock).toHaveBeenCalledWith(
|
|
expect.objectContaining({
|
|
allowGatewaySubagentBinding: true,
|
|
}),
|
|
);
|
|
});
|
|
|
|
it("forwards gateway subagent binding through coding tools", () => {
|
|
createOpenClawCodingTools({
|
|
config: {} as never,
|
|
allowGatewaySubagentBinding: true,
|
|
});
|
|
|
|
expect(resolvePluginToolsMock).toHaveBeenCalledWith(
|
|
expect.objectContaining({
|
|
allowGatewaySubagentBinding: true,
|
|
}),
|
|
);
|
|
});
|
|
});
|