Files
buzz-sheet/lib/media/inspect.test.ts
T
gunshiz 95c45841e7
CI / Verify (push) Failing after 1m4s
CI / Build immutable images and deploy (push) Skipped
feat : update i guess
2026-10-03 15:47:47 +07:00

21 lines
1.1 KiB
TypeScript

import sharp from "sharp";
import { describe, expect, it } from "vitest";
import { inspectImage } from "./inspect";
describe("image decoding before publication", () => {
it("accepts real decoded image dimensions", async () => {
const bytes = await sharp({ create: { width: 8, height: 12, channels: 3, background: "red" } }).png().toBuffer();
await expect(inspectImage(bytes, "image/png")).resolves.toEqual({ width: 8, height: 12 });
await expect(inspectImage(bytes, "image/jpeg")).rejects.toMatchObject({ status: 422 });
await expect(inspectImage(bytes.subarray(0, 40), "image/png")).rejects.toMatchObject({ status: 422 });
});
it.each(["jpeg", "webp"] as const)("accepts a decoded %s image", async (format) => {
const bytes = await sharp({ create: { width: 8, height: 12, channels: 3, background: "red" } })[format]().toBuffer();
await expect(inspectImage(bytes, `image/${format}`)).resolves.toEqual({ width: 8, height: 12 });
});
it("rejects a magic-byte-only fake", async () => {
await expect(inspectImage(Uint8Array.from([137, 80, 78, 71, 13, 10, 26, 10]), "image/png"))
.rejects.toMatchObject({ status: 422 });
});
});