Merge remote-tracking branch 'origin/dev' into celery
This commit is contained in:
commit
78ecb4c341
123 changed files with 4453 additions and 8987 deletions
|
|
@ -219,7 +219,8 @@ def test_user(client):
|
|||
username="testuser",
|
||||
password="testpassword",
|
||||
)
|
||||
response = client.post("/api/v1/user", json=user_data.dict())
|
||||
response = client.post("/api/v1/users", json=user_data.dict())
|
||||
assert response.status_code == 201
|
||||
return response.json()
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,106 +1,4 @@
|
|||
from fastapi.testclient import TestClient
|
||||
from langflow.services.utils import get_settings_service
|
||||
|
||||
|
||||
def test_llms_settings(client: TestClient, logged_in_headers):
|
||||
settings_service = get_settings_service()
|
||||
response = client.get("api/v1/all", headers=logged_in_headers)
|
||||
assert response.status_code == 200
|
||||
json_response = response.json()
|
||||
llms = json_response["llms"]
|
||||
assert set(llms.keys()) == set(settings_service.settings.LLMS)
|
||||
|
||||
|
||||
# def test_hugging_face_hub(client: TestClient):
|
||||
# response = client.get("api/v1/all")
|
||||
# assert response.status_code == 200
|
||||
# json_response = response.json()
|
||||
# language_models = json_response["llms"]
|
||||
|
||||
# model = language_models["HuggingFaceHub"]
|
||||
# template = model["template"]
|
||||
|
||||
# assert template["cache"] == {
|
||||
# "required": False,
|
||||
# "placeholder": "",
|
||||
# "show": False,
|
||||
# "multiline": False,
|
||||
# "password": False,
|
||||
# "name": "cache",
|
||||
# "type": "bool",
|
||||
# "list": False,
|
||||
# "advanced": False,
|
||||
# }
|
||||
# assert template["verbose"] == {
|
||||
# "required": False,
|
||||
# "placeholder": "",
|
||||
# "show": False,
|
||||
# "multiline": False,
|
||||
# "value": False,
|
||||
# "password": False,
|
||||
# "name": "verbose",
|
||||
# "type": "bool",
|
||||
# "list": False,
|
||||
# "advanced": False,
|
||||
# }
|
||||
# assert template["client"] == {
|
||||
# "required": False,
|
||||
# "placeholder": "",
|
||||
# "show": False,
|
||||
# "multiline": False,
|
||||
# "password": False,
|
||||
# "name": "client",
|
||||
# "type": "Any",
|
||||
# "list": False,
|
||||
# "advanced": False,
|
||||
# }
|
||||
# assert template["repo_id"] == {
|
||||
# "required": False,
|
||||
# "placeholder": "",
|
||||
# "show": True,
|
||||
# "multiline": False,
|
||||
# "value": "gpt2",
|
||||
# "password": False,
|
||||
# "name": "repo_id",
|
||||
# "type": "str",
|
||||
# "list": False,
|
||||
# "advanced": False,
|
||||
# }
|
||||
# assert template["task"] == {
|
||||
# "required": True,
|
||||
# "placeholder": "",
|
||||
# "show": True,
|
||||
# "multiline": False,
|
||||
# "password": False,
|
||||
# "options": ["text-generation", "text2text-generation"],
|
||||
# "name": "task",
|
||||
# "type": "str",
|
||||
# "list": True,
|
||||
# "advanced": True,
|
||||
# }
|
||||
# assert template["model_kwargs"] == {
|
||||
# "required": False,
|
||||
# "placeholder": "",
|
||||
# "show": True,
|
||||
# "multiline": False,
|
||||
# "password": False,
|
||||
# "name": "model_kwargs",
|
||||
# "type": "code",
|
||||
# "list": False,
|
||||
# "advanced": True,
|
||||
# }
|
||||
# assert template["huggingfacehub_api_token"] == {
|
||||
# "required": False,
|
||||
# "placeholder": "",
|
||||
# "show": True,
|
||||
# "multiline": False,
|
||||
# "password": True,
|
||||
# "name": "huggingfacehub_api_token",
|
||||
# "display_name": "HuggingFace Hub API Token",
|
||||
# "type": "str",
|
||||
# "list": False,
|
||||
# "advanced": False,
|
||||
# }
|
||||
|
||||
|
||||
def test_openai(client: TestClient, logged_in_headers):
|
||||
|
|
@ -279,7 +177,7 @@ def test_openai(client: TestClient, logged_in_headers):
|
|||
"multiline": False,
|
||||
"password": False,
|
||||
"name": "model_kwargs",
|
||||
"type": "code",
|
||||
"type": "dict",
|
||||
"list": False,
|
||||
"advanced": True,
|
||||
"info": "",
|
||||
|
|
@ -334,7 +232,7 @@ def test_openai(client: TestClient, logged_in_headers):
|
|||
"multiline": False,
|
||||
"password": False,
|
||||
"name": "logit_bias",
|
||||
"type": "code",
|
||||
"type": "dict",
|
||||
"list": False,
|
||||
"advanced": False,
|
||||
"info": "",
|
||||
|
|
@ -451,7 +349,7 @@ def test_chat_open_ai(client: TestClient, logged_in_headers):
|
|||
"multiline": False,
|
||||
"password": False,
|
||||
"name": "model_kwargs",
|
||||
"type": "code",
|
||||
"type": "dict",
|
||||
"list": False,
|
||||
"advanced": True,
|
||||
"info": "",
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ def test_prompt_template(client: TestClient, logged_in_headers):
|
|||
"multiline": False,
|
||||
"password": False,
|
||||
"name": "partial_variables",
|
||||
"type": "code",
|
||||
"type": "dict",
|
||||
"list": False,
|
||||
"advanced": False,
|
||||
"info": "",
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ def test_format_dict():
|
|||
}
|
||||
expected_output = {
|
||||
"field1": {
|
||||
"type": "code", # Mapping type is replaced with dict which is replaced with code
|
||||
"type": "dict[str, int]", # Mapping type is replaced with dict which is replaced with code
|
||||
"required": False,
|
||||
"list": False,
|
||||
"show": False,
|
||||
|
|
@ -249,7 +249,7 @@ def test_format_dict():
|
|||
}
|
||||
expected_output = {
|
||||
"field1": {
|
||||
"type": "code",
|
||||
"type": "Dict[str, int]",
|
||||
"required": False,
|
||||
"list": False,
|
||||
"show": False,
|
||||
|
|
|
|||
|
|
@ -78,24 +78,27 @@ def test_deactivated_user_cannot_access(client, deactivated_user, logged_in_head
|
|||
assert response.json()["detail"] == "The user doesn't have enough privileges"
|
||||
|
||||
|
||||
def test_data_consistency_after_update(client, active_user, logged_in_headers):
|
||||
def test_data_consistency_after_update(
|
||||
client, active_user, logged_in_headers, super_user_headers
|
||||
):
|
||||
user_id = active_user.id
|
||||
update_data = UserUpdate(username="newname")
|
||||
update_data = UserUpdate(is_active=False)
|
||||
|
||||
response = client.patch(
|
||||
f"/api/v1/user/{user_id}", json=update_data.dict(), headers=logged_in_headers
|
||||
f"/api/v1/users/{user_id}", json=update_data.dict(), headers=super_user_headers
|
||||
)
|
||||
assert response.status_code == 200
|
||||
assert response.status_code == 200, response.json()
|
||||
|
||||
# Fetch the updated user from the database
|
||||
response = client.get("/api/v1/user", headers=logged_in_headers)
|
||||
assert response.json()["username"] == "newname", response.json()
|
||||
response = client.get("/api/v1/users/whoami", headers=logged_in_headers)
|
||||
assert response.status_code == 401, response.json()
|
||||
assert response.json()["detail"] == "Could not validate credentials"
|
||||
|
||||
|
||||
def test_data_consistency_after_delete(client, test_user, super_user_headers):
|
||||
user_id = test_user["id"]
|
||||
response = client.delete(f"/api/v1/user/{user_id}", headers=super_user_headers)
|
||||
assert response.status_code == 200
|
||||
user_id = test_user.get("id")
|
||||
response = client.delete(f"/api/v1/users/{user_id}", headers=super_user_headers)
|
||||
assert response.status_code == 200, response.json()
|
||||
|
||||
# Attempt to fetch the deleted user from the database
|
||||
response = client.get("/api/v1/users", headers=super_user_headers)
|
||||
|
|
@ -157,11 +160,37 @@ def test_patch_user(client, active_user, logged_in_headers):
|
|||
)
|
||||
|
||||
response = client.patch(
|
||||
f"/api/v1/user/{user_id}", json=update_data.dict(), headers=logged_in_headers
|
||||
f"/api/v1/users/{user_id}", json=update_data.dict(), headers=logged_in_headers
|
||||
)
|
||||
assert response.status_code == 304, response.json()
|
||||
update_data = UserUpdate(
|
||||
profile_image="new_image",
|
||||
)
|
||||
|
||||
response = client.patch(
|
||||
f"/api/v1/users/{user_id}", json=update_data.dict(), headers=logged_in_headers
|
||||
)
|
||||
assert response.status_code == 200, response.json()
|
||||
|
||||
|
||||
def test_patch_reset_password(client, active_user, logged_in_headers):
|
||||
user_id = active_user.id
|
||||
update_data = UserUpdate(
|
||||
password="newpassword",
|
||||
)
|
||||
|
||||
response = client.patch(
|
||||
f"/api/v1/users/{user_id}/reset-password",
|
||||
json=update_data.dict(),
|
||||
headers=logged_in_headers,
|
||||
)
|
||||
assert response.status_code == 200, response.json()
|
||||
# Now we need to test if the new password works
|
||||
login_data = {"username": active_user.username, "password": "newpassword"}
|
||||
response = client.post("/api/v1/login", data=login_data)
|
||||
assert response.status_code == 200
|
||||
|
||||
|
||||
def test_patch_user_wrong_id(client, active_user, logged_in_headers):
|
||||
user_id = "wrong_id"
|
||||
update_data = UserUpdate(
|
||||
|
|
@ -169,7 +198,7 @@ def test_patch_user_wrong_id(client, active_user, logged_in_headers):
|
|||
)
|
||||
|
||||
response = client.patch(
|
||||
f"/api/v1/user/{user_id}", json=update_data.dict(), headers=logged_in_headers
|
||||
f"/api/v1/users/{user_id}", json=update_data.dict(), headers=logged_in_headers
|
||||
)
|
||||
assert response.status_code == 422, response.json()
|
||||
assert response.json() == {
|
||||
|
|
@ -185,14 +214,14 @@ def test_patch_user_wrong_id(client, active_user, logged_in_headers):
|
|||
|
||||
def test_delete_user(client, test_user, super_user_headers):
|
||||
user_id = test_user["id"]
|
||||
response = client.delete(f"/api/v1/user/{user_id}", headers=super_user_headers)
|
||||
response = client.delete(f"/api/v1/users/{user_id}", headers=super_user_headers)
|
||||
assert response.status_code == 200
|
||||
assert response.json() == {"detail": "User deleted"}
|
||||
|
||||
|
||||
def test_delete_user_wrong_id(client, test_user, super_user_headers):
|
||||
user_id = "wrong_id"
|
||||
response = client.delete(f"/api/v1/user/{user_id}", headers=super_user_headers)
|
||||
response = client.delete(f"/api/v1/users/{user_id}", headers=super_user_headers)
|
||||
assert response.status_code == 422
|
||||
assert response.json() == {
|
||||
"detail": [
|
||||
|
|
@ -207,15 +236,6 @@ def test_delete_user_wrong_id(client, test_user, super_user_headers):
|
|||
|
||||
def test_normal_user_cant_delete_user(client, test_user, logged_in_headers):
|
||||
user_id = test_user["id"]
|
||||
response = client.delete(f"/api/v1/user/{user_id}", headers=logged_in_headers)
|
||||
response = client.delete(f"/api/v1/users/{user_id}", headers=logged_in_headers)
|
||||
assert response.status_code == 400
|
||||
assert response.json() == {"detail": "The user doesn't have enough privileges"}
|
||||
|
||||
|
||||
# If you still want to test the superuser endpoint
|
||||
def test_add_super_user_for_testing_purposes_delete_me_before_merge_into_dev(
|
||||
client,
|
||||
):
|
||||
response = client.post("/api/v1/super_user")
|
||||
assert response.status_code == 200
|
||||
assert response.json()["username"] == "superuser"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue