| import { afterEach, beforeEach, describe, expect, it } from "vitest"; |
| import { loadConfig, validateConfigObject } from "./config.js"; |
| import { withTempHomeConfig } from "./test-helpers.js"; |
|
|
| describe("config discord", () => { |
| let previousHome: string | undefined; |
|
|
| beforeEach(() => { |
| previousHome = process.env.HOME; |
| }); |
|
|
| afterEach(() => { |
| process.env.HOME = previousHome; |
| }); |
|
|
| it("loads discord guild map + dm group settings", async () => { |
| await withTempHomeConfig( |
| { |
| channels: { |
| discord: { |
| enabled: true, |
| dm: { |
| enabled: true, |
| allowFrom: ["steipete"], |
| groupEnabled: true, |
| groupChannels: ["openclaw-dm"], |
| }, |
| actions: { |
| emojiUploads: true, |
| stickerUploads: false, |
| channels: true, |
| }, |
| guilds: { |
| "123": { |
| slug: "friends-of-openclaw", |
| requireMention: false, |
| users: ["steipete"], |
| channels: { |
| general: { allow: true, autoThread: true }, |
| }, |
| }, |
| }, |
| }, |
| }, |
| }, |
| async () => { |
| const cfg = loadConfig(); |
|
|
| expect(cfg.channels?.discord?.enabled).toBe(true); |
| expect(cfg.channels?.discord?.dm?.groupEnabled).toBe(true); |
| expect(cfg.channels?.discord?.dm?.groupChannels).toEqual(["openclaw-dm"]); |
| expect(cfg.channels?.discord?.actions?.emojiUploads).toBe(true); |
| expect(cfg.channels?.discord?.actions?.stickerUploads).toBe(false); |
| expect(cfg.channels?.discord?.actions?.channels).toBe(true); |
| expect(cfg.channels?.discord?.guilds?.["123"]?.slug).toBe("friends-of-openclaw"); |
| expect(cfg.channels?.discord?.guilds?.["123"]?.channels?.general?.allow).toBe(true); |
| expect(cfg.channels?.discord?.guilds?.["123"]?.channels?.general?.autoThread).toBe(true); |
| }, |
| ); |
| }); |
|
|
| it("rejects numeric discord allowlist entries", () => { |
| const res = validateConfigObject({ |
| channels: { |
| discord: { |
| allowFrom: [123], |
| dm: { allowFrom: [456], groupChannels: [789] }, |
| guilds: { |
| "123": { |
| users: [111], |
| roles: [222], |
| channels: { |
| general: { users: [333], roles: [444] }, |
| }, |
| }, |
| }, |
| execApprovals: { approvers: [555] }, |
| }, |
| }, |
| }); |
|
|
| expect(res.ok).toBe(false); |
| if (!res.ok) { |
| expect( |
| res.issues.some((issue) => issue.message.includes("Discord IDs must be strings")), |
| ).toBe(true); |
| } |
| }); |
| }); |
|
|