test: remove redundant slash channel-policy integration case

This commit is contained in:
Peter Steinberger
2026-02-16 09:34:35 +00:00
parent acc6b62289
commit 93ad783c1b

View File

@@ -188,123 +188,3 @@ describe("Slack native command argument menus", () => {
});
});
});
function createPolicyHarness() {
const commands = new Map<unknown, (args: unknown) => Promise<void>>();
const postEphemeral = vi.fn().mockResolvedValue({ ok: true });
const app = {
client: { chat: { postEphemeral } },
command: (name: unknown, handler: (args: unknown) => Promise<void>) => {
commands.set(name, handler);
},
};
const ctx = {
cfg: { commands: { native: false } },
runtime: {},
botToken: "bot-token",
botUserId: "bot",
teamId: "T1",
allowFrom: ["*"],
dmEnabled: true,
dmPolicy: "open",
groupDmEnabled: false,
groupDmChannels: [],
defaultRequireMention: true,
groupPolicy: "open",
useAccessGroups: true,
channelsConfig: undefined,
slashCommand: {
enabled: true,
name: "openclaw",
ephemeral: true,
sessionPrefix: "slack:slash",
},
textLimit: 4000,
app,
isChannelAllowed: () => true,
resolveChannelName: async () => ({ name: "unlisted", type: "channel" }),
resolveUserName: async () => ({ name: "Ada" }),
} as Record<string, unknown>;
const account = { accountId: "acct", config: { commands: { native: false } } } as unknown;
return { commands, ctx, account, postEphemeral };
}
function resetPolicyHarness(harness: ReturnType<typeof createPolicyHarness>) {
harness.ctx.allowFrom = ["*"];
harness.ctx.groupPolicy = "open";
harness.ctx.useAccessGroups = true;
harness.ctx.channelsConfig = undefined;
harness.ctx.resolveChannelName = async () => ({ name: "unlisted", type: "channel" });
}
async function runSlashHandler(params: {
commands: Map<unknown, (args: unknown) => Promise<void>>;
command: Partial<{
user_id: string;
user_name: string;
channel_id: string;
channel_name: string;
text: string;
trigger_id: string;
}> &
Pick<{ channel_id: string; channel_name: string }, "channel_id" | "channel_name">;
}): Promise<{ respond: ReturnType<typeof vi.fn>; ack: ReturnType<typeof vi.fn> }> {
const handler = [...params.commands.values()][0];
if (!handler) {
throw new Error("Missing slash handler");
}
const respond = vi.fn().mockResolvedValue(undefined);
const ack = vi.fn().mockResolvedValue(undefined);
await handler({
command: {
user_id: "U1",
user_name: "Ada",
text: "hello",
trigger_id: "t1",
...params.command,
},
ack,
respond,
});
return { respond, ack };
}
describe("slack slash commands channel policy", () => {
let harness: ReturnType<typeof createPolicyHarness>;
beforeAll(async () => {
harness = createPolicyHarness();
await registerCommands(harness.ctx, harness.account);
});
beforeEach(() => {
harness.postEphemeral.mockClear();
resetPolicyHarness(harness);
});
it("blocks unlisted channels when groupPolicy is allowlist", async () => {
harness.ctx.groupPolicy = "allowlist";
harness.ctx.channelsConfig = { C_LISTED: { requireMention: true } };
harness.ctx.resolveChannelName = async () => ({ name: "unlisted", type: "channel" });
const { respond } = await runSlashHandler({
commands: harness.commands,
command: {
channel_id: "C_UNLISTED",
channel_name: "unlisted",
},
});
expect(dispatchMock).not.toHaveBeenCalled();
expect(respond).toHaveBeenCalledWith({
text: "This channel is not allowed.",
response_type: "ephemeral",
});
});
});