44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
|
const callGatewayMock = vi.fn();
|
|
vi.mock("../../gateway/call.js", () => ({
|
|
callGateway: (opts: unknown) => callGatewayMock(opts),
|
|
}));
|
|
|
|
vi.mock("../../config/config.js", async (importOriginal) => {
|
|
const actual =
|
|
await importOriginal<typeof import("../../config/config.js")>();
|
|
return {
|
|
...actual,
|
|
loadConfig: () =>
|
|
({
|
|
session: { scope: "per-sender", mainKey: "main" },
|
|
tools: { agentToAgent: { enabled: false } },
|
|
}) as never,
|
|
};
|
|
});
|
|
|
|
import { createSessionsSendTool } from "./sessions-send-tool.js";
|
|
|
|
describe("sessions_send gating", () => {
|
|
beforeEach(() => {
|
|
callGatewayMock.mockReset();
|
|
});
|
|
|
|
it("blocks cross-agent sends when tools.agentToAgent.enabled is false", async () => {
|
|
const tool = createSessionsSendTool({
|
|
agentSessionKey: "agent:main:main",
|
|
agentProvider: "whatsapp",
|
|
});
|
|
|
|
const result = await tool.execute("call1", {
|
|
sessionKey: "agent:other:main",
|
|
message: "hi",
|
|
timeoutSeconds: 0,
|
|
});
|
|
|
|
expect(callGatewayMock).not.toHaveBeenCalled();
|
|
expect(result.details).toMatchObject({ status: "forbidden" });
|
|
});
|
|
});
|