Coverage for tests\system\v1\user_test.py: 100%
69 statements
« prev ^ index » next coverage.py v7.4.4, created at 2024-04-13 15:26 +0800
« prev ^ index » next coverage.py v7.4.4, created at 2024-04-13 15:26 +0800
1import io
3import pandas as pd
4import pytest
5from fastapi import UploadFile
6from fastapi.testclient import TestClient
8from fss.common.config import configs
9from fss.common.util.security import get_user_id
10from fss.starter.server import app
11from fss.starter.system.schema.user_schema import UpdateUserCmd
13client = TestClient(app)
16def test_user_register():
17 user_data = {
18 "username": "example_user",
19 "password": "example_password",
20 "nickname": "Example Nickname",
21 }
22 response = client.post(f"{configs.api_version}/user/register", json=user_data)
23 assert response.status_code == 200
24 assert response.json()["code"] == 0
27@pytest.fixture(scope="class")
28def login():
29 response = client.post(
30 f"{configs.api_version}/user/login",
31 data={"username": "example_user", "password": "example_password"},
32 )
33 assert response.status_code == 200
34 assert response.json()["token_type"] == "bearer"
35 access_token = response.json()["access_token"]
36 user_id = get_user_id(access_token)
37 yield response.json()["access_token"], user_id
40def test_user_login():
41 response = client.post(
42 f"{configs.api_version}/user/login",
43 data={"username": "example_user", "password": "example_password"},
44 )
45 assert response.status_code == 200
46 assert response.json()["token_type"] == "bearer"
49def test_user_me():
50 login_response = client.post(
51 f"{configs.api_version}/user/login",
52 data={"username": "example_user", "password": "example_password"},
53 )
54 assert login_response.status_code == 200
55 access_token = login_response.json()["access_token"]
56 headers = {"Authorization": f"Bearer {access_token}"}
57 response = client.get(f"{configs.api_version}/user/me", headers=headers)
58 assert response.status_code == 200
59 assert response.json()["code"] == 0
62def test_update_user(login):
63 access_token, user_id = login
64 headers = {"Authorization": f"Bearer {access_token}"}
65 updateUserCmd = UpdateUserCmd(id=f"{user_id}", nickname="example_nickname")
66 response = client.put(
67 f"{configs.api_version}/user",
68 json=(updateUserCmd.model_dump()),
69 headers=headers,
70 )
71 assert response.status_code == 200
72 assert response.json()["code"] == 0
75def test_export_user_template(login):
76 access_token, user_id = login
77 headers = {"Authorization": f"Bearer {access_token}"}
78 response = client.get(f"{configs.api_version}/user/exportTemplate", headers=headers)
79 assert response.status_code == 200
82def test_export_user(login):
83 access_token, user_id = login
84 headers = {"Authorization": f"Bearer {access_token}"}
85 response = client.get(f"{configs.api_version}/user/export", headers=headers)
86 assert response.status_code == 200
89def test_import_user(login):
90 access_token, user_id = login
91 headers = {
92 "Authorization": f"Bearer {access_token}",
93 "content_type": "multipart/form-data",
94 }
95 df = pd.DataFrame(
96 {
97 "username": ["example_user_2"],
98 "password": ["password"],
99 "nickname": ["nickname"],
100 }
101 )
102 buffer = io.BytesIO()
103 df.to_excel(buffer, index=False)
104 buffer.seek(0)
105 file = UploadFile(filename="test_users.xlsx", file=buffer)
107 response = client.post(
108 f"{configs.api_version}/user/import",
109 headers=headers,
110 files={"file": (file.filename, file.file, file.content_type)},
111 )
112 assert response.status_code == 200
113 assert response.json()["code"] == 0
116def test_remove_user(login):
117 access_token, user_id = login
118 headers = {"Authorization": f"Bearer {access_token}"}
119 response = client.delete(f"{configs.api_version}/user/{user_id}", headers=headers)
120 assert response.status_code == 200
121 assert response.json()["code"] == 0