jinhai-2012 commited on
Commit
84b999e
·
1 Parent(s): 68b9739

Fix KB list bugs and add web api test (#3649)

Browse files

### What problem does this PR solve?

1. Read KB list path parameter, page_number and page_size, which type
isn't int
2. Add cases on create / list / delete datasets.

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)
- [x] Test cases

Signed-off-by: jinhai <[email protected]>

api/apps/kb_app.py CHANGED
@@ -125,8 +125,8 @@ def detail():
125
  @manager.route('/list', methods=['GET'])
126
  @login_required
127
  def list_kbs():
128
- page_number = request.args.get("page", 1)
129
- items_per_page = request.args.get("page_size", 150)
130
  orderby = request.args.get("orderby", "create_time")
131
  desc = request.args.get("desc", True)
132
  try:
 
125
  @manager.route('/list', methods=['GET'])
126
  @login_required
127
  def list_kbs():
128
+ page_number = int(request.args.get("page", 1))
129
+ items_per_page = int(request.args.get("page_size", 150))
130
  orderby = request.args.get("orderby", "create_time")
131
  desc = request.args.get("desc", True)
132
  try:
sdk/python/test/conftest.py CHANGED
@@ -7,10 +7,13 @@ import requests
7
 
8
  HOST_ADDRESS = os.getenv('HOST_ADDRESS', 'http://127.0.0.1:9380')
9
 
10
- def generate_random_email():
11
- return 'user_' + ''.join(random.choices(string.ascii_lowercase + string.digits, k=8))+'@1.com'
12
 
13
- EMAIL = generate_random_email()
 
 
 
14
  # password is "123"
15
  PASSWORD='''ctAseGvejiaSWWZ88T/m4FQVOpQyUvP+x7sXtdv3feqZACiQleuewkUi35E16wSd5C5QcnkkcV9cYc8TKPTRZlxappDuirxghxoOvFcJxFU4ixLsD
16
  fN33jCHRoDUW81IH9zjij/vaw8IbVyb6vuwg6MX6inOEBRRzVbRYxXOu1wkWY6SsI8X70oF9aeLFp/PzQpjoe/YbSqpTq8qqrmHzn9vO+yvyYyvmDsphXe
@@ -49,7 +52,10 @@ def get_api_key_fixture():
49
 
50
  @pytest.fixture(scope="session")
51
  def get_auth():
52
- register()
 
 
 
53
  auth = login()
54
  return auth
55
 
 
7
 
8
  HOST_ADDRESS = os.getenv('HOST_ADDRESS', 'http://127.0.0.1:9380')
9
 
10
+ # def generate_random_email():
11
+ # return 'user_' + ''.join(random.choices(string.ascii_lowercase + string.digits, k=8))+'@1.com'
12
 
13
+ def generate_email():
14
+ return '[email protected]'
15
+
16
+ EMAIL = generate_email()
17
  # password is "123"
18
  PASSWORD='''ctAseGvejiaSWWZ88T/m4FQVOpQyUvP+x7sXtdv3feqZACiQleuewkUi35E16wSd5C5QcnkkcV9cYc8TKPTRZlxappDuirxghxoOvFcJxFU4ixLsD
19
  fN33jCHRoDUW81IH9zjij/vaw8IbVyb6vuwg6MX6inOEBRRzVbRYxXOu1wkWY6SsI8X70oF9aeLFp/PzQpjoe/YbSqpTq8qqrmHzn9vO+yvyYyvmDsphXe
 
52
 
53
  @pytest.fixture(scope="session")
54
  def get_auth():
55
+ try:
56
+ register()
57
+ except Exception as e:
58
+ print(e)
59
  auth = login()
60
  return auth
61
 
sdk/python/test/test_frontend_api/common.py CHANGED
@@ -1,2 +1,26 @@
1
  import os
