Files
edgeever/apps/api/src/byte-range.test.mjs
T

28 lines
992 B
JavaScript

import { describe, expect, test } from "bun:test";
import { parseByteRange } from "./byte-range.ts";
describe("HTTP byte range parsing", () => {
test("supports bounded, open-ended, and suffix ranges", () => {
expect(parseByteRange("bytes=2-5", 10)).toEqual({
kind: "range",
range: { offset: 2, length: 4 },
end: 5,
});
expect(parseByteRange("bytes=7-", 10)).toMatchObject({
kind: "range",
range: { offset: 7, length: 3 },
});
expect(parseByteRange("bytes=-4", 10)).toMatchObject({
kind: "range",
range: { offset: 6, length: 4 },
});
});
test("rejects malformed, multipart, and unsatisfiable ranges", () => {
expect(parseByteRange("items=0-1", 10)).toEqual({ kind: "invalid" });
expect(parseByteRange("bytes=0-1,4-5", 10)).toEqual({ kind: "invalid" });
expect(parseByteRange("bytes=10-", 10)).toEqual({ kind: "invalid" });
expect(parseByteRange("bytes=8-2", 10)).toEqual({ kind: "invalid" });
});
});