Spaces:
Sleeping
Sleeping
File size: 2,668 Bytes
df0a911 bf214ef 16e974b bf214ef 16e974b bf214ef df0a911 bf214ef d223ca5 a79668c d223ca5 c5211bf bf214ef c5211bf d223ca5 a79668c d223ca5 c5211bf bf214ef 7d55b27 bf214ef df0a911 c5211bf bf214ef c5211bf df0a911 c5211bf bf214ef df0a911 bf214ef c5211bf bf214ef 42c1adb bf214ef 42c1adb | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | # tests/test_api_routes.py
from unittest.mock import AsyncMock, MagicMock, patch
from fastapi.testclient import TestClient
from app.api.limiter import limiter
from app.api.main import app
limiter.enabled = False
client = TestClient(app)
VALID_URL = "https://github.com/owner/repo"
def _mock_settings(api_key: str = "") -> MagicMock:
s = MagicMock()
s.api_key = api_key
return s
def test_analyze_rejects_missing_api_key():
with (
patch(
"app.api.dependencies.get_settings", return_value=_mock_settings("secret")
),
patch("app.api.routes.clone_repository", return_value="/tmp/fake"),
patch("app.api.routes.delete_repository"),
):
response = client.post("/api/v1/analyze", json={"github_url": VALID_URL})
assert response.status_code == 401
def test_analyze_rejects_wrong_api_key():
with (
patch(
"app.api.dependencies.get_settings", return_value=_mock_settings("secret")
),
patch("app.api.routes.clone_repository", return_value="/tmp/fake"),
patch("app.api.routes.delete_repository"),
):
response = client.post(
"/api/v1/analyze",
json={"github_url": VALID_URL},
headers={"X-API-Key": "wrong"},
)
assert response.status_code == 401
def test_analyze_rejects_invalid_github_url():
with patch("app.api.dependencies.get_settings", return_value=_mock_settings()):
response = client.post(
"/api/v1/analyze",
json={"github_url": "https://gitlab.com/owner/repo"},
)
assert response.status_code == 422
def test_quick_analyze_health_path():
from app.models.repository import RepositoryMetadata
mock_metadata = RepositoryMetadata(
url=VALID_URL, name="repo", local_path="/tmp/fake"
)
with (
patch("app.api.dependencies.get_settings", return_value=_mock_settings()),
patch("app.api.routes.clone_repository", return_value="/tmp/fake"),
patch("app.api.routes.delete_repository"),
patch(
"app.api.routes.repo_analysis_agent.run",
new=AsyncMock(return_value=mock_metadata),
),
):
response = client.post(
"/api/v1/quick-analyze",
json={"github_url": VALID_URL},
)
assert response.status_code == 200
def test_metrics_endpoint_returns_dict():
with patch("app.api.dependencies.get_settings", return_value=_mock_settings("")):
response = client.get("/api/v1/metrics")
assert response.status_code == 200
data = response.json()
assert "uptime_seconds" in data
assert "agents" in data |