mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-12 09:41:11 +00:00
80 lines
2.3 KiB
TypeScript
80 lines
2.3 KiB
TypeScript
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
import { createEmptyPluginRegistry } from "../plugins/registry-empty.js";
|
|
import { resetPluginRuntimeStateForTest, setActivePluginRegistry } from "../plugins/runtime.js";
|
|
import {
|
|
invokeRegisteredNodeHostCommand,
|
|
listRegisteredNodeHostCapsAndCommands,
|
|
} from "./plugin-node-host.js";
|
|
|
|
afterEach(() => {
|
|
resetPluginRuntimeStateForTest();
|
|
});
|
|
|
|
describe("plugin node-host registry", () => {
|
|
it("lists plugin-declared caps and commands", () => {
|
|
const registry = createEmptyPluginRegistry();
|
|
registry.nodeHostCommands = [
|
|
{
|
|
pluginId: "browser",
|
|
pluginName: "Browser",
|
|
command: {
|
|
command: "browser.proxy",
|
|
cap: "browser",
|
|
handle: vi.fn(async () => "{}"),
|
|
},
|
|
source: "test",
|
|
},
|
|
{
|
|
pluginId: "photos",
|
|
pluginName: "Photos",
|
|
command: {
|
|
command: "photos.proxy",
|
|
cap: "photos",
|
|
handle: vi.fn(async () => "{}"),
|
|
},
|
|
source: "test",
|
|
},
|
|
{
|
|
pluginId: "browser-dup",
|
|
pluginName: "Browser Dup",
|
|
command: {
|
|
command: "browser.inspect",
|
|
cap: "browser",
|
|
handle: vi.fn(async () => "{}"),
|
|
},
|
|
source: "test",
|
|
},
|
|
];
|
|
setActivePluginRegistry(registry);
|
|
|
|
expect(listRegisteredNodeHostCapsAndCommands()).toEqual({
|
|
caps: ["browser", "photos"],
|
|
commands: ["browser.inspect", "browser.proxy", "photos.proxy"],
|
|
});
|
|
});
|
|
|
|
it("dispatches plugin-declared node-host commands", async () => {
|
|
const handle = vi.fn(async (paramsJSON?: string | null) => paramsJSON ?? "");
|
|
const registry = createEmptyPluginRegistry();
|
|
registry.nodeHostCommands = [
|
|
{
|
|
pluginId: "browser",
|
|
pluginName: "Browser",
|
|
command: {
|
|
command: "browser.proxy",
|
|
cap: "browser",
|
|
handle,
|
|
},
|
|
source: "test",
|
|
},
|
|
];
|
|
setActivePluginRegistry(registry);
|
|
|
|
await expect(invokeRegisteredNodeHostCommand("browser.proxy", '{"ok":true}')).resolves.toBe(
|
|
'{"ok":true}',
|
|
);
|
|
await expect(invokeRegisteredNodeHostCommand("missing.command", null)).resolves.toBeNull();
|
|
expect(handle).toHaveBeenCalledWith('{"ok":true}');
|
|
});
|
|
});
|