b981c06d59
- Fix unit test imports: add env setup in conftest.py before module imports - Add 24 new auth router tests (RBAC, preferences, password validation) - Add 16 new tests for litellm and chat_summary routers - Apply black formatting and ruff linting across codebase - Add pre-commit hooks configuration (black, ruff, file checks) - Increase CI coverage threshold from 40% to 50% Test Results: - 206 tests passing (91 unit + 115 integration) - Coverage: 58.79% on core modules - auth.py: 57% → 85%, litellm.py: 23% → 87%, chat_summary.py: 41% → 100% - auth_service: 96.51%, config: 100%, rbac: 93.48%
27 lines
905 B
Python
27 lines
905 B
Python
import re
|
|
|
|
import httpx
|
|
from fastapi import APIRouter, HTTPException
|
|
|
|
from config import GITEA_TOKEN, GITEA_URL
|
|
|
|
router = APIRouter()
|
|
HEADERS = {"Authorization": f"token {GITEA_TOKEN}"} if GITEA_TOKEN else {}
|
|
_SAFE_NAME = re.compile(r"^[a-zA-Z0-9._-]+$")
|
|
|
|
|
|
@router.get("/repos")
|
|
async def list_repos():
|
|
async with httpx.AsyncClient() as c:
|
|
r = await c.get(f"{GITEA_URL}/api/v1/repos/search", headers=HEADERS, params={"limit": 50})
|
|
return r.json()
|
|
|
|
|
|
@router.get("/repos/{owner}/{repo}/commits")
|
|
async def list_commits(owner: str, repo: str, page: int = 1):
|
|
if not _SAFE_NAME.match(owner) or not _SAFE_NAME.match(repo):
|
|
raise HTTPException(status_code=400, detail="Invalid owner or repo name")
|
|
async with httpx.AsyncClient() as c:
|
|
r = await c.get(f"{GITEA_URL}/api/v1/repos/{owner}/{repo}/commits", headers=HEADERS, params={"page": page})
|
|
return r.json()
|