mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-05-10 03:40:35 +02:00
133 lines
4.2 KiB
Python
133 lines
4.2 KiB
Python
from uuid import UUID
|
|
|
|
import requests
|
|
|
|
from onyx.db.models import ChatSessionSharedStatus
|
|
from tests.integration.common_utils.constants import API_SERVER_URL
|
|
from tests.integration.common_utils.constants import GENERAL_HEADERS
|
|
from tests.integration.common_utils.test_models import DATestUser
|
|
|
|
THREADS_URL = f"{API_SERVER_URL}/openai-assistants/threads"
|
|
|
|
|
|
def test_create_thread(admin_user: DATestUser | None) -> None:
|
|
response = requests.post(
|
|
THREADS_URL,
|
|
json={"messages": None, "metadata": {"key": "value"}},
|
|
headers=admin_user.headers if admin_user else GENERAL_HEADERS,
|
|
)
|
|
assert response.status_code == 200
|
|
|
|
response_json = response.json()
|
|
assert "id" in response_json
|
|
assert response_json["object"] == "thread"
|
|
assert "created_at" in response_json
|
|
assert response_json["metadata"] == {"key": "value"}
|
|
|
|
|
|
def test_retrieve_thread(admin_user: DATestUser | None) -> None:
|
|
# First, create a thread
|
|
create_response = requests.post(
|
|
THREADS_URL,
|
|
json={},
|
|
headers=admin_user.headers if admin_user else GENERAL_HEADERS,
|
|
)
|
|
assert create_response.status_code == 200
|
|
thread_id = create_response.json()["id"]
|
|
|
|
# Now, retrieve the thread
|
|
retrieve_response = requests.get(
|
|
f"{THREADS_URL}/{thread_id}",
|
|
headers=admin_user.headers if admin_user else GENERAL_HEADERS,
|
|
)
|
|
assert retrieve_response.status_code == 200
|
|
|
|
response_json = retrieve_response.json()
|
|
assert response_json["id"] == thread_id
|
|
assert response_json["object"] == "thread"
|
|
assert "created_at" in response_json
|
|
|
|
|
|
def test_modify_thread(admin_user: DATestUser | None) -> None:
|
|
# First, create a thread
|
|
create_response = requests.post(
|
|
THREADS_URL,
|
|
json={},
|
|
headers=admin_user.headers if admin_user else GENERAL_HEADERS,
|
|
)
|
|
assert create_response.status_code == 200
|
|
thread_id = create_response.json()["id"]
|
|
|
|
# Now, modify the thread
|
|
modify_response = requests.post(
|
|
f"{THREADS_URL}/{thread_id}",
|
|
json={"metadata": {"new_key": "new_value"}},
|
|
headers=admin_user.headers if admin_user else GENERAL_HEADERS,
|
|
)
|
|
assert modify_response.status_code == 200
|
|
|
|
response_json = modify_response.json()
|
|
assert response_json["id"] == thread_id
|
|
assert response_json["metadata"] == {"new_key": "new_value"}
|
|
|
|
|
|
def test_delete_thread(admin_user: DATestUser | None) -> None:
|
|
# First, create a thread
|
|
create_response = requests.post(
|
|
THREADS_URL,
|
|
json={},
|
|
headers=admin_user.headers if admin_user else GENERAL_HEADERS,
|
|
)
|
|
assert create_response.status_code == 200
|
|
thread_id = create_response.json()["id"]
|
|
|
|
# Now, delete the thread
|
|
delete_response = requests.delete(
|
|
f"{THREADS_URL}/{thread_id}",
|
|
headers=admin_user.headers if admin_user else GENERAL_HEADERS,
|
|
)
|
|
assert delete_response.status_code == 200
|
|
|
|
response_json = delete_response.json()
|
|
assert response_json["id"] == thread_id
|
|
assert response_json["object"] == "thread.deleted"
|
|
assert response_json["deleted"] is True
|
|
|
|
|
|
def test_list_threads(admin_user: DATestUser | None) -> None:
|
|
# Create a few threads
|
|
for _ in range(3):
|
|
requests.post(
|
|
THREADS_URL,
|
|
json={},
|
|
headers=admin_user.headers if admin_user else GENERAL_HEADERS,
|
|
)
|
|
|
|
# Now, list the threads
|
|
list_response = requests.get(
|
|
THREADS_URL,
|
|
headers=admin_user.headers if admin_user else GENERAL_HEADERS,
|
|
)
|
|
assert list_response.status_code == 200
|
|
|
|
response_json = list_response.json()
|
|
assert "sessions" in response_json
|
|
assert len(response_json["sessions"]) >= 3
|
|
|
|
for session in response_json["sessions"]:
|
|
assert "id" in session
|
|
assert "name" in session
|
|
assert "persona_id" in session
|
|
assert "time_created" in session
|
|
assert "shared_status" in session
|
|
assert "folder_id" in session
|
|
assert "current_alternate_model" in session
|
|
|
|
# Validate UUID
|
|
UUID(session["id"])
|
|
|
|
# Validate shared_status
|
|
assert session["shared_status"] in [
|
|
status.value for status in ChatSessionSharedStatus
|
|
]
|