|
|
"""Tests for simple_app.py functionality.""" |
|
|
|
|
|
import pytest |
|
|
from fastapi.testclient import TestClient |
|
|
|
|
|
from simple_app import app |
|
|
|
|
|
|
|
|
@pytest.fixture |
|
|
def client(): |
|
|
"""Create test client for simple FastAPI app.""" |
|
|
return TestClient(app) |
|
|
|
|
|
|
|
|
class TestSimpleAppEndpoints: |
|
|
"""Test simple app endpoints.""" |
|
|
|
|
|
def test_health_check_success(self, client): |
|
|
"""Test health check endpoint.""" |
|
|
response = client.get("/health") |
|
|
|
|
|
assert response.status_code == 200 |
|
|
data = response.json() |
|
|
|
|
|
assert data["status"] == "healthy" |
|
|
assert data["version"] == "0.1.0" |
|
|
|
|
|
def test_health_check_response_model(self, client): |
|
|
"""Test health check response follows model.""" |
|
|
response = client.get("/health") |
|
|
data = response.json() |
|
|
|
|
|
|
|
|
assert "status" in data |
|
|
assert "version" in data |
|
|
assert isinstance(data["status"], str) |
|
|
assert isinstance(data["version"], str) |
|
|
|
|
|
def test_root_endpoint(self, client): |
|
|
"""Test root endpoint.""" |
|
|
response = client.get("/") |
|
|
|
|
|
assert response.status_code == 200 |
|
|
data = response.json() |
|
|
|
|
|
assert "message" in data |
|
|
assert "docs" in data |
|
|
assert "KGraph-MCP is running!" in data["message"] |
|
|
assert data["docs"] == "/docs" |
|
|
|
|
|
def test_cors_configuration(self, client): |
|
|
"""Test CORS configuration is working.""" |
|
|
response = client.options("/health") |
|
|
|
|
|
|
|
|
assert response.status_code in [200, 405] |
|
|
|
|
|
def test_api_documentation_accessible(self, client): |
|
|
"""Test API documentation is accessible.""" |
|
|
|
|
|
response = client.get("/openapi.json") |
|
|
assert response.status_code == 200 |
|
|
|
|
|
schema = response.json() |
|
|
assert "openapi" in schema |
|
|
assert "info" in schema |
|
|
assert schema["info"]["title"] == "KGraph-MCP" |
|
|
|
|
|
def test_docs_endpoint(self, client): |
|
|
"""Test documentation endpoint is accessible.""" |
|
|
response = client.get("/docs") |
|
|
assert response.status_code == 200 |
|
|
|
|
|
def test_redoc_endpoint(self, client): |
|
|
"""Test ReDoc endpoint is accessible.""" |
|
|
response = client.get("/redoc") |
|
|
assert response.status_code == 200 |
|
|
|
|
|
|
|
|
class TestSimpleAppConfiguration: |
|
|
"""Test app configuration.""" |
|
|
|
|
|
def test_app_metadata(self): |
|
|
"""Test app has correct metadata.""" |
|
|
assert app.title == "KGraph-MCP" |
|
|
assert app.description == "Knowledge Graph Multi-Agent Collaboration Platform" |
|
|
assert app.version == "0.1.0" |
|
|
assert app.docs_url == "/docs" |
|
|
assert app.redoc_url == "/redoc" |
|
|
|
|
|
def test_middleware_configuration(self): |
|
|
"""Test CORS middleware is properly configured.""" |
|
|
|
|
|
middleware_classes = [ |
|
|
middleware.cls.__name__ for middleware in app.user_middleware |
|
|
] |
|
|
assert "CORSMiddleware" in middleware_classes |
|
|
|