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