60 lines
1.9 KiB
Python
60 lines
1.9 KiB
Python
"""Tests for chat session management endpoints."""
|
|
import pytest
|
|
|
|
|
|
@pytest.mark.anyio
|
|
async def test_list_sessions_empty(client, user_headers):
|
|
r = await client.get("/api/chat/sessions", headers=user_headers)
|
|
assert r.status_code == 200
|
|
body = r.json()
|
|
assert isinstance(body, list)
|
|
|
|
|
|
@pytest.mark.anyio
|
|
async def test_create_session_via_message(client, user_headers):
|
|
"""POST /api/chat with a fake genai config.
|
|
|
|
The endpoint should respond without a 500 — it may return 200 with a
|
|
message_id (background processing will fail) or 400/404 if the config
|
|
is not found.
|
|
"""
|
|
r = await client.post(
|
|
"/api/chat",
|
|
json={"message": "hello", "genai_config_id": "fake"},
|
|
headers=user_headers,
|
|
)
|
|
assert r.status_code != 500, f"Unexpected server error: {r.text}"
|
|
|
|
|
|
@pytest.mark.anyio
|
|
async def test_list_sessions(client, user_headers):
|
|
r = await client.get("/api/chat/sessions", headers=user_headers)
|
|
assert r.status_code == 200
|
|
assert isinstance(r.json(), list)
|
|
|
|
|
|
@pytest.mark.anyio
|
|
async def test_rename_session(client, user_headers):
|
|
"""Rename a session if one exists, otherwise skip gracefully."""
|
|
sessions = (await client.get("/api/chat/sessions", headers=user_headers)).json()
|
|
if not sessions:
|
|
pytest.skip("No chat session available to rename")
|
|
sid = sessions[0]["id"]
|
|
r = await client.put(
|
|
f"/api/chat/sessions/{sid}/title",
|
|
json={"title": "renamed"},
|
|
headers=user_headers,
|
|
)
|
|
assert r.status_code == 200
|
|
|
|
|
|
@pytest.mark.anyio
|
|
async def test_delete_session(client, user_headers):
|
|
"""Delete a session if one exists, otherwise skip gracefully."""
|
|
sessions = (await client.get("/api/chat/sessions", headers=user_headers)).json()
|
|
if not sessions:
|
|
pytest.skip("No chat session available to delete")
|
|
sid = sessions[0]["id"]
|
|
r = await client.delete(f"/api/chat/{sid}", headers=user_headers)
|
|
assert r.status_code == 200
|