// Discord tests cover setup surface plugin behavior. import { installChannelDmPolicyContractSuite } from "openclaw/plugin-sdk/channel-test-helpers"; import type { OpenClawConfig } from "openclaw/plugin-sdk/config-contracts"; import { describe, expect, it } from "vitest"; import { createDiscordSetupWizardBase } from "./setup-core.js"; const discordSetupWizard = createDiscordSetupWizardBase({ promptAllowFrom: async ({ cfg }) => cfg, resolveAllowFromEntries: async ({ entries }) => entries.map((entry) => ({ input: entry, resolved: false, id: null, })), resolveGroupAllowlist: async ({ entries }) => entries.map((entry) => ({ input: entry, resolved: false, })), }); describe("discordSetupWizard.dmPolicy", () => { installChannelDmPolicyContractSuite({ dmPolicy: discordSetupWizard.dmPolicy!, cases: [ { name: "Discord named accounts", channel: "discord", accountId: "alerts", accountConfig: { token: "discord-token" }, inheritedAllowFrom: ["123"], }, ], }); }); describe("discordSetupWizard.status", () => { it("uses configured defaultAccount for omitted setup configured state", async () => { const configured = await discordSetupWizard.status.resolveConfigured({ cfg: { channels: { discord: { defaultAccount: "work", token: "discord-root-token", accounts: { alerts: { token: "discord-alerts-token", }, work: { token: "", }, }, }, }, } as OpenClawConfig, }); expect(configured).toBe(false); }); }); describe("discordSetupWizard.groupAccess", () => { it("writes resolved Discord channel rows to their selected guild and channel", () => { const next = discordSetupWizard.groupAccess?.applyAllowlist?.({ cfg: { channels: { discord: { guilds: { existing: { channels: { keep: { enabled: true }, }, }, }, }, }, } as OpenClawConfig, accountId: "default", resolved: [ { input: "OpenClaw/#triage", resolved: true, guildId: "guild-1", channelId: "channel-1", }, { input: "missing", resolved: false, }, ], }); expect(next?.channels?.discord?.guilds?.["guild-1"]?.channels?.["channel-1"]).toEqual({ enabled: true, }); expect(next?.channels?.discord?.guilds?.["*"]).toBeUndefined(); expect(next?.channels?.discord?.guilds?.existing?.channels?.keep).toEqual({ enabled: true, }); }); });