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 |
-
|
12 |
|
13 |
-
|
|
|
|
|
|
|
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 |
-
|
|
|
|
|
|
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
4 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
url = f"{HOST_ADDRESS}/v1/kb/create"
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
#
|