Files
onGuard24/tests/test_json_sanitize.py
Alexandr 80645713a0
Some checks failed
CI / test (push) Successful in 39s
Deploy / deploy (push) Failing after 15s
feat: страница логов /ui/logs с SSE real-time потоком
- log_buffer: RingBufferHandler, кольцевой буфер 600 записей, fan-out SSE
- ui_logs: GET /ui/logs (HTML), GET /ui/logs/stream (EventSource)
- main: install_log_handler при старте, подключён router логов
- nav_rail: ссылка Логи, root_html: кнопка-ссылка Логи
- Исправлено: NaN/Inf/NUL в теле вебхука → 500 от PostgreSQL jsonb
- Тесты: test_log_buffer, test_json_sanitize; 51 passed

Made-with: Cursor
2026-04-03 15:56:58 +03:00

27 lines
738 B
Python

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