mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-07-31 20:32:20 +03:00
- mitm-handler-base: hookBufferStart returns InterceptedRequest with sanitized headers, extractSourceModel parses body.model, writeError emits JSON with sanitized message (Hard Rule #12). - mitm-handler-<id>: nine per-agent happy-path tests (antigravity, kiro, copilot, codex, cursor, zed, claude-code, open-code) exercise full intercept() with mocked fetch via _mitmHandlerHarness.ts; asserts mapped model is forwarded and AgentBridge correlation headers are present. Trae test confirms intercept() rejects with a structured error. - mitm-targets-resolve: ALL_TARGETS contains 9 entries; resolveTarget is case-insensitive and returns null for unknown hosts. - mitm-targets-route: bypass > target > passthrough precedence validated against representative hostnames. - mitm-detection: DETECTORS covers every AgentId; detectAgent never throws and returns DetectionResult-shaped objects for all probes.
22 lines
859 B
TypeScript
22 lines
859 B
TypeScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import { CopilotHandler } from "../../src/mitm/handlers/copilot.ts";
|
|
import { runHandler } from "./_mitmHandlerHarness.ts";
|
|
|
|
test("copilot handler — rewrites model and forwards to /v1/chat/completions", async () => {
|
|
const r = await runHandler(
|
|
new CopilotHandler(),
|
|
{ model: "gpt-4o", messages: [] },
|
|
"claude-3.5-sonnet"
|
|
);
|
|
assert.ok(r.fetchCalled);
|
|
assert.equal(r.status, 200);
|
|
assert.ok(r.fetchUrl?.endsWith("/v1/chat/completions"));
|
|
const sent = JSON.parse(r.fetchBody);
|
|
assert.equal(sent.model, "claude-3.5-sonnet");
|
|
// AgentBridge correlation headers must be present.
|
|
const headers = r.fetchHeaders as Record<string, string>;
|
|
assert.equal(headers["x-omniroute-source"], "agent-bridge");
|
|
assert.equal(headers["x-omniroute-agent"], "copilot");
|
|
});
|