mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-09-13 18:32:12 +03:00
Landed with the design call resolved per the owner's pick — **option 1**: the synced store is now endpoint-agnostic (persistDiscoveredModels and managedModelImport no longer drop non-chat models at write time), and chat selectability moved to read time (auto-pool expansion in autoStrategy applies filterChatSelectableModels; the models-route projection already had its chatOnly filter). Your discovery test now passes end-to-end (3/3): /api/show capabilities persist per connection and image/embedding requests route through the advertising host. Reconciliation notes: conflicted areas merged onto the current tip (adobe discovery import, requestedModel preflight signature, resolvedProvider fast-path coexists with the synced-route override — explicit resolution wins); carried base-red drains (#10055 memoization, #11071 test variants) dropped as already-landed; the managed-model-import exclusion test was propagated to the new contract (image/video models persist; the read filter still hides them from chat pickers — pinned by a new assertion). Full battery: 205/206 focused (the one red is a confirmed periodic-timer timing flake on the loaded devbox — 20/20 isolated), autoCombo vitest 30/30, combo suites 46/46, gates + typecheck clean. Thank you @yourspraveen — the capability probe + routing design was right; it just needed the store contract opened up. Fixes #11087.
78 lines
2.5 KiB
TypeScript
78 lines
2.5 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
|
|
import { fetchRemoteMedia } from "../../src/shared/network/remoteImageFetch.ts";
|
|
|
|
test("generic remote-media fetch reuses the public-only bounded download policy", async () => {
|
|
const result = await fetchRemoteMedia("https://cdn.example.test/video.mp4", {
|
|
fetchImpl: async () =>
|
|
new Response(Buffer.from("video-bytes"), {
|
|
headers: { "content-type": "video/mp4" },
|
|
}),
|
|
guard: "public-only",
|
|
lookup: async () => [{ address: "203.0.113.10", family: 4 }],
|
|
maxBytes: 1024,
|
|
});
|
|
|
|
assert.equal(result.buffer.toString(), "video-bytes");
|
|
assert.equal(result.contentType, "video/mp4");
|
|
});
|
|
|
|
test("generic remote-media fetch rejects private DNS answers before downloading", async () => {
|
|
let fetched = false;
|
|
await assert.rejects(
|
|
() =>
|
|
fetchRemoteMedia("https://cdn.example.test/video.mp4", {
|
|
fetchImpl: async () => {
|
|
fetched = true;
|
|
return new Response("unexpected");
|
|
},
|
|
guard: "public-only",
|
|
lookup: async () => [{ address: "127.0.0.1", family: 4 }],
|
|
}),
|
|
/blocked private address/
|
|
);
|
|
assert.equal(fetched, false);
|
|
});
|
|
|
|
test("HTTPS-only media mode rejects a redirect downgrade before following the hop", async () => {
|
|
const fetched: string[] = [];
|
|
await assert.rejects(
|
|
() =>
|
|
fetchRemoteMedia("https://cdn.example.test/video.mp4", {
|
|
enforceHttps: true,
|
|
fetchImpl: async (input) => {
|
|
fetched.push(String(input));
|
|
return new Response(null, {
|
|
status: 302,
|
|
headers: { location: "http://public.example.test/downgraded.mp4" },
|
|
});
|
|
},
|
|
guard: "public-only",
|
|
lookup: async () => [{ address: "203.0.113.10", family: 4 }],
|
|
}),
|
|
/HTTPS/
|
|
);
|
|
assert.deepEqual(fetched, ["https://cdn.example.test/video.mp4"]);
|
|
});
|
|
|
|
test("existing image/audio callers remain backwards-compatible when HTTPS-only mode is omitted", async () => {
|
|
const fetched: string[] = [];
|
|
const result = await fetchRemoteMedia("https://cdn.example.test/media", {
|
|
fetchImpl: async (input) => {
|
|
fetched.push(String(input));
|
|
if (fetched.length === 1) {
|
|
return new Response(null, {
|
|
status: 302,
|
|
headers: { location: "http://public.example.test/media" },
|
|
});
|
|
}
|
|
return new Response("media");
|
|
},
|
|
guard: "public-only",
|
|
lookup: async () => [{ address: "203.0.113.10", family: 4 }],
|
|
});
|
|
assert.equal(result.buffer.toString(), "media");
|
|
assert.equal(fetched.length, 2);
|
|
});
|