from __future__ import annotations import pytest import pyro_mcp.runtime_network_check as runtime_network_check from pyro_mcp.vm_network import TapNetworkManager def test_network_check_uses_network_enabled_manager(monkeypatch: pytest.MonkeyPatch) -> None: observed: dict[str, object] = {} class StubManager: def __init__(self, **kwargs: object) -> None: observed.update(kwargs) def create_vm(self, **kwargs: object) -> dict[str, object]: observed["create_kwargs"] = kwargs return {"vm_id": "vm123"} def start_vm(self, vm_id: str) -> dict[str, object]: observed["started_vm_id"] = vm_id return {"state": "started"} def status_vm(self, vm_id: str) -> dict[str, object]: observed["status_vm_id"] = vm_id return {"network_enabled": True} def exec_vm(self, vm_id: str, *, command: str, timeout_seconds: int) -> dict[str, object]: observed["exec_vm_id"] = vm_id observed["command"] = command observed["timeout_seconds"] = timeout_seconds return { "execution_mode": "guest_vsock", "exit_code": 0, "stdout": "true\n", "stderr": "", "cleanup": {"deleted": True, "vm_id": vm_id, "reason": "post_exec_cleanup"}, } monkeypatch.setattr(runtime_network_check, "VmManager", StubManager) result = runtime_network_check.run_network_check() network_manager = observed["network_manager"] assert isinstance(network_manager, TapNetworkManager) assert network_manager.enabled is True assert observed["command"] == runtime_network_check.NETWORK_CHECK_COMMAND assert observed["timeout_seconds"] == 120 assert result.execution_mode == "guest_vsock" assert result.network_enabled is True assert result.exit_code == 0 def test_network_check_main_fails_on_unsuccessful_command( monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture[str] ) -> None: monkeypatch.setattr( runtime_network_check, "run_network_check", lambda **kwargs: runtime_network_check.NetworkCheckResult( vm_id="vm123", execution_mode="guest_vsock", network_enabled=True, exit_code=1, stdout="", stderr="curl failed", cleanup={"deleted": True}, ), ) with pytest.raises(SystemExit, match="1"): runtime_network_check.main() output = capsys.readouterr().out assert "[network] result=failure" in output assert "[network] stderr=curl failed" in output