Commit b45217c3 authored by Wei Shoulin's avatar Wei Shoulin
Browse files

feat(user): add user management module with complete CRUD operations

parent b347ddb0
from .common import request, Result
def current() -> Result:
"""
获取当前登录用户信息
Returns:
Result: 当前用户信息
"""
return request.get(f"/api/users/me")
def find(key: str, page: int = 1, limit: int = 0) -> Result:
"""
查询用户信息
Args:
key (str): 查询键,如'username'或'email'
page (int, optional): 分页页码,默认值为1
limit (int, optional): 分页每页数量,默认值为0
Returns:
Result: 查询结果
"""
params = {
'key': key,
'page': page,
'limit': limit
}
return request.post(f"/api/users/find", params)
def login(username: str, password: str) -> Result:
"""
用户登录
Args:
username (str): 用户名
password (str): 密码
Returns:
Result: 登录结果
"""
params = {
'username': username,
'password': password
}
return request.post(f"/api/users/login", params)
def add(username: str, password: str, nickname: str, email: str, role: str = 'user') -> Result:
"""
添加用户
Args:
username (str): 用户名
password (str): 密码
nickname (str, optional): 姓名
email (str): 邮箱
role (str, optional): 角色,默认值为'user'
Returns:
Result: 添加结果
"""
params = {
'username': username,
'password': password,
'email': email,
'nickname': nickname,
'role': role
}
return request.post(f"/api/users/add", params)
def update(username: str, nickname: str, email: str, role: str = 'user') -> Result:
"""
更新用户信息
Args:
username (str): 用户名
nickname (str, optional): 姓名
email (str): 邮箱
role (str, optional): 角色,默认值为'user'
Returns:
Result: 更新结果
"""
params = {
'username': username,
'nickname': nickname,
'email': email,
'role': role
}
return request.post(f"/api/users/update", params)
def passwd(old_password: str, new_password: str) -> Result:
"""
更新用户密码
Args:
old_password (str): 旧密码
new_password (str): 新密码
Returns:
Result: 更新结果
"""
params = {
'old_password': old_password,
'new_password': new_password
}
return request.post(f"/api/users/password", params)
def delete(username: str) -> Result:
"""
删除用户
Args:
username (str): 用户名
Returns:
Result: 删除结果
"""
params = {
'username': username
}
return request.post(f"/api/users/delete", params)
import unittest
import time
from csst_dfs_client import user
class UserTestCase(unittest.TestCase):
def setUp(self):
pass
def test_find(self):
result = user.find(key="s")
print(result)
self.assertEqual(result.code, 200, "error code: " + result.message)
self.assertIsNotNone(result.data, "error message: " + result.message)
def test_login(self):
result = user.login(username="test", password="123456")
print(result)
self.assertEqual(result.code, 200, "error code: " + str(result.code) + ", message: " + result.message)
self.assertIsNotNone(result.data, "error message: " + result.message)
def test_add_user(self):
result = user.add(username="test", password="123456", nickname="test", email="test@test.com", role="user")
print(result)
self.assertEqual(result.code, 200, "error code: " + str(result.code) + ", message: " + result.message)
def test_update_user(self):
result = user.update(username="test", nickname="test", email="test@test.com", role="user")
print(result)
self.assertEqual(result.code, 200, "error code: " + str(result.code) + ", message: " + result.message)
def test_delete_user(self):
result = user.delete(username="test")
print(result)
self.assertEqual(result.code, 200, "error code: " + str(result.code) + ", message: " + result.message)
def test_passwd(self):
result = user.passwd(old_password="123456", new_password="123456")
print(result)
self.assertEqual(result.code, 200, "error code: " + str(result.code) + ", message: " + result.message)
import unittest
from csst_dfs_client.common.utils import is_valid_datetime_format
class TestIsValidDatetimeFormat(unittest.TestCase):
def test_valid_basic_format(self):
"""测试有效的基础格式日期时间"""
self.assertTrue(is_valid_datetime_format("2023-05-15 14:30:00"))
def test_valid_iso_format_without_timezone(self):
"""测试有效的ISO格式(不带时区)日期时间"""
self.assertTrue(is_valid_datetime_format("2023-05-15T14:30:00"))
def test_valid_iso_format_with_timezone(self):
"""测试有效的ISO格式(带时区)日期时间"""
self.assertTrue(is_valid_datetime_format("2023-05-15T14:30:00+08:00"))
def test_valid_iso_format_with_timezone2(self):
"""测试有效的ISO格式(带时区)日期时间"""
self.assertTrue(is_valid_datetime_format("2023-05-15T14:30:00.123"))
def test_invalid_date_format(self):
"""测试无效的日期格式"""
with self.assertRaises(ValueError):
is_valid_datetime_format("2023/05/15 14:30:00")
def test_invalid_time_format(self):
"""测试无效的时间格式"""
with self.assertRaises(ValueError):
is_valid_datetime_format("2023-05-15 14-30-00")
def test_empty_string(self):
"""测试空字符串"""
with self.assertRaises(ValueError):
is_valid_datetime_format("")
if __name__ == '__main__':
unittest.main()
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment