mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-09 22:30:43 +00:00
92 lines
2.6 KiB
TypeScript
92 lines
2.6 KiB
TypeScript
import type { OpenClawConfig } from "openclaw/plugin-sdk/config-types";
|
|
import { describe, expect, it } from "vitest";
|
|
import { createSlackPluginBase, setSlackChannelAllowlist, slackConfigAdapter } from "./shared.js";
|
|
|
|
describe("createSlackPluginBase", () => {
|
|
it("owns Slack native command name overrides", () => {
|
|
const plugin = createSlackPluginBase({
|
|
setup: {} as never,
|
|
setupWizard: {} as never,
|
|
});
|
|
|
|
expect(
|
|
plugin.commands?.resolveNativeCommandName?.({
|
|
commandKey: "status",
|
|
defaultName: "status",
|
|
}),
|
|
).toBe("agentstatus");
|
|
expect(
|
|
plugin.commands?.resolveNativeCommandName?.({
|
|
commandKey: "tts",
|
|
defaultName: "tts",
|
|
}),
|
|
).toBe("tts");
|
|
});
|
|
|
|
it("exposes security checks on the setup surface", () => {
|
|
const plugin = createSlackPluginBase({
|
|
setup: {} as never,
|
|
setupWizard: {} as never,
|
|
});
|
|
|
|
expect(plugin.security?.resolveDmPolicy).toBeTypeOf("function");
|
|
expect(plugin.security?.collectWarnings).toBeTypeOf("function");
|
|
expect(plugin.security?.collectAuditFindings).toBeTypeOf("function");
|
|
});
|
|
});
|
|
|
|
describe("setSlackChannelAllowlist", () => {
|
|
it("writes canonical enabled entries for setup-generated channel allowlists", () => {
|
|
const result = setSlackChannelAllowlist(
|
|
{
|
|
channels: {
|
|
slack: {
|
|
accounts: {
|
|
work: {},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
"work",
|
|
["C123", "C456"],
|
|
);
|
|
|
|
expect(result.channels?.slack?.accounts?.work?.channels).toEqual({
|
|
C123: { enabled: true },
|
|
C456: { enabled: true },
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("slackConfigAdapter", () => {
|
|
it("keeps read-only accessors from resolving token SecretRefs", () => {
|
|
const cfg = {
|
|
secrets: {
|
|
providers: {
|
|
slack_bot: {
|
|
source: "file",
|
|
path: "/tmp/openclaw-missing-slack-bot-token",
|
|
mode: "singleValue",
|
|
},
|
|
slack_app: {
|
|
source: "file",
|
|
path: "/tmp/openclaw-missing-slack-app-token",
|
|
mode: "singleValue",
|
|
},
|
|
},
|
|
},
|
|
channels: {
|
|
slack: {
|
|
botToken: { source: "file", provider: "slack_bot", id: "value" },
|
|
appToken: { source: "file", provider: "slack_app", id: "value" },
|
|
allowFrom: ["U123"],
|
|
defaultTo: "C123",
|
|
},
|
|
},
|
|
} as unknown as OpenClawConfig;
|
|
|
|
expect(slackConfigAdapter.resolveAllowFrom?.({ cfg, accountId: "default" })).toEqual(["U123"]);
|
|
expect(slackConfigAdapter.resolveDefaultTo?.({ cfg, accountId: "default" })).toBe("C123");
|
|
});
|
|
});
|