import { beforeEach, describe, expect, it } from "vitest" ;
import { createPluginRecord } from "../plugins/status.test-helpers.js" ;
import {
buildPluginDiagnosticsReport,
buildPluginInspectReport,
buildPluginSnapshotReport,
resetPluginsCliTestState,
runPluginsCommand,
runtimeLogs,
} from "./plugins-cli-test-helpers.js" ;
describe("plugins cli list" , () => {
beforeEach(() => {
resetPluginsCliTestState();
});
it("includes imported state in JSON output" , async () => {
buildPluginSnapshotReport.mockReturnValue({
workspaceDir: "/workspace" ,
plugins: [
createPluginRecord({
id: "demo" ,
imported: true ,
activated: true ,
explicitlyEnabled: true ,
}),
],
diagnostics: [],
});
await runPluginsCommand(["plugins" , "list" , "--json" ]);
expect(buildPluginSnapshotReport).toHaveBeenCalledWith(
expect.objectContaining({
logger: expect.objectContaining({
info: expect.any(Function ),
warn: expect.any(Function ),
error: expect.any(Function ),
}),
}),
);
expect(JSON.parse(runtimeLogs[0 ] ?? "null" )).toEqual({
workspaceDir: "/workspace" ,
plugins: [
expect.objectContaining({
id: "demo" ,
imported: true ,
activated: true ,
explicitlyEnabled: true ,
}),
],
diagnostics: [],
});
});
it("keeps doctor on a module-loading snapshot" , async () => {
buildPluginDiagnosticsReport.mockReturnValue({
plugins: [],
diagnostics: [],
});
await runPluginsCommand(["plugins" , "doctor" ]);
expect(buildPluginDiagnosticsReport).toHaveBeenCalledWith();
expect(runtimeLogs).toContain("No plugin issues detected." );
});
it("shows conversation-access hook policy in inspect output" , async () => {
buildPluginInspectReport.mockReturnValue({
workspaceDir: "/workspace" ,
plugin: createPluginRecord({ id: "openclaw-mem0" , name: "Mem0" }),
shape: "hook-only" ,
capabilityMode: "plain" ,
capabilityCount: 1 ,
capabilities: [],
typedHooks: [{ name: "agent_end" }],
customHooks: [],
tools: [],
commands: [],
cliCommands: [],
services: [],
gatewayDiscoveryServices: [],
gatewayMethods: [],
mcpServers: [],
lspServers: [],
httpRouteCount: 0 ,
bundleCapabilities: [],
diagnostics: [],
policy: {
allowConversationAccess: true ,
allowedModels: [],
hasAllowedModelsConfig: false ,
},
usesLegacyBeforeAgentStart: false ,
compatibility: [],
});
await runPluginsCommand(["plugins" , "inspect" , "openclaw-mem0" ]);
expect(runtimeLogs.join("\n" )).toContain("Policy" );
expect(runtimeLogs.join("\n" )).toContain("allowConversationAccess: true" );
});
});
Messung V0.5 in Prozent C=100 H=100 G=100
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-09)
¤
*© Formatika GbR, Deutschland