mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-19 11:08:37 +00:00
refactor(feishu): dedupe accounts env secret-ref checks
This commit is contained in:
@@ -9,6 +9,35 @@ import type { FeishuConfig } from "./types.js";
|
|||||||
|
|
||||||
const asConfig = (value: Partial<FeishuConfig>) => value as FeishuConfig;
|
const asConfig = (value: Partial<FeishuConfig>) => value as FeishuConfig;
|
||||||
|
|
||||||
|
function withEnvVar(key: string, value: string | undefined, run: () => void) {
|
||||||
|
const prev = process.env[key];
|
||||||
|
if (value === undefined) {
|
||||||
|
delete process.env[key];
|
||||||
|
} else {
|
||||||
|
process.env[key] = value;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
run();
|
||||||
|
} finally {
|
||||||
|
if (prev === undefined) {
|
||||||
|
delete process.env[key];
|
||||||
|
} else {
|
||||||
|
process.env[key] = prev;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function expectUnresolvedEnvSecretRefError(key: string) {
|
||||||
|
expect(() =>
|
||||||
|
resolveFeishuCredentials(
|
||||||
|
asConfig({
|
||||||
|
appId: "cli_123",
|
||||||
|
appSecret: { source: "env", provider: "default", id: key } as never,
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
).toThrow(/unresolved SecretRef/i);
|
||||||
|
}
|
||||||
|
|
||||||
describe("resolveDefaultFeishuAccountId", () => {
|
describe("resolveDefaultFeishuAccountId", () => {
|
||||||
it("prefers channels.feishu.defaultAccount when configured", () => {
|
it("prefers channels.feishu.defaultAccount when configured", () => {
|
||||||
const cfg = {
|
const cfg = {
|
||||||
@@ -128,24 +157,9 @@ describe("resolveFeishuCredentials", () => {
|
|||||||
|
|
||||||
it("throws unresolved SecretRef error when env SecretRef points to missing env var", () => {
|
it("throws unresolved SecretRef error when env SecretRef points to missing env var", () => {
|
||||||
const key = "FEISHU_APP_SECRET_MISSING_TEST";
|
const key = "FEISHU_APP_SECRET_MISSING_TEST";
|
||||||
const prev = process.env[key];
|
withEnvVar(key, undefined, () => {
|
||||||
delete process.env[key];
|
expectUnresolvedEnvSecretRefError(key);
|
||||||
try {
|
});
|
||||||
expect(() =>
|
|
||||||
resolveFeishuCredentials(
|
|
||||||
asConfig({
|
|
||||||
appId: "cli_123",
|
|
||||||
appSecret: { source: "env", provider: "default", id: key } as never,
|
|
||||||
}),
|
|
||||||
),
|
|
||||||
).toThrow(/unresolved SecretRef/i);
|
|
||||||
} finally {
|
|
||||||
if (prev === undefined) {
|
|
||||||
delete process.env[key];
|
|
||||||
} else {
|
|
||||||
process.env[key] = prev;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("resolves env SecretRef objects when unresolved refs are allowed", () => {
|
it("resolves env SecretRef objects when unresolved refs are allowed", () => {
|
||||||
@@ -204,24 +218,9 @@ describe("resolveFeishuCredentials", () => {
|
|||||||
|
|
||||||
it("preserves unresolved SecretRef diagnostics for env refs in default mode", () => {
|
it("preserves unresolved SecretRef diagnostics for env refs in default mode", () => {
|
||||||
const key = "FEISHU_APP_SECRET_POLICY_TEST";
|
const key = "FEISHU_APP_SECRET_POLICY_TEST";
|
||||||
const prev = process.env[key];
|
withEnvVar(key, "secret_from_env", () => {
|
||||||
process.env[key] = "secret_from_env";
|
expectUnresolvedEnvSecretRefError(key);
|
||||||
try {
|
});
|
||||||
expect(() =>
|
|
||||||
resolveFeishuCredentials(
|
|
||||||
asConfig({
|
|
||||||
appId: "cli_123",
|
|
||||||
appSecret: { source: "env", provider: "default", id: key } as never,
|
|
||||||
}),
|
|
||||||
),
|
|
||||||
).toThrow(/unresolved SecretRef/i);
|
|
||||||
} finally {
|
|
||||||
if (prev === undefined) {
|
|
||||||
delete process.env[key];
|
|
||||||
} else {
|
|
||||||
process.env[key] = prev;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("trims and returns credentials when values are valid strings", () => {
|
it("trims and returns credentials when values are valid strings", () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user