Files
openclaw/extensions/discord/src/status-issues.test.ts
2026-03-22 23:04:04 +00:00

83 lines
2.2 KiB
TypeScript

import type { ChannelAccountSnapshot } from "openclaw/plugin-sdk/channel-contract";
import { describe, expect, it } from "vitest";
import { collectDiscordStatusIssues } from "./status-issues.js";
describe("collectDiscordStatusIssues", () => {
it("reports disabled message content intent and unresolved channel ids", () => {
const issues = collectDiscordStatusIssues([
{
accountId: "ops",
enabled: true,
configured: true,
application: {
intents: {
messageContent: "disabled",
},
},
audit: {
unresolvedChannels: 2,
},
} as ChannelAccountSnapshot,
]);
expect(issues).toEqual(
expect.arrayContaining([
expect.objectContaining({
channel: "discord",
accountId: "ops",
kind: "intent",
}),
expect.objectContaining({
channel: "discord",
accountId: "ops",
kind: "config",
}),
]),
);
});
it("reports channel permission failures with match metadata", () => {
const issues = collectDiscordStatusIssues([
{
accountId: "ops",
enabled: true,
configured: true,
audit: {
channels: [
{
channelId: "123",
ok: false,
missing: ["ViewChannel", "SendMessages"],
error: "403",
matchKey: "alerts",
matchSource: "guilds.ops.channels",
},
],
},
} as ChannelAccountSnapshot,
]);
expect(issues).toHaveLength(1);
expect(issues[0]).toMatchObject({
channel: "discord",
accountId: "ops",
kind: "permissions",
});
expect(issues[0]?.message).toContain("Channel 123 permission check failed");
expect(issues[0]?.message).toContain("alerts");
expect(issues[0]?.message).toContain("guilds.ops.channels");
});
it("ignores accounts that are not enabled and configured", () => {
expect(
collectDiscordStatusIssues([
{
accountId: "ops",
enabled: false,
configured: true,
} as ChannelAccountSnapshot,
]),
).toEqual([]);
});
});