mirror of
https://github.com/moltbot/moltbot.git
synced 2026-03-08 06:54:24 +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;
|
||||
|
||||
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", () => {
|
||||
it("prefers channels.feishu.defaultAccount when configured", () => {
|
||||
const cfg = {
|
||||
@@ -128,24 +157,9 @@ describe("resolveFeishuCredentials", () => {
|
||||
|
||||
it("throws unresolved SecretRef error when env SecretRef points to missing env var", () => {
|
||||
const key = "FEISHU_APP_SECRET_MISSING_TEST";
|
||||
const prev = process.env[key];
|
||||
delete process.env[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;
|
||||
}
|
||||
}
|
||||
withEnvVar(key, undefined, () => {
|
||||
expectUnresolvedEnvSecretRefError(key);
|
||||
});
|
||||
});
|
||||
|
||||
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", () => {
|
||||
const key = "FEISHU_APP_SECRET_POLICY_TEST";
|
||||
const prev = process.env[key];
|
||||
process.env[key] = "secret_from_env";
|
||||
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;
|
||||
}
|
||||
}
|
||||
withEnvVar(key, "secret_from_env", () => {
|
||||
expectUnresolvedEnvSecretRefError(key);
|
||||
});
|
||||
});
|
||||
|
||||
it("trims and returns credentials when values are valid strings", () => {
|
||||
|
||||
Reference in New Issue
Block a user