Commit
·
362fa06
1
Parent(s):
e5dbc25
More dataset test cases (#3802)
Browse files### What problem does this PR solve?
1. Test not allowed fields of dataset
### Type of change
- [x] Bug Fix (non-breaking change which fixes an issue)
- [x] Other (please describe): Test cases
Signed-off-by: jinhai <[email protected]>
api/apps/kb_app.py
CHANGED
|
@@ -21,7 +21,7 @@ from api.db.services.document_service import DocumentService
|
|
| 21 |
from api.db.services.file2document_service import File2DocumentService
|
| 22 |
from api.db.services.file_service import FileService
|
| 23 |
from api.db.services.user_service import TenantService, UserTenantService
|
| 24 |
-
from api.utils.api_utils import server_error_response, get_data_error_result, validate_request
|
| 25 |
from api.utils import get_uuid
|
| 26 |
from api.db import StatusEnum, FileSource
|
| 27 |
from api.db.services.knowledgebase_service import KnowledgebaseService
|
|
@@ -70,6 +70,7 @@ def create():
|
|
| 70 |
@manager.route('/update', methods=['post'])
|
| 71 |
@login_required
|
| 72 |
@validate_request("kb_id", "name", "description", "permission", "parser_id")
|
|
|
|
| 73 |
def update():
|
| 74 |
req = request.json
|
| 75 |
req["name"] = req["name"].strip()
|
|
|
|
| 21 |
from api.db.services.file2document_service import File2DocumentService
|
| 22 |
from api.db.services.file_service import FileService
|
| 23 |
from api.db.services.user_service import TenantService, UserTenantService
|
| 24 |
+
from api.utils.api_utils import server_error_response, get_data_error_result, validate_request, not_allowed_parameters
|
| 25 |
from api.utils import get_uuid
|
| 26 |
from api.db import StatusEnum, FileSource
|
| 27 |
from api.db.services.knowledgebase_service import KnowledgebaseService
|
|
|
|
| 70 |
@manager.route('/update', methods=['post'])
|
| 71 |
@login_required
|
| 72 |
@validate_request("kb_id", "name", "description", "permission", "parser_id")
|
| 73 |
+
@not_allowed_parameters("id", "tenant_id", "created_by", "create_time", "update_time", "create_date", "update_date", "created_by")
|
| 74 |
def update():
|
| 75 |
req = request.json
|
| 76 |
req["name"] = req["name"].strip()
|
api/utils/api_utils.py
CHANGED
|
@@ -174,6 +174,18 @@ def validate_request(*args, **kwargs):
|
|
| 174 |
|
| 175 |
return wrapper
|
| 176 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 177 |
|
| 178 |
def is_localhost(ip):
|
| 179 |
return ip in {'127.0.0.1', '::1', '[::1]', 'localhost'}
|
|
|
|
| 174 |
|
| 175 |
return wrapper
|
| 176 |
|
| 177 |
+
def not_allowed_parameters(*params):
|
| 178 |
+
def decorator(f):
|
| 179 |
+
def wrapper(*args, **kwargs):
|
| 180 |
+
input_arguments = flask_request.json or flask_request.form.to_dict()
|
| 181 |
+
for param in params:
|
| 182 |
+
if param in input_arguments:
|
| 183 |
+
return get_json_result(
|
| 184 |
+
code=settings.RetCode.ARGUMENT_ERROR, message=f"Parameter {param} isn't allowed")
|
| 185 |
+
return f(*args, **kwargs)
|
| 186 |
+
return wrapper
|
| 187 |
+
return decorator
|
| 188 |
+
|
| 189 |
|
| 190 |
def is_localhost(ip):
|
| 191 |
return ip in {'127.0.0.1', '::1', '[::1]', 'localhost'}
|
sdk/python/test/test_frontend_api/test_dataset.py
CHANGED
|
@@ -103,7 +103,7 @@ def test_invalid_name_dataset(get_auth):
|
|
| 103 |
print(res)
|
| 104 |
|
| 105 |
|
| 106 |
-
def
|
| 107 |
# create dataset
|
| 108 |
res = create_dataset(get_auth, "test_create_dataset")
|
| 109 |
assert res.get("code") == 0, f"{res.get('message')}"
|
|
@@ -124,7 +124,8 @@ def test_update_different_params_dataset(get_auth):
|
|
| 124 |
print(f"found {len(dataset_list)} datasets")
|
| 125 |
dataset_id = dataset_list[0]
|
| 126 |
|
| 127 |
-
json_req = {"kb_id": dataset_id, "name": "test_update_dataset", "description": "test", "permission": "me", "parser_id": "presentation"
|
|
|
|
| 128 |
res = update_dataset(get_auth, json_req)
|
| 129 |
assert res.get("code") == 0, f"{res.get('message')}"
|
| 130 |
|
|
@@ -134,4 +135,36 @@ def test_update_different_params_dataset(get_auth):
|
|
| 134 |
assert res.get("code") == 0, f"{res.get('message')}"
|
| 135 |
print(f"{len(dataset_list)} datasets are deleted")
|
| 136 |
|
|
|
|
| 137 |
# update dataset with different parameters
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 103 |
print(res)
|
| 104 |
|
| 105 |
|
| 106 |
+
def test_update_different_params_dataset_success(get_auth):
|
| 107 |
# create dataset
|
| 108 |
res = create_dataset(get_auth, "test_create_dataset")
|
| 109 |
assert res.get("code") == 0, f"{res.get('message')}"
|
|
|
|
| 124 |
print(f"found {len(dataset_list)} datasets")
|
| 125 |
dataset_id = dataset_list[0]
|
| 126 |
|
| 127 |
+
json_req = {"kb_id": dataset_id, "name": "test_update_dataset", "description": "test", "permission": "me", "parser_id": "presentation",
|
| 128 |
+
"language": "spanish"}
|
| 129 |
res = update_dataset(get_auth, json_req)
|
| 130 |
assert res.get("code") == 0, f"{res.get('message')}"
|
| 131 |
|
|
|
|
| 135 |
assert res.get("code") == 0, f"{res.get('message')}"
|
| 136 |
print(f"{len(dataset_list)} datasets are deleted")
|
| 137 |
|
| 138 |
+
|
| 139 |
# update dataset with different parameters
|
| 140 |
+
def test_update_different_params_dataset_fail(get_auth):
|
| 141 |
+
# create dataset
|
| 142 |
+
res = create_dataset(get_auth, "test_create_dataset")
|
| 143 |
+
assert res.get("code") == 0, f"{res.get('message')}"
|
| 144 |
+
|
| 145 |
+
# list dataset
|
| 146 |
+
page_number = 1
|
| 147 |
+
dataset_list = []
|
| 148 |
+
while True:
|
| 149 |
+
res = list_dataset(get_auth, page_number)
|
| 150 |
+
data = res.get("data").get("kbs")
|
| 151 |
+
for item in data:
|
| 152 |
+
dataset_id = item.get("id")
|
| 153 |
+
dataset_list.append(dataset_id)
|
| 154 |
+
if len(dataset_list) < page_number * 150:
|
| 155 |
+
break
|
| 156 |
+
page_number += 1
|
| 157 |
+
|
| 158 |
+
print(f"found {len(dataset_list)} datasets")
|
| 159 |
+
dataset_id = dataset_list[0]
|
| 160 |
+
|
| 161 |
+
json_req = {"kb_id": dataset_id, "id": "xxx"}
|
| 162 |
+
res = update_dataset(get_auth, json_req)
|
| 163 |
+
assert res.get("code") == 101
|
| 164 |
+
|
| 165 |
+
# delete dataset
|
| 166 |
+
for dataset_id in dataset_list:
|
| 167 |
+
res = rm_dataset(get_auth, dataset_id)
|
| 168 |
+
assert res.get("code") == 0, f"{res.get('message')}"
|
| 169 |
+
print(f"{len(dataset_list)} datasets are deleted")
|
| 170 |
+
|