| import test from "node:test"; |
| import assert from "node:assert/strict"; |
| import { InMemoryMediaStore } from "../src/services/mediaStore.js"; |
| import { createResponseNormalizationService } from "../src/services/responseNormalizationService.js"; |
|
|
| test("adds proxy URLs for audio and data-url image outputs", () => { |
| const mediaStore = new InMemoryMediaStore({ ttlSeconds: 3600 }); |
| const service = createResponseNormalizationService({ mediaStore }); |
|
|
| const normalized = service.normalize({ |
| choices: [ |
| { |
| message: { |
| audio: { |
| data: "ZmFrZS1hdWRpbw==" |
| }, |
| content: [ |
| { |
| type: "image_url", |
| image_url: { |
| url: "data:image/png;base64,aW1hZ2U=" |
| } |
| } |
| ] |
| } |
| } |
| ] |
| }, { |
| publicBaseUrl: "http://localhost:3000", |
| audioFormat: "mp3", |
| exposeMediaUrls: true |
| }); |
|
|
| assert.match(normalized.choices[0].message.audio.url, /^http:\/\/localhost:3000\/v1\/media\//); |
| assert.match(normalized.choices[0].message.content[0].image_url.proxy_url, /^http:\/\/localhost:3000\/v1\/media\//); |
| assert.equal(normalized.proxy.media.length, 2); |
| }); |
|
|