2
- HOST_ADDRESS=os.getenv('HOST_ADDRESS', 'http://127.0.0.1:9380')
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import os
2
+ import requests
3
+
4
+ HOST_ADDRESS = os.getenv('HOST_ADDRESS', 'http://127.0.0.1:9380')
5
+
6
+ def create_dataset(auth, dataset_name):
7
+ authorization = {"Authorization": auth}
8
+ url = f"{HOST_ADDRESS}/v1/kb/create"
9
+ json = {"name": dataset_name}
10
+ res = requests.post(url=url, headers=authorization, json=json)
11
+ return res.json()
12
+
13
+
14
+ def list_dataset(auth, page_number):
15
+ authorization = {"Authorization": auth}
16
+ url = f"{HOST_ADDRESS}/v1/kb/list?page={page_number}"
17
+ res = requests.get(url=url, headers=authorization)
18
+ return res.json()
19
+
20
+
21
+ def rm_dataset(auth, dataset_id):
22
+ authorization = {"Authorization": auth}
23
+ url = f"{HOST_ADDRESS}/v1/kb/rm"
24
+ json = {"kb_id": dataset_id}
25
+ res = requests.post(url=url, headers=authorization, json=json)
26
+ return res.json()
sdk/python/test/test_frontend_api/test_dataset.py CHANGED
@@ -1,10 +1,63 @@
1
- from common import HOST_ADDRESS
2
  import requests
3
- def test_create_dataset(get_auth):
4
- authorization={"Authorization": get_auth}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  url = f"{HOST_ADDRESS}/v1/kb/create"
6
- json = {"name":"test_create_dataset"}
7
- res = requests.post(url=url,headers=authorization,json=json)
8
- res = res.json()
9
- assert res.get("code") == 0,f"{res.get('message')}"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
 
 
 
 
 
 
 
1
+ from common import HOST_ADDRESS, create_dataset, list_dataset, rm_dataset
2
  import requests
3
+
4
+
5
+ def test_dataset(get_auth):
6
+ # create dataset
7
+ res = create_dataset(get_auth, "test_create_dataset")
8
+ assert res.get("code") == 0, f"{res.get('message')}"
9
+
10
+ # list dataset
11
+ page_number = 1
12
+ dataset_list = []
13
+ while True:
14
+ res = list_dataset(get_auth, page_number)
15
+ data = res.get("data")
16
+ for item in data:
17
+ dataset_id = item.get("id")
18
+ dataset_list.append(dataset_id)
19
+ if len(dataset_list) < page_number * 150:
20
+ break
21
+ page_number += 1
22
+
23
+ print(f"found {len(dataset_list)} datasets")
24
+ # delete dataset
25
+ for dataset_id in dataset_list:
26
+ res = rm_dataset(get_auth, dataset_id)
27
+ assert res.get("code") == 0, f"{res.get('message')}"
28
+ print(f"{len(dataset_list)} datasets are deleted")
29
+
30
+
31
+ def test_dataset_1k_dataset(get_auth):
32
+ # create dataset
33
+ authorization = {"Authorization": get_auth}
34
  url = f"{HOST_ADDRESS}/v1/kb/create"
35
+ for i in range(1000):
36
+ res = create_dataset(get_auth, f"test_create_dataset_{i}")
37
+ assert res.get("code") == 0, f"{res.get('message')}"
38
+
39
+ # list dataset
40
+ page_number = 1
41
+ dataset_list = []
42
+ while True:
43
+ res = list_dataset(get_auth, page_number)
44
+ data = res.get("data")
45
+ for item in data:
46
+ dataset_id = item.get("id")
47
+ dataset_list.append(dataset_id)
48
+ if len(dataset_list) < page_number * 150:
49
+ break
50
+ page_number += 1
51
+
52
+ print(f"found {len(dataset_list)} datasets")
53
+ # delete dataset
54
+ for dataset_id in dataset_list:
55
+ res = rm_dataset(get_auth, dataset_id)
56
+ assert res.get("code") == 0, f"{res.get('message')}"
57
+ print(f"{len(dataset_list)} datasets are deleted")
58
 
59
+ # delete dataset
60
+ # create invalid name dataset
61
+ # update dataset with different parameters
62
+ # create duplicated name dataset
63
+ #