Files
OmniRoute/tests/unit/t26-ai-sdk-accept-header-compat.test.mjs
Diego Rodrigues de Sa e Souza 6acd36e374 Merge pull request #655 from oSoWoSo/dev
Merged! Thanks @zen0bit for polishing the Czech translations 🇨🇿
2026-03-26 23:50:54 -03:00

45 lines
2.0 KiB
JavaScript

import test from "node:test";
import assert from "node:assert/strict";
const { clientWantsJsonResponse, resolveStreamFlag, stripMarkdownCodeFence } =
await import("../../open-sse/utils/aiSdkCompat.ts");
test("T26: explicit stream:true takes priority over Accept application/json (#656)", () => {
assert.equal(clientWantsJsonResponse("application/json"), true);
// Body stream:true always wins — even with Accept: application/json
assert.equal(resolveStreamFlag(true, "application/json"), true);
});
test("T26: text/event-stream keeps SSE behavior", () => {
assert.equal(clientWantsJsonResponse("text/event-stream"), false);
assert.equal(resolveStreamFlag(true, "text/event-stream"), true);
});
test("T26: mixed Accept header prefers SSE only when text/event-stream is present", () => {
assert.equal(clientWantsJsonResponse("application/json, text/event-stream"), false);
assert.equal(resolveStreamFlag(true, "application/json, text/event-stream"), true);
});
test("T26: markdown code fence stripping unwraps Claude JSON blocks", () => {
const wrapped = '```json\n{"name":"omniroute"}\n```';
assert.equal(stripMarkdownCodeFence(wrapped), '{"name":"omniroute"}');
});
test("T26: non-fenced content is returned unchanged", () => {
const plain = '{"name":"omniroute"}';
assert.equal(stripMarkdownCodeFence(plain), plain);
});
test("T26: undefined stream falls back to Accept header heuristic (#656)", () => {
// No explicit stream param — Accept: application/json means no streaming
assert.equal(resolveStreamFlag(undefined, "application/json"), false);
// No explicit stream param + no JSON accept = stream by default
assert.equal(resolveStreamFlag(undefined, "text/event-stream"), true);
assert.equal(resolveStreamFlag(undefined, undefined), true);
});
test("T26: explicit stream:false always prevents streaming", () => {
assert.equal(resolveStreamFlag(false, "text/event-stream"), false);
assert.equal(resolveStreamFlag(false, undefined), false);
});