mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-28 13:10:40 +00:00
162 lines
4.6 KiB
TypeScript
162 lines
4.6 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
resolveDefaultFeishuAccountId,
|
|
resolveDefaultFeishuAccountSelection,
|
|
resolveFeishuAccount,
|
|
} from "./accounts.js";
|
|
|
|
describe("resolveDefaultFeishuAccountId", () => {
|
|
it("prefers channels.feishu.defaultAccount when configured", () => {
|
|
const cfg = {
|
|
channels: {
|
|
feishu: {
|
|
defaultAccount: "router-d",
|
|
accounts: {
|
|
default: { appId: "cli_default", appSecret: "secret_default" },
|
|
"router-d": { appId: "cli_router", appSecret: "secret_router" },
|
|
},
|
|
},
|
|
},
|
|
};
|
|
|
|
expect(resolveDefaultFeishuAccountId(cfg as never)).toBe("router-d");
|
|
});
|
|
|
|
it("normalizes configured defaultAccount before lookup", () => {
|
|
const cfg = {
|
|
channels: {
|
|
feishu: {
|
|
defaultAccount: "Router D",
|
|
accounts: {
|
|
"router-d": { appId: "cli_router", appSecret: "secret_router" },
|
|
},
|
|
},
|
|
},
|
|
};
|
|
|
|
expect(resolveDefaultFeishuAccountId(cfg as never)).toBe("router-d");
|
|
});
|
|
|
|
it("keeps configured defaultAccount even when not present in accounts map", () => {
|
|
const cfg = {
|
|
channels: {
|
|
feishu: {
|
|
defaultAccount: "router-d",
|
|
accounts: {
|
|
default: { appId: "cli_default", appSecret: "secret_default" },
|
|
zeta: { appId: "cli_zeta", appSecret: "secret_zeta" },
|
|
},
|
|
},
|
|
},
|
|
};
|
|
|
|
expect(resolveDefaultFeishuAccountId(cfg as never)).toBe("router-d");
|
|
});
|
|
|
|
it("falls back to literal default account id when present", () => {
|
|
const cfg = {
|
|
channels: {
|
|
feishu: {
|
|
accounts: {
|
|
default: { appId: "cli_default", appSecret: "secret_default" },
|
|
zeta: { appId: "cli_zeta", appSecret: "secret_zeta" },
|
|
},
|
|
},
|
|
},
|
|
};
|
|
|
|
expect(resolveDefaultFeishuAccountId(cfg as never)).toBe("default");
|
|
});
|
|
|
|
it("reports selection source for configured defaults and mapped defaults", () => {
|
|
const explicitDefaultCfg = {
|
|
channels: {
|
|
feishu: {
|
|
defaultAccount: "router-d",
|
|
accounts: {},
|
|
},
|
|
},
|
|
};
|
|
expect(resolveDefaultFeishuAccountSelection(explicitDefaultCfg as never)).toEqual({
|
|
accountId: "router-d",
|
|
source: "explicit-default",
|
|
});
|
|
|
|
const mappedDefaultCfg = {
|
|
channels: {
|
|
feishu: {
|
|
accounts: {
|
|
default: { appId: "cli_default", appSecret: "secret_default" },
|
|
},
|
|
},
|
|
},
|
|
};
|
|
expect(resolveDefaultFeishuAccountSelection(mappedDefaultCfg as never)).toEqual({
|
|
accountId: "default",
|
|
source: "mapped-default",
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("resolveFeishuAccount", () => {
|
|
it("uses top-level credentials with configured default account id even without account map entry", () => {
|
|
const cfg = {
|
|
channels: {
|
|
feishu: {
|
|
defaultAccount: "router-d",
|
|
appId: "top_level_app",
|
|
appSecret: "top_level_secret",
|
|
accounts: {
|
|
default: { appId: "cli_default", appSecret: "secret_default" },
|
|
},
|
|
},
|
|
},
|
|
};
|
|
|
|
const account = resolveFeishuAccount({ cfg: cfg as never, accountId: undefined });
|
|
expect(account.accountId).toBe("router-d");
|
|
expect(account.selectionSource).toBe("explicit-default");
|
|
expect(account.configured).toBe(true);
|
|
expect(account.appId).toBe("top_level_app");
|
|
});
|
|
|
|
it("uses configured default account when accountId is omitted", () => {
|
|
const cfg = {
|
|
channels: {
|
|
feishu: {
|
|
defaultAccount: "router-d",
|
|
accounts: {
|
|
default: { enabled: true },
|
|
"router-d": { appId: "cli_router", appSecret: "secret_router", enabled: true },
|
|
},
|
|
},
|
|
},
|
|
};
|
|
|
|
const account = resolveFeishuAccount({ cfg: cfg as never, accountId: undefined });
|
|
expect(account.accountId).toBe("router-d");
|
|
expect(account.selectionSource).toBe("explicit-default");
|
|
expect(account.configured).toBe(true);
|
|
expect(account.appId).toBe("cli_router");
|
|
});
|
|
|
|
it("keeps explicit accountId selection", () => {
|
|
const cfg = {
|
|
channels: {
|
|
feishu: {
|
|
defaultAccount: "router-d",
|
|
accounts: {
|
|
default: { appId: "cli_default", appSecret: "secret_default" },
|
|
"router-d": { appId: "cli_router", appSecret: "secret_router" },
|
|
},
|
|
},
|
|
},
|
|
};
|
|
|
|
const account = resolveFeishuAccount({ cfg: cfg as never, accountId: "default" });
|
|
expect(account.accountId).toBe("default");
|
|
expect(account.selectionSource).toBe("explicit");
|
|
expect(account.appId).toBe("cli_default");
|
|
});
|
|
});
|