ci: add GitHub Pages deployment workflow for docs site Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
83 lines
2.6 KiB
Python
83 lines
2.6 KiB
Python
"""Tests for config checkpoint endpoint."""
|
|
|
|
import uuid
|
|
from unittest.mock import AsyncMock, patch, MagicMock
|
|
|
|
import pytest
|
|
|
|
|
|
class TestCheckpointEndpointExists:
|
|
"""Verify the checkpoint route is registered on the config_backups router."""
|
|
|
|
def test_router_has_checkpoint_route(self):
|
|
from app.routers.config_backups import router
|
|
|
|
paths = [r.path for r in router.routes]
|
|
assert any("checkpoint" in p for p in paths), (
|
|
f"No checkpoint route found. Routes: {paths}"
|
|
)
|
|
|
|
def test_checkpoint_route_is_post(self):
|
|
from app.routers.config_backups import router
|
|
|
|
for route in router.routes:
|
|
if hasattr(route, "path") and "checkpoint" in route.path:
|
|
assert "POST" in route.methods, (
|
|
f"Checkpoint route should be POST, got {route.methods}"
|
|
)
|
|
break
|
|
else:
|
|
pytest.fail("No checkpoint route found")
|
|
|
|
|
|
class TestCheckpointFunction:
|
|
"""Test the create_checkpoint handler logic."""
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_checkpoint_calls_backup_service_with_checkpoint_trigger(self):
|
|
"""create_checkpoint should call backup_service.run_backup with trigger_type='checkpoint'."""
|
|
from app.routers.config_backups import create_checkpoint
|
|
|
|
mock_result = {
|
|
"commit_sha": "abc1234",
|
|
"trigger_type": "checkpoint",
|
|
"lines_added": 100,
|
|
"lines_removed": 0,
|
|
}
|
|
|
|
mock_db = AsyncMock()
|
|
mock_user = MagicMock()
|
|
|
|
tenant_id = uuid.uuid4()
|
|
device_id = uuid.uuid4()
|
|
|
|
mock_request = MagicMock()
|
|
|
|
with patch(
|
|
"app.routers.config_backups.backup_service.run_backup",
|
|
new_callable=AsyncMock,
|
|
return_value=mock_result,
|
|
) as mock_backup, patch(
|
|
"app.routers.config_backups._check_tenant_access",
|
|
new_callable=AsyncMock,
|
|
), patch(
|
|
"app.routers.config_backups.limiter.enabled",
|
|
False,
|
|
):
|
|
result = await create_checkpoint(
|
|
request=mock_request,
|
|
tenant_id=tenant_id,
|
|
device_id=device_id,
|
|
db=mock_db,
|
|
current_user=mock_user,
|
|
)
|
|
|
|
assert result["trigger_type"] == "checkpoint"
|
|
assert result["commit_sha"] == "abc1234"
|
|
mock_backup.assert_called_once_with(
|
|
device_id=str(device_id),
|
|
tenant_id=str(tenant_id),
|
|
trigger_type="checkpoint",
|
|
db_session=mock_db,
|
|
)
|