67 lines
1.9 KiB
Python
67 lines
1.9 KiB
Python
from types import SimpleNamespace
|
|
from unittest.mock import AsyncMock
|
|
|
|
import pytest
|
|
|
|
from src.api.v1 import auto_repair as auto_repair_api
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_execute_api_preserves_controlled_queue_truth(
|
|
monkeypatch: pytest.MonkeyPatch,
|
|
) -> None:
|
|
incident = object()
|
|
playbook = object()
|
|
incident_service = SimpleNamespace(
|
|
get_from_working_memory=AsyncMock(return_value=incident)
|
|
)
|
|
playbook_service = SimpleNamespace(
|
|
get_by_id=AsyncMock(return_value=playbook)
|
|
)
|
|
repair_service = SimpleNamespace(
|
|
execute_auto_repair=AsyncMock(
|
|
return_value=SimpleNamespace(
|
|
success=False,
|
|
status="queued",
|
|
repair_executed=False,
|
|
repair_verified=False,
|
|
incident_id="INC-HOST-QUEUED",
|
|
playbook_id="PB-HOST-ANSIBLE",
|
|
executed_steps=[
|
|
"Step 1: systemctl restart node_exporter -> QUEUED"
|
|
],
|
|
error=None,
|
|
execution_time_ms=7,
|
|
)
|
|
)
|
|
)
|
|
monkeypatch.setattr(
|
|
auto_repair_api,
|
|
"get_incident_service",
|
|
lambda: incident_service,
|
|
)
|
|
monkeypatch.setattr(
|
|
"src.services.playbook_service.get_playbook_service",
|
|
lambda: playbook_service,
|
|
)
|
|
monkeypatch.setattr(
|
|
auto_repair_api,
|
|
"get_auto_repair_service",
|
|
lambda: repair_service,
|
|
)
|
|
|
|
response = await auto_repair_api.execute_auto_repair(
|
|
auto_repair_api.ExecuteRequest(
|
|
incident_id="INC-HOST-QUEUED",
|
|
playbook_id="PB-HOST-ANSIBLE",
|
|
force=True,
|
|
),
|
|
None, # type: ignore[arg-type]
|
|
)
|
|
|
|
assert response.success is False
|
|
assert response.status == "queued"
|
|
assert response.repair_executed is False
|
|
assert response.repair_verified is False
|
|
assert response.error is None
|