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 |
+
|