65 lines
2.2 KiB
TypeScript
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==");
|
|
});
|