Medium: - Frontend: Error-Handling in fetchUsers/fetchApiKeys (try/catch) - Frontend: Loading-Race behoben (Promise.all + .finally) - Frontend: API-Keys maskiert (nur letzte 4 Zeichen sichtbar) - Tests: Setup-Code aus test_auth.py in conftest.py konsolidiert - Tests: Fixture-Scope vereinheitlicht (function statt session) Low: - bare except in database.py → except Exception - datetime.utcnow → datetime.now(timezone.utc) durchgängig - DateTime(timezone=True) in allen Modell-Spalten - .gitignore hinzugefügt (.env, *.db, __pycache__, .idea, node_modules) Docs: - README aktualisiert (Sicherheit, Konfiguration, Projektstruktur, Tests) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
31 lines
997 B
Python
31 lines
997 B
Python
import os
|
|
from unittest.mock import AsyncMock, patch
|
|
|
|
|
|
def test_auth_middleware_missing_auth(test_client):
|
|
response = test_client.post("/api/generate", json={"model": "llama3", "prompt": "test"})
|
|
assert response.status_code == 401
|
|
|
|
|
|
def test_auth_middleware_invalid_key(test_client):
|
|
response = test_client.post(
|
|
"/api/generate",
|
|
headers={"Authorization": "sk-invalid-key"},
|
|
json={"model": "llama3", "prompt": "test"},
|
|
)
|
|
assert response.status_code == 401
|
|
|
|
|
|
@patch("main.proxy_request", new_callable=AsyncMock)
|
|
def test_auth_middleware_valid_key(mock_proxy, test_client):
|
|
mock_proxy.return_value.status_code = 200
|
|
mock_proxy.return_value.json = lambda: {"response": "success"}
|
|
mock_proxy.return_value.headers = {}
|
|
|
|
response = test_client.post(
|
|
"/api/generate",
|
|
headers={"Authorization": os.environ.get("TEST_API_KEY", "")},
|
|
json={"model": "llama3", "prompt": "test"},
|
|
)
|
|
assert response.status_code == 200
|