mcp-vultr/tests/test_server.py
Ryan Malloy e6f66dc931
Some checks are pending
Tests / test (3.10) (push) Waiting to run
Tests / test (3.11) (push) Waiting to run
Tests / test (3.12) (push) Waiting to run
Tests / test (3.13) (push) Waiting to run
Tests / build (push) Blocked by required conditions
Tests / test-install (3.10) (push) Blocked by required conditions
Tests / test-install (3.13) (push) Blocked by required conditions
Tests / security (push) Waiting to run
Refactor package name from vultr-dns-mcp to mcp-vultr
- Rename package from vultr-dns-mcp to mcp-vultr for MCP organization
- Update module name from vultr_dns_mcp to mcp_vultr throughout codebase
- Rename src/vultr_dns_mcp/ to src/mcp_vultr/
- Update all import statements and references in Python files
- Update documentation files (README.md, CLAUDE.md, etc.)
- Update CLI script names in pyproject.toml
- Update test files with new import paths

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 21:49:38 -06:00

122 lines
4.3 KiB
Python

"""Tests for the Vultr DNS server module."""
import pytest
from unittest.mock import AsyncMock, patch
from mcp_vultr.server import VultrDNSServer, create_mcp_server
class TestVultrDNSServer:
"""Test cases for VultrDNSServer class."""
def test_init(self):
"""Test server initialization."""
server = VultrDNSServer("test-api-key")
assert server.api_key == "test-api-key"
assert server.headers["Authorization"] == "Bearer test-api-key"
assert server.headers["Content-Type"] == "application/json"
@pytest.mark.asyncio
async def test_make_request_success(self):
"""Test successful API request."""
server = VultrDNSServer("test-api-key")
with patch('httpx.AsyncClient') as mock_client:
mock_response = AsyncMock()
mock_response.status_code = 200
mock_response.json.return_value = {"test": "data"}
mock_client.return_value.__aenter__.return_value.request.return_value = mock_response
result = await server._make_request("GET", "/test")
assert result == {"test": "data"}
@pytest.mark.asyncio
async def test_make_request_error(self):
"""Test API request error handling."""
server = VultrDNSServer("test-api-key")
with patch('httpx.AsyncClient') as mock_client:
mock_response = AsyncMock()
mock_response.status_code = 400
mock_response.text = "Bad Request"
mock_client.return_value.__aenter__.return_value.request.return_value = mock_response
with pytest.raises(Exception) as exc_info:
await server._make_request("GET", "/test")
assert "Vultr API error 400" in str(exc_info.value)
@pytest.mark.asyncio
async def test_list_domains(self):
"""Test listing domains."""
server = VultrDNSServer("test-api-key")
with patch.object(server, '_make_request') as mock_request:
mock_request.return_value = {"domains": [{"domain": "example.com"}]}
result = await server.list_domains()
assert result == [{"domain": "example.com"}]
mock_request.assert_called_once_with("GET", "/domains")
@pytest.mark.asyncio
async def test_create_domain(self):
"""Test creating a domain."""
server = VultrDNSServer("test-api-key")
with patch.object(server, '_make_request') as mock_request:
mock_request.return_value = {"domain": "example.com"}
result = await server.create_domain("example.com", "192.168.1.1")
assert result == {"domain": "example.com"}
mock_request.assert_called_once_with(
"POST",
"/domains",
{"domain": "example.com", "ip": "192.168.1.1"}
)
class TestMCPServer:
"""Test cases for MCP server creation."""
def test_create_mcp_server_with_api_key(self):
"""Test creating MCP server with API key."""
server = create_mcp_server("test-api-key")
assert server is not None
assert server.name == "Vultr DNS Manager"
def test_create_mcp_server_without_api_key(self):
"""Test creating MCP server without API key raises error."""
with pytest.raises(ValueError) as exc_info:
create_mcp_server()
assert "VULTR_API_KEY must be provided" in str(exc_info.value)
@patch.dict('os.environ', {'VULTR_API_KEY': 'env-api-key'})
def test_create_mcp_server_from_env(self):
"""Test creating MCP server with API key from environment."""
server = create_mcp_server()
assert server is not None
assert server.name == "Vultr DNS Manager"
@pytest.fixture
def mock_vultr_server():
"""Fixture for mocked VultrDNSServer."""
with patch('mcp_vultr.server.VultrDNSServer') as mock:
yield mock
@pytest.mark.asyncio
async def test_validation_tool():
"""Test DNS record validation functionality."""
from mcp_vultr.server import create_mcp_server
# Create server (this will fail without API key, but we can test the structure)
with pytest.raises(ValueError):
create_mcp_server()
if __name__ == "__main__":
pytest.main([__file__])