test_restai.py
1 import pytest 2 from fastapi.testclient import TestClient 3 4 from restai.config import RESTAI_DEFAULT_PASSWORD 5 from restai.main import app 6 7 8 @pytest.fixture(scope="module") 9 def client(): 10 with TestClient(app) as c: 11 yield c 12 13 14 def test_get(): 15 with TestClient(app, follow_redirects=False) as c: 16 response = c.get("/") 17 assert response.status_code in (301, 302, 307, 308) 18 assert "/admin" in response.headers.get("location", "") 19 20 def test_version(client): 21 response = client.get("/version", auth=("admin", RESTAI_DEFAULT_PASSWORD)) 22 assert response.status_code == 200 23 data = response.json() 24 assert "version" in data 25 assert isinstance(data["version"], str) 26 27 def test_version_unauthenticated(client): 28 response = client.get("/version") 29 assert response.status_code == 401 30 31 def test_setup(client): 32 response = client.get("/setup") 33 assert response.status_code == 200 34 data = response.json() 35 for key in ("sso", "proxy", "gpu", "app_name", "hide_branding", "proxy_url"): 36 assert key in data 37 38 def test_info_authenticated(client): 39 response = client.get("/info", auth=("admin", RESTAI_DEFAULT_PASSWORD)) 40 assert response.status_code == 200 41 data = response.json() 42 for key in ("version", "loaders", "llms", "embeddings", "vectorstores"): 43 assert key in data 44 45 def test_info_no_auth(client): 46 response = client.get("/info") 47 assert response.status_code == 401