Files
onGuard24/tests/test_json_sanitize.py

27 lines
738 B
Python
Raw Permalink Normal View History

import json
import math
from onguard24.ingress.json_sanitize import sanitize_for_jsonb
def test_sanitize_nan_inf_to_none() -> None:
raw = json.loads('{"a": NaN, "b": Infinity, "c": -Infinity, "d": 1.5}')
out = sanitize_for_jsonb(raw)
assert math.isnan(raw["a"])
assert out["a"] is None
assert out["b"] is None
assert out["c"] is None
assert out["d"] == 1.5
def test_sanitize_strips_nul_in_strings() -> None:
assert sanitize_for_jsonb({"x": "a\x00b"}) == {"x": "ab"}
def test_dumps_after_sanitize_is_valid_json() -> None:
raw = json.loads('{"v": NaN}')
clean = sanitize_for_jsonb(raw)
s = json.dumps(clean, allow_nan=False)
assert "NaN" not in s
assert json.loads(s)["v"] is None