Files
diegosouzapw--omniroute/tests/unit/settings-transform-schema.test.ts
2026-07-13 13:39:12 +08:00

101 lines
2.2 KiB
TypeScript

import test from "node:test";
import assert from "node:assert/strict";
import { updateSettingsSchema } from "../../src/shared/validation/settingsSchemas.ts";
const commonOperations = [
{
kind: "drop_paragraph_if_contains",
needles: ["needle"],
caseSensitive: true,
},
{
kind: "drop_paragraph_if_starts_with",
prefixes: ["prefix"],
},
{
kind: "replace_text",
match: "before",
replacement: "after",
allOccurrences: true,
},
{
kind: "replace_regex",
pattern: "before",
flags: "gi",
replacement: "after",
},
{
kind: "drop_block_if_contains",
needles: ["needle"],
},
{
kind: "prepend_system_block",
text: "prefix block",
idempotencyKey: "prefix-key",
},
{
kind: "append_system_block",
text: "suffix block",
},
{
kind: "inject_billing_header",
entrypoint: "claude-code",
versionFormat: "ex-machina",
cchAlgo: "sha256-first-user",
version: "1.0.0",
},
] as const;
test("settings schema accepts the shared transform operations in legacy and v2 configs", () => {
const parsed = updateSettingsSchema.parse({
ccBridgeTransforms: {
enabled: true,
pipeline: commonOperations,
},
systemTransforms: {
providers: {
claude: {
enabled: true,
pipeline: commonOperations,
},
},
},
});
assert.equal(parsed.ccBridgeTransforms?.pipeline.length, commonOperations.length);
assert.equal(parsed.systemTransforms?.providers.claude.pipeline.length, commonOperations.length);
});
test("settings schema keeps obfuscate_words limited to systemTransforms", () => {
const obfuscateWords = {
kind: "obfuscate_words",
words: ["opencode"],
targets: ["system"],
} as const;
assert.equal(
updateSettingsSchema.safeParse({
systemTransforms: {
providers: {
claude: {
enabled: true,
pipeline: [obfuscateWords],
},
},
},
}).success,
true
);
assert.equal(
updateSettingsSchema.safeParse({
ccBridgeTransforms: {
enabled: true,
pipeline: [obfuscateWords],
},
}).success,
false
);
});