import type { OpenClawConfig } from "openclaw/plugin-sdk/core"; import { describe, expect, it } from "vitest"; import { FeishuConfigSchema } from "./config-schema.js"; import {
isFeishuGroupAllowed,
resolveFeishuAllowlistMatch,
resolveFeishuGroupConfig,
resolveFeishuReplyPolicy,
} from "./policy.js"; import type { FeishuConfig } from "./types.js";
function createCfg(feishu: Record<string, unknown>): OpenClawConfig { return {
channels: {
feishu,
},
} as OpenClawConfig;
}
function createFeishuConfig(overrides: Partial<FeishuConfig>): FeishuConfig { return FeishuConfigSchema.parse(overrides);
}
describe("resolveFeishuReplyPolicy", () => {
it("defaults open groups to no mention when unset", () => {
expect(
resolveFeishuReplyPolicy({
isDirectMessage: false,
cfg: createCfg({ groupPolicy: "open" }),
groupPolicy: "open",
groupId: "oc_1",
}),
).toEqual({ requireMention: false });
});
it("allows group when groupPolicy is 'open'", () => {
expect(
isFeishuGroupAllowed({
groupPolicy: "open",
allowFrom: [],
senderId: "oc_group_999",
}),
).toBe(true);
});
it("treats 'allowall' as equivalent to 'open'", () => {
expect(
isFeishuGroupAllowed({
groupPolicy: "allowall",
allowFrom: [],
senderId: "oc_group_999",
}),
).toBe(true);
});
it("rejects group when groupPolicy is 'disabled'", () => {
expect(
isFeishuGroupAllowed({
groupPolicy: "disabled",
allowFrom: ["oc_group_999"],
senderId: "oc_group_999",
}),
).toBe(false);
});
it("rejects group when groupPolicy is 'allowlist' and allowFrom is empty", () => {
expect(
isFeishuGroupAllowed({
groupPolicy: "allowlist",
allowFrom: [],
senderId: "oc_group_999",
}),
).toBe(false);
});
});
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.