Files
diegosouzapw--omniroute/tests/unit/inspector-context-key.test.ts
2026-07-13 13:39:12 +08:00

90 lines
3.5 KiB
TypeScript

import test from "node:test";
import assert from "node:assert/strict";
import { extractSystemPrompt, computeContextKey } from "../../src/mitm/inspector/contextKey.ts";
import type { InterceptedRequest } from "../../src/mitm/inspector/types.ts";
function makeReq(body: unknown): InterceptedRequest {
return {
id: "00000000-0000-0000-0000-000000000001",
source: "agent-bridge",
timestamp: new Date().toISOString(),
method: "POST",
host: "api.openai.com",
path: "/v1/chat/completions",
requestHeaders: {},
requestBody: body !== null ? JSON.stringify(body) : null,
requestSize: 0,
responseHeaders: {},
responseBody: null,
responseSize: 0,
status: 200,
};
}
test("extractSystemPrompt — OpenAI chat messages[0] role=system", () => {
const req = makeReq({
messages: [{ role: "system", content: "You are a helpful assistant." }, { role: "user", content: "Hello" }],
});
assert.equal(extractSystemPrompt(req), "You are a helpful assistant.");
});
test("extractSystemPrompt — Anthropic top-level system field (string)", () => {
const req = makeReq({ system: "You are Claude.", messages: [{ role: "user", content: "Hello" }] });
assert.equal(extractSystemPrompt(req), "You are Claude.");
});
test("extractSystemPrompt — Anthropic top-level system field (array)", () => {
const req = makeReq({
system: [{ type: "text", text: "You are a helpful assistant." }],
messages: [{ role: "user", content: "Hello" }],
});
assert.equal(extractSystemPrompt(req), "You are a helpful assistant.");
});
test("extractSystemPrompt — Gemini systemInstruction.parts", () => {
const req = makeReq({
systemInstruction: { parts: [{ text: "You are a Gemini assistant." }] },
contents: [{ parts: [{ text: "Hello" }] }],
});
assert.equal(extractSystemPrompt(req), "You are a Gemini assistant.");
});
test("extractSystemPrompt — null when no system prompt", () => {
assert.equal(extractSystemPrompt(makeReq({ messages: [{ role: "user", content: "Hi" }] })), null);
});
test("extractSystemPrompt — null when requestBody is null", () => {
assert.equal(extractSystemPrompt(makeReq(null)), null);
});
test("extractSystemPrompt — null when requestBody is invalid JSON", () => {
const req = makeReq(null);
req.requestBody = "not-json{{{";
assert.equal(extractSystemPrompt(req), null);
});
test("computeContextKey — same system → same 12-hex key", () => {
const sys = "You are a helpful assistant.";
const key1 = computeContextKey(makeReq({ messages: [{ role: "system", content: sys }, { role: "user", content: "Hi" }] }));
const key2 = computeContextKey(makeReq({ messages: [{ role: "system", content: sys }, { role: "user", content: "Bye" }] }));
assert.ok(key1 !== null);
assert.equal(key1, key2);
});
test("computeContextKey — returns 12 hex chars", () => {
const key = computeContextKey(makeReq({ messages: [{ role: "system", content: "Test system" }, { role: "user", content: "Hi" }] }));
assert.ok(key !== null);
assert.equal(key!.length, 12);
assert.match(key!, /^[0-9a-f]{12}$/);
});
test("computeContextKey — null when no system", () => {
assert.equal(computeContextKey(makeReq({ messages: [{ role: "user", content: "Hi" }] })), null);
});
test("computeContextKey — different systems → different keys", () => {
const k1 = computeContextKey(makeReq({ messages: [{ role: "system", content: "System A" }, { role: "user", content: "Hi" }] }));
const k2 = computeContextKey(makeReq({ messages: [{ role: "system", content: "System B" }, { role: "user", content: "Hi" }] }));
assert.notEqual(k1, k2);
});