history archive router precedence + endpoint/source tests + history sync register test + task status update
This commit is contained in:
@@ -225,6 +225,32 @@ class TestHistoryList:
|
||||
_args, kwargs = mock_fn.call_args
|
||||
assert kwargs.get("origin") == "blocklist"
|
||||
|
||||
async def test_forwards_source_filter(self, history_client: AsyncClient) -> None:
|
||||
"""The ``source`` query parameter is forwarded to the service."""
|
||||
mock_fn = AsyncMock(return_value=_make_history_list(n=0))
|
||||
with patch(
|
||||
"app.routers.history.history_service.list_history",
|
||||
new=mock_fn,
|
||||
):
|
||||
await history_client.get("/api/history?source=archive")
|
||||
|
||||
_args, kwargs = mock_fn.call_args
|
||||
assert kwargs.get("source") == "archive"
|
||||
|
||||
async def test_archive_route_forces_source_archive(
|
||||
self, history_client: AsyncClient
|
||||
) -> None:
|
||||
"""GET /api/history/archive should call list_history with source='archive'."""
|
||||
mock_fn = AsyncMock(return_value=_make_history_list(n=0))
|
||||
with patch(
|
||||
"app.routers.history.history_service.list_history",
|
||||
new=mock_fn,
|
||||
):
|
||||
await history_client.get("/api/history/archive")
|
||||
|
||||
_args, kwargs = mock_fn.call_args
|
||||
assert kwargs.get("source") == "archive"
|
||||
|
||||
async def test_empty_result(self, history_client: AsyncClient) -> None:
|
||||
"""An empty history returns items=[] and total=0."""
|
||||
with patch(
|
||||
|
||||
29
backend/tests/test_tasks/test_history_sync.py
Normal file
29
backend/tests/test_tasks/test_history_sync.py
Normal file
@@ -0,0 +1,29 @@
|
||||
"""Tests for history_sync task registration."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
from app.tasks import history_sync
|
||||
|
||||
|
||||
class TestHistorySyncTask:
|
||||
async def test_register_schedules_job(self) -> None:
|
||||
fake_scheduler = MagicMock()
|
||||
class FakeState:
|
||||
pass
|
||||
|
||||
class FakeSettings:
|
||||
fail2ban_socket = "/tmp/fake.sock"
|
||||
|
||||
app = type("FakeApp", (), {})()
|
||||
app.state = FakeState()
|
||||
app.state.scheduler = fake_scheduler
|
||||
app.state.settings = FakeSettings()
|
||||
|
||||
history_sync.register(app)
|
||||
|
||||
fake_scheduler.add_job.assert_called_once()
|
||||
called_args, called_kwargs = fake_scheduler.add_job.call_args
|
||||
assert called_kwargs["id"] == history_sync.JOB_ID
|
||||
assert called_kwargs["kwargs"]["app"] == app
|
||||
Reference in New Issue
Block a user