/ tests / test_restai.py
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