Files
clawdbot/src/gateway/server-plugins.test.ts
2026-01-19 00:15:24 +00:00

59 lines
1.4 KiB
TypeScript

import { describe, expect, test, vi } from "vitest";
import type { PluginRegistry } from "../plugins/registry.js";
import type { PluginDiagnostic } from "../plugins/types.js";
import { loadGatewayPlugins } from "./server-plugins.js";
const loadClawdbotPlugins = vi.hoisted(() => vi.fn());
vi.mock("../plugins/loader.js", () => ({
loadClawdbotPlugins,
}));
const createRegistry = (diagnostics: PluginDiagnostic[]): PluginRegistry => ({
plugins: [],
tools: [],
hooks: [],
typedHooks: [],
channels: [],
providers: [],
gatewayHandlers: {},
httpHandlers: [],
cliRegistrars: [],
services: [],
diagnostics,
});
describe("loadGatewayPlugins", () => {
test("logs plugin errors with details", () => {
const diagnostics: PluginDiagnostic[] = [
{
level: "error",
pluginId: "telegram",
source: "/tmp/telegram/index.ts",
message: "failed to load plugin: boom",
},
];
loadClawdbotPlugins.mockReturnValue(createRegistry(diagnostics));
const log = {
info: vi.fn(),
warn: vi.fn(),
error: vi.fn(),
debug: vi.fn(),
};
loadGatewayPlugins({
cfg: {},
workspaceDir: "/tmp",
log,
coreGatewayHandlers: {},
baseMethods: [],
});
expect(log.error).toHaveBeenCalledWith(
"[plugins] failed to load plugin: boom (plugin=telegram, source=/tmp/telegram/index.ts)",
);
expect(log.warn).not.toHaveBeenCalled();
});
});