Files
onGuard24/tests/test_log_buffer.py

46 lines
1.3 KiB
Python
Raw Normal View History

"""Кольцевой буфер логов и SSE-страница."""
import logging
import pytest
from fastapi.testclient import TestClient
from onguard24 import log_buffer
def test_ring_buffer_captures_log_records() -> None:
log_buffer._ring.clear()
handler = log_buffer.RingBufferHandler()
handler.setFormatter(logging.Formatter("%(name)s %(message)s"))
logger = logging.getLogger("test.ring")
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
try:
logger.info("hello ring")
history = log_buffer.get_history()
assert any("hello ring" in e["msg"] for e in history)
finally:
logger.removeHandler(handler)
log_buffer._ring.clear()
def test_logs_page_returns_html(client: TestClient) -> None:
r = client.get("/ui/logs")
assert r.status_code == 200
assert "text/html" in r.headers.get("content-type", "")
assert "Логи" in r.text
assert "log-wrap" in r.text
assert "EventSource" in r.text or "event-stream" in r.text or "ui/logs/stream" in r.text
def test_logs_page_in_nav_rail(client: TestClient) -> None:
r = client.get("/ui/logs")
assert r.status_code == 200
assert "/ui/logs" in r.text
def test_root_has_logs_link(client: TestClient) -> None:
r = client.get("/")
assert r.status_code == 200
assert "/ui/logs" in r.text