""" Test API endpoints """ import pytest from unittest.mock import patch, MagicMock def test_health_check(client): """Test health endpoint""" with patch("requests.get") as mock_get: mock_response = MagicMock() mock_response.status_code = 200 mock_get.return_value = mock_response response = client.get("/api/v1/health") assert response.status_code == 200 data = response.json() assert "status" in data assert data["status"] == "healthy" def test_ready_endpoint(client): """Test readiness probe""" with patch("requests.get") as mock_get: mock_response = MagicMock() mock_response.status_code = 200 mock_get.return_value = mock_response response = client.get("/api/v1/ready") assert response.status_code == 200 assert response.json() == {"status": "ready"} def test_get_models(client, mock_models_response): """Test getting models list""" with patch("requests.get") as mock_get: mock_response = MagicMock() mock_response.status_code = 200 mock_response.json.return_value = mock_models_response mock_get.return_value = mock_response response = client.get("/api/v1/models") assert response.status_code == 200 data = response.json() assert "models" in data assert "total" in data assert data["total"] == 2 assert len(data["models"]) == 2 assert data["models"][0]["name"] == "llama2" def test_get_models_ollama_offline(client): """Test getting models when Ollama is offline""" with patch("requests.get") as mock_get: mock_get.side_effect = Exception("Connection refused") response = client.get("/api/v1/models") assert response.status_code == 500 def test_get_specific_model(client, mock_models_response): """Test getting specific model""" with patch("requests.get") as mock_get: mock_response = MagicMock() mock_response.status_code = 200 mock_response.json.return_value = mock_models_response mock_get.return_value = mock_response response = client.get("/api/v1/models/llama2") assert response.status_code == 200 data = response.json() assert data["name"] == "llama2" def test_get_nonexistent_model(client, mock_models_response): """Test getting nonexistent model""" with patch("requests.get") as mock_get: mock_response = MagicMock() mock_response.status_code = 200 mock_response.json.return_value = mock_models_response mock_get.return_value = mock_response response = client.get("/api/v1/models/nonexistent") assert response.status_code == 404 def test_root_endpoint(client): """Test root endpoint redirects to dashboard""" response = client.get("/", follow_redirects=False) assert response.status_code in [200, 307] def test_openapi_schema(client): """Test OpenAPI schema is available""" response = client.get("/openapi.json") assert response.status_code == 200 schema = response.json() assert "info" in schema assert "paths" in schema assert "/api/v1/health" in schema["paths"] assert "/api/v1/models" in schema["paths"]