af44c23f21
- 移除旧的测试套件和UAT测试文件 - 更新密码编码器配置使用BCrypt strength=12 - 添加用户角色关联表和相关服务 - 优化前端日期显示格式 - 清理无用资源和配置文件 - 增强测试数据管理和清理功能
160 lines
5.7 KiB
Python
160 lines
5.7 KiB
Python
"""
|
|
数据恢复和备份测试用例
|
|
测试数据备份、恢复和完整性验证
|
|
"""
|
|
|
|
import pytest
|
|
import asyncio
|
|
import time
|
|
from api.user_api import UserAPI
|
|
from api.role_api import RoleAPI
|
|
from api.notice_api import SysNoticeAPI
|
|
|
|
|
|
@pytest.mark.recovery
|
|
@pytest.mark.regression
|
|
@pytest.mark.critical
|
|
class TestDataRecovery:
|
|
"""数据恢复和备份测试类"""
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_user_data_backup_and_restore(self, authenticated_client, test_data_manager):
|
|
"""测试用户数据备份和恢复"""
|
|
user_api = UserAPI(authenticated_client)
|
|
|
|
unique_id = f"{int(time.time() * 1000)}"
|
|
|
|
# 创建测试用户
|
|
user_data = {
|
|
"username": f"backup_user_{unique_id}",
|
|
"password": "Test123!@#",
|
|
"email": f"backup_{unique_id}@example.com",
|
|
"status": 1
|
|
}
|
|
|
|
create_response = await user_api.create_user(user_data)
|
|
assert create_response.status_code == 201
|
|
user_id = create_response.json()["id"]
|
|
test_data_manager.add_user(user_id)
|
|
|
|
# 备份用户数据(模拟备份操作)
|
|
backup_data = create_response.json()
|
|
|
|
# 修改用户数据
|
|
update_data = {"email": f"updated_{unique_id}@example.com"}
|
|
await user_api.update_user(user_id, update_data)
|
|
|
|
# 验证数据已修改
|
|
updated_user = await user_api.get_user_by_id(user_id)
|
|
assert updated_user.json()["email"] == update_data["email"]
|
|
|
|
# 恢复数据(模拟恢复操作)
|
|
restore_response = await user_api.update_user(user_id, {
|
|
"email": backup_data["email"],
|
|
"username": backup_data["username"]
|
|
})
|
|
assert restore_response.status_code == 200
|
|
|
|
# 验证数据已恢复
|
|
restored_user = await user_api.get_user_by_id(user_id)
|
|
assert restored_user.json()["email"] == backup_data["email"]
|
|
assert restored_user.json()["username"] == backup_data["username"]
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_role_data_backup_and_restore(self, authenticated_client, test_data_manager):
|
|
"""测试角色数据备份和恢复"""
|
|
role_api = RoleAPI(authenticated_client)
|
|
|
|
unique_id = f"{int(time.time() * 1000)}"
|
|
|
|
# 创建测试角色
|
|
role_data = {
|
|
"roleName": f"Backup_Role_{unique_id}",
|
|
"roleKey": f"backup_role_{unique_id}",
|
|
"roleSort": 1,
|
|
"status": 1
|
|
}
|
|
|
|
create_response = await role_api.create_role(role_data)
|
|
assert create_response.status_code == 201
|
|
role_id = create_response.json()["id"]
|
|
test_data_manager.add_role(role_id)
|
|
|
|
# 备份角色数据
|
|
backup_data = create_response.json()
|
|
|
|
# 修改角色数据
|
|
update_data = {"roleName": f"Updated_Role_{unique_id}"}
|
|
await role_api.update_role(role_id, update_data)
|
|
|
|
# 验证数据已修改
|
|
updated_role = await role_api.get_role_by_id(role_id)
|
|
assert updated_role.json()["roleName"] == update_data["roleName"]
|
|
|
|
# 恢复数据
|
|
restore_response = await role_api.update_role(role_id, {
|
|
"roleName": backup_data["roleName"],
|
|
"roleKey": backup_data["roleKey"]
|
|
})
|
|
assert restore_response.status_code == 200
|
|
|
|
# 验证数据已恢复
|
|
restored_role = await role_api.get_role_by_id(role_id)
|
|
assert restored_role.json()["roleName"] == backup_data["roleName"]
|
|
assert restored_role.json()["roleKey"] == backup_data["roleKey"]
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_data_integrity_after_restore(self, authenticated_client, test_data_manager):
|
|
"""测试恢复后数据完整性"""
|
|
user_api = UserAPI(authenticated_client)
|
|
role_api = RoleAPI(authenticated_client)
|
|
|
|
unique_id = f"{int(time.time() * 1000)}"
|
|
|
|
# 创建角色
|
|
role_data = {
|
|
"roleName": f"Integrity_Role_{unique_id}",
|
|
"roleKey": f"integrity_role_{unique_id}",
|
|
"roleSort": 1,
|
|
"status": 1
|
|
}
|
|
role_response = await role_api.create_role(role_data)
|
|
role_id = role_response.json()["id"]
|
|
test_data_manager.add_role(role_id)
|
|
|
|
# 创建用户并分配角色
|
|
user_data = {
|
|
"username": f"integrity_user_{unique_id}",
|
|
"password": "Test123!@#",
|
|
"email": f"integrity_{unique_id}@example.com",
|
|
"roleId": role_id,
|
|
"status": 1
|
|
}
|
|
user_response = await user_api.create_user(user_data)
|
|
user_id = user_response.json()["id"]
|
|
test_data_manager.add_user(user_id)
|
|
|
|
# 备份数据
|
|
user_backup = user_response.json()
|
|
role_backup = role_response.json()
|
|
|
|
# 修改用户数据
|
|
await user_api.update_user(user_id, {"email": f"modified_{unique_id}@example.com"})
|
|
|
|
# 恢复用户数据
|
|
await user_api.update_user(user_id, {
|
|
"email": user_backup["email"],
|
|
"username": user_backup["username"]
|
|
})
|
|
|
|
# 验证完整性
|
|
restored_user = await user_api.get_user_by_id(user_id)
|
|
user_data = restored_user.json()
|
|
assert user_data["email"] == user_backup["email"]
|
|
# 验证用户仍然关联到角色(如果API返回roleId)
|
|
if "roleId" in user_data and user_data["roleId"]:
|
|
assert user_data["roleId"] == role_id
|
|
|
|
# 验证角色仍然存在
|
|
role_verify = await role_api.get_role_by_id(role_id)
|
|
assert role_verify.status_code == 200 |