Files
diegosouzapw--omniroute/tests/unit/guardrails/visionBridgeHelpers.resolveImageAsDataUri.test.ts
2026-07-13 13:39:12 +08:00

65 lines
2.2 KiB
TypeScript

/**
* Tests for resolveImageAsDataUri helper function.
*/
import test from "node:test";
import assert from "node:assert/strict";
import { resolveImageAsDataUri } from "@/lib/guardrails/visionBridgeHelpers";
test("resolveImageAsDataUri passes through HTTPS URL as-is", () => {
const url = "https://example.com/image.png";
const result = resolveImageAsDataUri(url);
assert.strictEqual(result, url);
});
test("resolveImageAsDataUri passes through HTTP URL as-is", () => {
const url = "http://example.com/image.png";
const result = resolveImageAsDataUri(url);
assert.strictEqual(result, url);
});
test("resolveImageAsDataUri passes through data URI as-is", () => {
const dataUri =
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==";
const result = resolveImageAsDataUri(dataUri);
assert.strictEqual(result, dataUri);
});
test("resolveImageAsDataUri converts base64 string to PNG data URI", () => {
const base64 =
"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==";
const result = resolveImageAsDataUri(base64);
assert.strictEqual(result, `data:image/png;base64,${base64}`);
});
test("resolveImageAsDataUri throws for empty string", () => {
assert.throws(() => {
resolveImageAsDataUri("");
}, /Invalid image URL/);
});
test("resolveImageAsDataUri throws for null", () => {
assert.throws(() => {
resolveImageAsDataUri(null as unknown as string);
}, /Invalid image URL/);
});
test("resolveImageAsDataUri throws for undefined", () => {
assert.throws(() => {
resolveImageAsDataUri(undefined as unknown as string);
}, /Invalid image URL/);
});
test("resolveImageAsDataUri handles data URI with different media types", () => {
const jpegUri = "data:image/jpeg;base64,/9j/4AAQSkZJRg==";
const result = resolveImageAsDataUri(jpegUri);
assert.strictEqual(result, jpegUri);
});
test("resolveImageAsDataUri treats plain base64 with prefix as data URI", () => {
// If it doesn't start with data: or http, treat as raw base64
const rawBase64 = "abcdef123456==";
const result = resolveImageAsDataUri(rawBase64);
assert.strictEqual(result, "data:image/png;base64,abcdef123456==");
});