PutuAPI / tests /test_health.py
suzmen's picture
Upload 64 files
2af6ef5 verified
"""PhantomAPI — Basic endpoint tests."""
import pytest
from httpx import ASGITransport, AsyncClient
from app.main import app
@pytest.fixture
async def client():
transport = ASGITransport(app=app)
async with AsyncClient(transport=transport, base_url="http://test") as ac:
yield ac
@pytest.mark.anyio
async def test_health_check(client):
"""GET / should return 200 with status running."""
response = await client.get("/")
assert response.status_code == 200
data = response.json()
assert data["status"] == "running"
assert data["service"] == "PhantomAPI"
@pytest.mark.anyio
async def test_list_models(client):
"""GET /v1/models should return model list."""
response = await client.get("/v1/models")
assert response.status_code == 200
data = response.json()
assert data["object"] == "list"
assert len(data["data"]) > 0
@pytest.mark.anyio
async def test_chat_without_auth(client):
"""POST /v1/chat/completions without auth should return 401."""
response = await client.post(
"/v1/chat/completions",
json={"messages": [{"role": "user", "content": "Hello"}]},
)
assert response.status_code == 401
@pytest.mark.anyio
async def test_responses_without_auth(client):
"""POST /v1/responses without auth should return 401."""
response = await client.post(
"/v1/responses",
json={"input": "Hello"},
)
assert response.status_code == 401
@pytest.mark.anyio
async def test_gui_redirect(client):
"""GET /gui should redirect to the static GUI."""
response = await client.get("/gui", follow_redirects=False)
assert response.status_code == 307