mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-06 23:01:08 +00:00
62 lines
1.9 KiB
TypeScript
62 lines
1.9 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
INVALID_EXEC_SECRET_REF_IDS,
|
|
VALID_EXEC_SECRET_REF_IDS,
|
|
} from "../test-utils/secret-ref-test-vectors.js";
|
|
import { buildSecretInputSchema } from "./secret-input-schema.js";
|
|
import {
|
|
buildOptionalSecretInputSchema,
|
|
buildSecretInputArraySchema,
|
|
normalizeSecretInputString,
|
|
} from "./secret-input.js";
|
|
|
|
describe("plugin-sdk secret input helpers", () => {
|
|
it.each([
|
|
{
|
|
name: "accepts undefined for optional secret input",
|
|
run: () => buildOptionalSecretInputSchema().safeParse(undefined).success,
|
|
expected: true,
|
|
},
|
|
{
|
|
name: "accepts arrays of secret inputs",
|
|
run: () =>
|
|
buildSecretInputArraySchema().safeParse([
|
|
"sk-plain",
|
|
{ source: "env", provider: "default", id: "OPENAI_API_KEY" },
|
|
]).success,
|
|
expected: true,
|
|
},
|
|
{
|
|
name: "normalizes plaintext secret strings",
|
|
run: () => normalizeSecretInputString(" sk-test "),
|
|
expected: "sk-test",
|
|
},
|
|
])("$name", ({ run, expected }) => {
|
|
expect(run()).toEqual(expected);
|
|
});
|
|
});
|
|
|
|
describe("plugin-sdk secret input schema", () => {
|
|
const schema = buildSecretInputSchema();
|
|
|
|
it("accepts plaintext and valid refs", () => {
|
|
expect(schema.safeParse("sk-plain").success).toBe(true);
|
|
expect(
|
|
schema.safeParse({ source: "env", provider: "default", id: "OPENAI_API_KEY" }).success,
|
|
).toBe(true);
|
|
expect(
|
|
schema.safeParse({ source: "file", provider: "filemain", id: "/providers/openai/apiKey" })
|
|
.success,
|
|
).toBe(true);
|
|
for (const id of VALID_EXEC_SECRET_REF_IDS) {
|
|
expect(schema.safeParse({ source: "exec", provider: "vault", id }).success, id).toBe(true);
|
|
}
|
|
});
|
|
|
|
it("rejects invalid exec refs", () => {
|
|
for (const id of INVALID_EXEC_SECRET_REF_IDS) {
|
|
expect(schema.safeParse({ source: "exec", provider: "vault", id }).success, id).toBe(false);
|
|
}
|
|
});
|
|
});
|