jinhai-2012 commited on
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 test_update_different_params_dataset(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,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
+