"""Кольцевой буфер логов и 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