Files

55 lines
1.6 KiB
Python

from unittest.mock import MagicMock, AsyncMock, patch
import pytest
from main import main
pytestmark = pytest.mark.anyio
@patch("main.load_dotenv")
@patch("main.os.chdir")
@patch("main.GiteaClient")
@patch("main.AgentOrchestrator")
async def test_main_startup_success(
mock_orchestrator_class: MagicMock,
mock_client_class: MagicMock,
mock_chdir: MagicMock,
mock_load_dotenv: MagicMock
) -> None:
mock_client = MagicMock()
mock_client_class.return_value = mock_client
mock_user = MagicMock()
mock_user.login = "agent-test"
mock_client.repos.get_authenticated_user.return_value = mock_user
mock_orchestrator = MagicMock()
mock_orchestrator.poll_and_dispatch = AsyncMock(side_effect=KeyboardInterrupt())
mock_orchestrator_class.return_value = mock_orchestrator
# Run main; it should exit gracefully on KeyboardInterrupt
await main()
mock_client.repos.get_authenticated_user.assert_called_once()
mock_orchestrator.poll_and_dispatch.assert_called_once()
@patch("main.load_dotenv")
@patch("main.os.chdir")
@patch("main.GiteaClient")
@patch("main.AgentOrchestrator")
async def test_main_startup_fails_no_authenticated_user(
mock_orchestrator_class: MagicMock,
mock_client_class: MagicMock,
mock_chdir: MagicMock,
mock_load_dotenv: MagicMock
) -> None:
mock_client = MagicMock()
mock_client_class.return_value = mock_client
# Simulate no user returned
mock_client.repos.get_authenticated_user.return_value = None
with pytest.raises(SystemExit) as exc_info:
await main()
assert exc_info.value.code == 1
mock_orchestrator_class.assert_not_called()