test: collapse helper extension test suites

This commit is contained in:
Peter Steinberger
2026-03-25 05:19:46 +00:00
parent 6f137fff76
commit bc8622c659
11 changed files with 566 additions and 579 deletions

View File

@@ -1,5 +1,6 @@
import { beforeEach, describe, expect, it, vi } from "vitest";
import type { OpenClawConfig } from "../runtime-api.js";
import { looksLikeFeishuId, normalizeFeishuTarget, resolveReceiveIdType } from "./targets.js";
const probeFeishuMock = vi.hoisted(() => vi.fn());
const createFeishuClientMock = vi.hoisted(() => vi.fn());
@@ -615,3 +616,71 @@ describe("feishuPlugin actions", () => {
).rejects.toThrow('Unsupported Feishu action: "search"');
});
});
describe("resolveReceiveIdType", () => {
it("resolves chat IDs by oc_ prefix", () => {
expect(resolveReceiveIdType("oc_123")).toBe("chat_id");
});
it("resolves open IDs by ou_ prefix", () => {
expect(resolveReceiveIdType("ou_123")).toBe("open_id");
});
it("defaults unprefixed IDs to user_id", () => {
expect(resolveReceiveIdType("u_123")).toBe("user_id");
});
it("treats explicit group targets as chat_id", () => {
expect(resolveReceiveIdType("group:oc_123")).toBe("chat_id");
});
it("treats explicit channel targets as chat_id", () => {
expect(resolveReceiveIdType("channel:oc_123")).toBe("chat_id");
});
it("treats dm-prefixed open IDs as open_id", () => {
expect(resolveReceiveIdType("dm:ou_123")).toBe("open_id");
});
});
describe("normalizeFeishuTarget", () => {
it("strips provider and user prefixes", () => {
expect(normalizeFeishuTarget("feishu:user:ou_123")).toBe("ou_123");
expect(normalizeFeishuTarget("lark:user:ou_123")).toBe("ou_123");
});
it("strips provider and chat prefixes", () => {
expect(normalizeFeishuTarget("feishu:chat:oc_123")).toBe("oc_123");
});
it("normalizes group/channel prefixes to chat ids", () => {
expect(normalizeFeishuTarget("group:oc_123")).toBe("oc_123");
expect(normalizeFeishuTarget("feishu:group:oc_123")).toBe("oc_123");
expect(normalizeFeishuTarget("channel:oc_456")).toBe("oc_456");
expect(normalizeFeishuTarget("lark:channel:oc_456")).toBe("oc_456");
});
it("accepts provider-prefixed raw ids", () => {
expect(normalizeFeishuTarget("feishu:ou_123")).toBe("ou_123");
});
it("strips provider and dm prefixes", () => {
expect(normalizeFeishuTarget("lark:dm:ou_123")).toBe("ou_123");
});
});
describe("looksLikeFeishuId", () => {
it("accepts provider-prefixed user targets", () => {
expect(looksLikeFeishuId("feishu:user:ou_123")).toBe(true);
});
it("accepts provider-prefixed chat targets", () => {
expect(looksLikeFeishuId("lark:chat:oc_123")).toBe(true);
});
it("accepts group/channel targets", () => {
expect(looksLikeFeishuId("feishu:group:oc_123")).toBe(true);
expect(looksLikeFeishuId("group:oc_123")).toBe(true);
expect(looksLikeFeishuId("channel:oc_456")).toBe(true);
});
});

View File

@@ -1,28 +0,0 @@
import { describe, expect, it } from "vitest";
import { createPluginSetupWizardStatus } from "../../../test/helpers/extensions/setup-wizard.js";
import type { OpenClawConfig } from "../runtime-api.js";
import { feishuPlugin } from "./channel.js";
const feishuGetStatus = createPluginSetupWizardStatus(feishuPlugin);
describe("feishu setup wizard status", () => {
it("treats SecretRef appSecret as configured when appId is present", async () => {
const status = await feishuGetStatus({
cfg: {
channels: {
feishu: {
appId: "cli_a123456",
appSecret: {
source: "env",
provider: "default",
id: "FEISHU_APP_SECRET",
},
},
},
} as OpenClawConfig,
accountOverrides: {},
});
expect(status.configured).toBe(true);
});
});

View File

@@ -93,6 +93,26 @@ describe("feishu setup wizard", () => {
});
describe("feishu setup wizard status", () => {
it("treats SecretRef appSecret as configured when appId is present", async () => {
const status = await feishuGetStatus({
cfg: {
channels: {
feishu: {
appId: "cli_a123456",
appSecret: {
source: "env",
provider: "default",
id: "FEISHU_APP_SECRET",
},
},
},
} as never,
accountOverrides: {},
});
expect(status.configured).toBe(true);
});
it("does not fallback to top-level appId when account explicitly sets empty appId", async () => {
const status = await feishuGetStatus({
cfg: {

View File

@@ -1,70 +0,0 @@
import { describe, expect, it } from "vitest";
import { looksLikeFeishuId, normalizeFeishuTarget, resolveReceiveIdType } from "./targets.js";
describe("resolveReceiveIdType", () => {
it("resolves chat IDs by oc_ prefix", () => {
expect(resolveReceiveIdType("oc_123")).toBe("chat_id");
});
it("resolves open IDs by ou_ prefix", () => {
expect(resolveReceiveIdType("ou_123")).toBe("open_id");
});
it("defaults unprefixed IDs to user_id", () => {
expect(resolveReceiveIdType("u_123")).toBe("user_id");
});
it("treats explicit group targets as chat_id", () => {
expect(resolveReceiveIdType("group:oc_123")).toBe("chat_id");
});
it("treats explicit channel targets as chat_id", () => {
expect(resolveReceiveIdType("channel:oc_123")).toBe("chat_id");
});
it("treats dm-prefixed open IDs as open_id", () => {
expect(resolveReceiveIdType("dm:ou_123")).toBe("open_id");
});
});
describe("normalizeFeishuTarget", () => {
it("strips provider and user prefixes", () => {
expect(normalizeFeishuTarget("feishu:user:ou_123")).toBe("ou_123");
expect(normalizeFeishuTarget("lark:user:ou_123")).toBe("ou_123");
});
it("strips provider and chat prefixes", () => {
expect(normalizeFeishuTarget("feishu:chat:oc_123")).toBe("oc_123");
});
it("normalizes group/channel prefixes to chat ids", () => {
expect(normalizeFeishuTarget("group:oc_123")).toBe("oc_123");
expect(normalizeFeishuTarget("feishu:group:oc_123")).toBe("oc_123");
expect(normalizeFeishuTarget("channel:oc_456")).toBe("oc_456");
expect(normalizeFeishuTarget("lark:channel:oc_456")).toBe("oc_456");
});
it("accepts provider-prefixed raw ids", () => {
expect(normalizeFeishuTarget("feishu:ou_123")).toBe("ou_123");
});
it("strips provider and dm prefixes", () => {
expect(normalizeFeishuTarget("lark:dm:ou_123")).toBe("ou_123");
});
});
describe("looksLikeFeishuId", () => {
it("accepts provider-prefixed user targets", () => {
expect(looksLikeFeishuId("feishu:user:ou_123")).toBe(true);
});
it("accepts provider-prefixed chat targets", () => {
expect(looksLikeFeishuId("lark:chat:oc_123")).toBe(true);
});
it("accepts group/channel targets", () => {
expect(looksLikeFeishuId("feishu:group:oc_123")).toBe(true);
expect(looksLikeFeishuId("group:oc_123")).toBe(true);
expect(looksLikeFeishuId("channel:oc_456")).toBe(true);
});
});