mirror of
https://github.com/moltbot/moltbot.git
synced 2026-05-11 12:58:34 +00:00
88 lines
2.1 KiB
TypeScript
88 lines
2.1 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { resolveWebhooksPluginConfig } from "./config.js";
|
|
|
|
describe("resolveWebhooksPluginConfig", () => {
|
|
it("keeps SecretRef-backed secrets on the route config", () => {
|
|
const routes = resolveWebhooksPluginConfig({
|
|
pluginConfig: {
|
|
routes: {
|
|
zapier: {
|
|
sessionKey: "agent:main:main",
|
|
secret: {
|
|
source: "env",
|
|
provider: "default",
|
|
id: "OPENCLAW_WEBHOOK_SECRET",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
expect(routes).toEqual([
|
|
{
|
|
routeId: "zapier",
|
|
path: "/plugins/webhooks/zapier",
|
|
sessionKey: "agent:main:main",
|
|
secret: {
|
|
source: "env",
|
|
provider: "default",
|
|
id: "OPENCLAW_WEBHOOK_SECRET",
|
|
},
|
|
controllerId: "webhooks/zapier",
|
|
},
|
|
]);
|
|
});
|
|
|
|
it("keeps routes whose secret needs runtime resolution", () => {
|
|
const routes = resolveWebhooksPluginConfig({
|
|
pluginConfig: {
|
|
routes: {
|
|
missing: {
|
|
sessionKey: "agent:main:main",
|
|
secret: {
|
|
source: "env",
|
|
provider: "default",
|
|
id: "MISSING_SECRET",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
expect(routes).toEqual([
|
|
{
|
|
routeId: "missing",
|
|
path: "/plugins/webhooks/missing",
|
|
sessionKey: "agent:main:main",
|
|
secret: {
|
|
source: "env",
|
|
provider: "default",
|
|
id: "MISSING_SECRET",
|
|
},
|
|
controllerId: "webhooks/missing",
|
|
},
|
|
]);
|
|
});
|
|
|
|
it("rejects duplicate normalized paths", () => {
|
|
expect(() =>
|
|
resolveWebhooksPluginConfig({
|
|
pluginConfig: {
|
|
routes: {
|
|
first: {
|
|
path: "/plugins/webhooks/shared",
|
|
sessionKey: "agent:main:main",
|
|
secret: "a",
|
|
},
|
|
second: {
|
|
path: "/plugins/webhooks/shared/",
|
|
sessionKey: "agent:main:other",
|
|
secret: "b",
|
|
},
|
|
},
|
|
},
|
|
}),
|
|
).toThrow(/conflicts with routes\.first\.path/i);
|
|
});
|
|
});
|