Files
diegosouzapw--omniroute/tests/unit/service-payload-rules.test.ts
2026-07-13 13:39:12 +08:00

85 lines
3.0 KiB
TypeScript

import { describe, it, afterEach } from "node:test";
import assert from "node:assert/strict";
const mod = await import("../../open-sse/services/payloadRules.ts");
describe("payloadRules", () => {
afterEach(() => {
mod.resetPayloadRulesConfigForTests();
});
describe("normalizePayloadRulesConfig", () => {
it("returns default shape for null input", () => {
const result = mod.normalizePayloadRulesConfig(null);
assert.ok(Array.isArray(result.default));
assert.ok(Array.isArray(result.override));
assert.ok(Array.isArray(result.filter));
assert.ok(Array.isArray(result.defaultRaw));
});
it("returns default shape for empty object", () => {
const result = mod.normalizePayloadRulesConfig({});
assert.equal(result.default.length, 0);
assert.equal(result.override.length, 0);
assert.equal(result.filter.length, 0);
});
it("parses mutation rules", () => {
const input = {
default: [{ models: [{ name: "gpt-4" }], params: { temperature: 0.7 } }],
};
const result = mod.normalizePayloadRulesConfig(input);
assert.equal(result.default.length, 1);
assert.equal(result.default[0].models[0].name, "gpt-4");
});
it("parses filter rules", () => {
const input = {
filter: [{ models: [{ name: "*" }], params: ["stream"] }],
};
const result = mod.normalizePayloadRulesConfig(input);
assert.equal(result.filter.length, 1);
assert.equal(result.filter[0].params[0], "stream");
});
it("handles legacy default-raw key", () => {
const input = {
"default-raw": [{ models: [{ name: "test" }], params: { key: "val" } }],
};
const result = mod.normalizePayloadRulesConfig(input);
assert.ok(result.defaultRaw.length >= 1);
});
it("filters out invalid mutation rules", () => {
const input = {
default: [
{ models: [], params: {} }, // empty models → filtered
{ models: [{ name: "valid" }], params: { k: "v" } },
],
};
const result = mod.normalizePayloadRulesConfig(input);
assert.equal(result.default.length, 1);
});
});
describe("setPayloadRulesConfig / clearPayloadRulesConfigOverride", () => {
it("setPayloadRulesConfig sets override", () => {
mod.setPayloadRulesConfig({ default: [{ models: [{ name: "m" }], params: { p: 1 } }] });
// No assertion needed — just verifying it doesn't throw
});
it("clearPayloadRulesConfigOverride clears override", () => {
mod.setPayloadRulesConfig({ default: [{ models: [{ name: "m" }], params: { p: 1 } }] });
mod.clearPayloadRulesConfigOverride();
// No assertion needed — verifying it doesn't throw
});
});
describe("resetPayloadRulesConfigForTests", () => {
it("resets state without throwing", () => {
mod.setPayloadRulesConfig({ default: [{ models: [{ name: "m" }], params: { p: 1 } }] });
mod.resetPayloadRulesConfigForTests();
});
});
});