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