feat: The Other Dude v9.0.1 — full-featured email system
ci: add GitHub Pages deployment workflow for docs site Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
82
backend/tests/test_config_checkpoint.py
Normal file
82
backend/tests/test_config_checkpoint.py
Normal file
@@ -0,0 +1,82 @@
|
||||
"""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,
|
||||
)
|
||||
Reference in New Issue
Block a user