mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-27 09:02:15 +00:00
80 lines
2.2 KiB
TypeScript
80 lines
2.2 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
resolveDiscordGroupRequireMention,
|
|
resolveDiscordGroupToolPolicy,
|
|
} from "./group-policy.js";
|
|
|
|
describe("discord group policy", () => {
|
|
it("prefers channel policy, then guild policy, with sender-specific overrides", () => {
|
|
const discordCfg = {
|
|
channels: {
|
|
discord: {
|
|
token: "discord-test",
|
|
guilds: {
|
|
guild1: {
|
|
requireMention: false,
|
|
tools: { allow: ["message.guild"] },
|
|
toolsBySender: {
|
|
"id:user:guild-admin": { allow: ["sessions.list"] },
|
|
},
|
|
channels: {
|
|
"123": {
|
|
requireMention: true,
|
|
tools: { allow: ["message.channel"] },
|
|
toolsBySender: {
|
|
"id:user:channel-admin": { deny: ["exec"] },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
// oxlint-disable-next-line typescript/no-explicit-any
|
|
} as any;
|
|
|
|
expect(
|
|
resolveDiscordGroupRequireMention({ cfg: discordCfg, groupSpace: "guild1", groupId: "123" }),
|
|
).toBe(true);
|
|
expect(
|
|
resolveDiscordGroupRequireMention({
|
|
cfg: discordCfg,
|
|
groupSpace: "guild1",
|
|
groupId: "missing",
|
|
}),
|
|
).toBe(false);
|
|
expect(
|
|
resolveDiscordGroupToolPolicy({
|
|
cfg: discordCfg,
|
|
groupSpace: "guild1",
|
|
groupId: "123",
|
|
senderId: "user:channel-admin",
|
|
}),
|
|
).toEqual({ deny: ["exec"] });
|
|
expect(
|
|
resolveDiscordGroupToolPolicy({
|
|
cfg: discordCfg,
|
|
groupSpace: "guild1",
|
|
groupId: "123",
|
|
senderId: "user:someone",
|
|
}),
|
|
).toEqual({ allow: ["message.channel"] });
|
|
expect(
|
|
resolveDiscordGroupToolPolicy({
|
|
cfg: discordCfg,
|
|
groupSpace: "guild1",
|
|
groupId: "missing",
|
|
senderId: "user:guild-admin",
|
|
}),
|
|
).toEqual({ allow: ["sessions.list"] });
|
|
expect(
|
|
resolveDiscordGroupToolPolicy({
|
|
cfg: discordCfg,
|
|
groupSpace: "guild1",
|
|
groupId: "missing",
|
|
senderId: "user:someone",
|
|
}),
|
|
).toEqual({ allow: ["message.guild"] });
|
|
});
|
|
});
|