mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-05-14 22:00:11 +02:00
152 lines
5.2 KiB
Python
152 lines
5.2 KiB
Python
import requests
|
|
|
|
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
|
|
|
|
ASSISTANTS_URL = f"{API_SERVER_URL}/openai-assistants/assistants"
|
|
|
|
|
|
def test_create_assistant(admin_user: DATestUser | None) -> None:
|
|
response = requests.post(
|
|
ASSISTANTS_URL,
|
|
json={
|
|
"model": "gpt-3.5-turbo",
|
|
"name": "Test Assistant",
|
|
"description": "A test assistant",
|
|
"instructions": "You are a helpful assistant.",
|
|
},
|
|
headers=admin_user.headers if admin_user else GENERAL_HEADERS,
|
|
)
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert data["name"] == "Test Assistant"
|
|
assert data["description"] == "A test assistant"
|
|
assert data["model"] == "gpt-3.5-turbo"
|
|
assert data["instructions"] == "You are a helpful assistant."
|
|
|
|
|
|
def test_retrieve_assistant(admin_user: DATestUser | None) -> None:
|
|
# First, create an assistant
|
|
create_response = requests.post(
|
|
ASSISTANTS_URL,
|
|
json={"model": "gpt-3.5-turbo", "name": "Retrieve Test"},
|
|
headers=admin_user.headers if admin_user else GENERAL_HEADERS,
|
|
)
|
|
assert create_response.status_code == 200
|
|
assistant_id = create_response.json()["id"]
|
|
|
|
# Now, retrieve the assistant
|
|
response = requests.get(
|
|
f"{ASSISTANTS_URL}/{assistant_id}",
|
|
headers=admin_user.headers if admin_user else GENERAL_HEADERS,
|
|
)
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert data["id"] == assistant_id
|
|
assert data["name"] == "Retrieve Test"
|
|
|
|
|
|
def test_modify_assistant(admin_user: DATestUser | None) -> None:
|
|
# First, create an assistant
|
|
create_response = requests.post(
|
|
ASSISTANTS_URL,
|
|
json={"model": "gpt-3.5-turbo", "name": "Modify Test"},
|
|
headers=admin_user.headers if admin_user else GENERAL_HEADERS,
|
|
)
|
|
assert create_response.status_code == 200
|
|
assistant_id = create_response.json()["id"]
|
|
|
|
# Now, modify the assistant
|
|
response = requests.post(
|
|
f"{ASSISTANTS_URL}/{assistant_id}",
|
|
json={"name": "Modified Assistant", "instructions": "New instructions"},
|
|
headers=admin_user.headers if admin_user else GENERAL_HEADERS,
|
|
)
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert data["id"] == assistant_id
|
|
assert data["name"] == "Modified Assistant"
|
|
assert data["instructions"] == "New instructions"
|
|
|
|
|
|
def test_delete_assistant(admin_user: DATestUser | None) -> None:
|
|
# First, create an assistant
|
|
create_response = requests.post(
|
|
ASSISTANTS_URL,
|
|
json={"model": "gpt-3.5-turbo", "name": "Delete Test"},
|
|
headers=admin_user.headers if admin_user else GENERAL_HEADERS,
|
|
)
|
|
assert create_response.status_code == 200
|
|
assistant_id = create_response.json()["id"]
|
|
|
|
# Now, delete the assistant
|
|
response = requests.delete(
|
|
f"{ASSISTANTS_URL}/{assistant_id}",
|
|
headers=admin_user.headers if admin_user else GENERAL_HEADERS,
|
|
)
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert data["id"] == assistant_id
|
|
assert data["deleted"] is True
|
|
|
|
|
|
def test_list_assistants(admin_user: DATestUser | None) -> None:
|
|
# Create multiple assistants
|
|
for i in range(3):
|
|
requests.post(
|
|
ASSISTANTS_URL,
|
|
json={"model": "gpt-3.5-turbo", "name": f"List Test {i}"},
|
|
headers=admin_user.headers if admin_user else GENERAL_HEADERS,
|
|
)
|
|
|
|
# Now, list the assistants
|
|
response = requests.get(
|
|
ASSISTANTS_URL,
|
|
headers=admin_user.headers if admin_user else GENERAL_HEADERS,
|
|
)
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert data["object"] == "list"
|
|
assert len(data["data"]) >= 3 # At least the 3 we just created
|
|
assert all(assistant["object"] == "assistant" for assistant in data["data"])
|
|
|
|
|
|
def test_list_assistants_pagination(admin_user: DATestUser | None) -> None:
|
|
# Create 5 assistants
|
|
for i in range(5):
|
|
requests.post(
|
|
ASSISTANTS_URL,
|
|
json={"model": "gpt-3.5-turbo", "name": f"Pagination Test {i}"},
|
|
headers=admin_user.headers if admin_user else GENERAL_HEADERS,
|
|
)
|
|
|
|
# List assistants with limit
|
|
response = requests.get(
|
|
f"{ASSISTANTS_URL}?limit=2",
|
|
headers=admin_user.headers if admin_user else GENERAL_HEADERS,
|
|
)
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert len(data["data"]) == 2
|
|
assert data["has_more"] is True
|
|
|
|
# Get next page
|
|
before = data["last_id"]
|
|
response = requests.get(
|
|
f"{ASSISTANTS_URL}?limit=2&before={before}",
|
|
headers=admin_user.headers if admin_user else GENERAL_HEADERS,
|
|
)
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert len(data["data"]) == 2
|
|
|
|
|
|
def test_assistant_not_found(admin_user: DATestUser | None) -> None:
|
|
non_existent_id = -99
|
|
response = requests.get(
|
|
f"{ASSISTANTS_URL}/{non_existent_id}",
|
|
headers=admin_user.headers if admin_user else GENERAL_HEADERS,
|
|
)
|
|
assert response.status_code == 404
|