diff --git a/extensions/slack/src/http/plugin-routes.dispatch.test.ts b/extensions/slack/src/http/plugin-routes.dispatch.test.ts deleted file mode 100644 index 5b649017388..00000000000 --- a/extensions/slack/src/http/plugin-routes.dispatch.test.ts +++ /dev/null @@ -1,52 +0,0 @@ -import type { IncomingMessage, ServerResponse } from "node:http"; -import { describe, expect, it, vi } from "vitest"; -import { createTestPluginApi } from "../../../../test/helpers/plugins/plugin-api.js"; -import type { OpenClawConfig, OpenClawPluginApi } from "../runtime-api.js"; - -function createApi(config: OpenClawConfig, registerHttpRoute = vi.fn()): OpenClawPluginApi { - return createTestPluginApi({ - id: "slack", - config, - registerHttpRoute, - }); -} - -describe("registerSlackPluginHttpRoutes dispatch", () => { - it("uses the shared Slack HTTP handler registry", async () => { - vi.resetModules(); - const staleRuntimeHandler = vi.fn(async () => false); - vi.doMock("./handler.runtime.js", () => ({ - handleSlackHttpRequest: staleRuntimeHandler, - })); - - const [{ registerSlackPluginHttpRoutes }, { registerSlackHttpHandler }] = await Promise.all([ - import("./plugin-routes.js"), - import("./registry.js"), - ]); - const routeHandler = vi.fn(); - const unregister = registerSlackHttpHandler({ - path: "/slack/events", - handler: routeHandler, - }); - const registerHttpRoute = vi.fn(); - - try { - registerSlackPluginHttpRoutes(createApi({}, registerHttpRoute)); - const route = registerHttpRoute.mock.calls[0]?.[0] as - | { - handler: (req: IncomingMessage, res: ServerResponse) => Promise; - } - | undefined; - const req = { url: "/slack/events" } as IncomingMessage; - const res = {} as ServerResponse; - - await expect(route?.handler(req, res)).resolves.toBe(true); - - expect(routeHandler).toHaveBeenCalledWith(req, res); - expect(staleRuntimeHandler).not.toHaveBeenCalled(); - } finally { - unregister(); - vi.doUnmock("./handler.runtime.js"); - } - }); -}); diff --git a/extensions/slack/src/http/plugin-routes.test.ts b/extensions/slack/src/http/plugin-routes.test.ts index c296f8f8c92..5e47e3ee98c 100644 --- a/extensions/slack/src/http/plugin-routes.test.ts +++ b/extensions/slack/src/http/plugin-routes.test.ts @@ -1,7 +1,9 @@ +import type { IncomingMessage, ServerResponse } from "node:http"; import { describe, expect, it, vi } from "vitest"; import { createTestPluginApi } from "../../../../test/helpers/plugins/plugin-api.js"; import type { OpenClawConfig, OpenClawPluginApi } from "../runtime-api.js"; import { registerSlackPluginHttpRoutes } from "./plugin-routes.js"; +import { registerSlackHttpHandler } from "./registry.js"; function createApi(config: OpenClawConfig, registerHttpRoute = vi.fn()): OpenClawPluginApi { return createTestPluginApi({ @@ -59,4 +61,30 @@ describe("registerSlackPluginHttpRoutes", () => { .toSorted(); expect(paths).toEqual(["/slack/events"]); }); + + it("dispatches through the shared Slack HTTP handler registry", async () => { + const routeHandler = vi.fn(); + const unregister = registerSlackHttpHandler({ + path: "/slack/events", + handler: routeHandler, + }); + const registerHttpRoute = vi.fn(); + + try { + registerSlackPluginHttpRoutes(createApi({}, registerHttpRoute)); + const route = registerHttpRoute.mock.calls[0]?.[0] as + | { + handler: (req: IncomingMessage, res: ServerResponse) => Promise; + } + | undefined; + const req = { url: "/slack/events" } as IncomingMessage; + const res = {} as ServerResponse; + + await expect(route?.handler(req, res)).resolves.toBe(true); + + expect(routeHandler).toHaveBeenCalledWith(req, res); + } finally { + unregister(); + } + }); });