"""Tests for MCP server connection checks.""" import pytest from dolibarr_mcp import dolibarr_mcp_server from dolibarr_mcp.config import Config from dolibarr_mcp.dolibarr_client import DolibarrAPIError class _DummyClient: """Simple dummy client for test_api_connection success path.""" async def __aenter__(self): return self async def __aexit__(self, exc_type, exc_val, exc_tb): return False async def get_status(self): return {"success": {"dolibarr_version": "1.0.0"}} class _ErrorClient: """Dummy client that raises for test_api_connection error path.""" async def __aenter__(self): return self async def __aexit__(self, exc_type, exc_val, exc_tb): return False async def get_status(self): raise DolibarrAPIError("boom") @pytest.mark.asyncio async def test_api_connection_success(monkeypatch): """Yields True when the Dolibarr API status call succeeds.""" monkeypatch.setattr(dolibarr_mcp_server, "DolibarrClient", lambda config: _DummyClient()) config = Config( dolibarr_url="https://example.com/api/index.php", dolibarr_api_key="test_key", ) async with dolibarr_mcp_server.test_api_connection(config) as api_ok: assert api_ok is True @pytest.mark.asyncio async def test_api_connection_missing_configuration(): """Yields False when the configuration is incomplete.""" config = Config( dolibarr_url="https://your-dolibarr-instance.com/api/index.php", dolibarr_api_key="placeholder_api_key", ) async with dolibarr_mcp_server.test_api_connection(config) as api_ok: assert api_ok is False @pytest.mark.asyncio async def test_api_connection_with_client_error(monkeypatch): """Yields False when the Dolibarr client raises errors.""" monkeypatch.setattr(dolibarr_mcp_server, "DolibarrClient", lambda config: _ErrorClient()) config = Config( dolibarr_url="https://example.com/api/index.php", dolibarr_api_key="test_key", ) async with dolibarr_mcp_server.test_api_connection(config) as api_ok: assert api_ok is False