| import { afterEach, beforeEach, describe, expect, it } from "vitest"; |
|
|
| import type { ChannelPlugin } from "../channels/plugins/types.js"; |
| import type { PluginRegistry } from "../plugins/registry.js"; |
| import { setActivePluginRegistry } from "../plugins/runtime.js"; |
| import { resolveGatewayMessageChannel } from "./message-channel.js"; |
|
|
| const createRegistry = (channels: PluginRegistry["channels"]): PluginRegistry => ({ |
| plugins: [], |
| tools: [], |
| channels, |
| providers: [], |
| gatewayHandlers: {}, |
| httpHandlers: [], |
| httpRoutes: [], |
| cliRegistrars: [], |
| services: [], |
| diagnostics: [], |
| }); |
|
|
| const emptyRegistry = createRegistry([]); |
|
|
| const msteamsPlugin = { |
| id: "msteams", |
| meta: { |
| id: "msteams", |
| label: "Microsoft Teams", |
| selectionLabel: "Microsoft Teams (Bot Framework)", |
| docsPath: "/channels/msteams", |
| blurb: "Bot Framework; enterprise support.", |
| aliases: ["teams"], |
| }, |
| capabilities: { chatTypes: ["direct"] }, |
| config: { |
| listAccountIds: () => [], |
| resolveAccount: () => ({}), |
| }, |
| } satisfies ChannelPlugin; |
|
|
| describe("message-channel", () => { |
| beforeEach(() => { |
| setActivePluginRegistry(emptyRegistry); |
| }); |
|
|
| afterEach(() => { |
| setActivePluginRegistry(emptyRegistry); |
| }); |
|
|
| it("normalizes gateway message channels and rejects unknown values", () => { |
| expect(resolveGatewayMessageChannel("discord")).toBe("discord"); |
| expect(resolveGatewayMessageChannel(" imsg ")).toBe("imessage"); |
| expect(resolveGatewayMessageChannel("web")).toBeUndefined(); |
| expect(resolveGatewayMessageChannel("nope")).toBeUndefined(); |
| }); |
|
|
| it("normalizes plugin aliases when registered", () => { |
| setActivePluginRegistry( |
| createRegistry([{ pluginId: "msteams", plugin: msteamsPlugin, source: "test" }]), |
| ); |
| expect(resolveGatewayMessageChannel("teams")).toBe("msteams"); |
| }); |
| }); |
|
|