File size: 1,318 Bytes
9646e24 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | import { describe, it } from "node:test";
import assert from "node:assert/strict";
import { safeJson } from "../utils";
describe("safeJson", () => {
it("parses valid JSON", () => {
assert.deepEqual(safeJson('{"a":1}'), { a: 1 });
});
it("parses valid JSON array", () => {
assert.deepEqual(safeJson('[1,2,3]'), [1, 2, 3]);
});
it("returns null for HTML response", () => {
assert.equal(safeJson("<html><body>error</body></html>"), null);
});
it("returns null for doctype response", () => {
assert.equal(safeJson("<!DOCTYPE html><html>"), null);
});
it("returns null for empty string", () => {
assert.equal(safeJson(""), null);
});
it("returns null for null input", () => {
assert.equal(safeJson(null), null);
});
it("returns null for undefined input", () => {
assert.equal(safeJson(undefined), null);
});
it("returns null for whitespace-only string", () => {
assert.equal(safeJson(" \n\t "), null);
});
it("returns null for invalid JSON", () => {
assert.equal(safeJson("{not json}"), null);
});
it("trims whitespace before parsing", () => {
assert.deepEqual(safeJson(' {"ok":true} '), { ok: true });
});
it("handles JSON starting with whitespace then HTML", () => {
assert.equal(safeJson(" <html>"), null);
});
});
|