style: normalize python formatting gates

This commit is contained in:
Xiaoxia AI
2026-06-21 06:52:19 +08:00
parent 0809a079c5
commit bfbaddbd9a
129 changed files with 3024 additions and 2485 deletions
+47 -41
View File
@@ -1,20 +1,23 @@
"""
用户注册 Use Case 测试
"""
import pytest
from unittest.mock import Mock
import pytest
from packages.application.auth import (
RegisterUserUseCase,
RegisterUserRequest,
VerifyEmailUseCase,
RegisterUserUseCase,
VerifyEmailRequest,
VerifyEmailUseCase,
)
from packages.domain.entities import User
class TestRegisterUserUseCase:
"""注册用例测试"""
@pytest.fixture
def mock_user_repo(self):
"""Mock 用户仓储"""
@@ -24,7 +27,7 @@ class TestRegisterUserUseCase:
repo.find_by_verification_token = Mock(return_value=None)
repo.save = Mock()
return repo
@pytest.fixture
def use_case(self, mock_user_repo):
"""创建注册用例"""
@@ -35,26 +38,26 @@ class TestRegisterUserUseCase:
base_url="https://test.com",
email_service=email_service,
)
def test_register_user_success(self, use_case, mock_user_repo):
"""测试注册成功"""
request = RegisterUserRequest(
email="test@example.com",
password="SecurePass123",
username="testuser",
display_name="Test User",
)
response, error = use_case.execute(request)
assert error is None
assert response is not None
assert response.email == "test@example.com"
assert response.username == "testuser"
assert response.display_name == "Test User"
assert response.email_verification_sent is True
# 验证保存了用户
mock_user_repo.save.assert_called_once()
saved_user = mock_user_repo.save.call_args[0][0]
@@ -62,7 +65,7 @@ class TestRegisterUserUseCase:
assert saved_user.password_hash != ""
assert saved_user.email_verified is False
assert saved_user.email_verification_token is not None
def test_register_user_weak_password(self, use_case):
"""测试弱密码"""
request = RegisterUserRequest(
@@ -71,13 +74,13 @@ class TestRegisterUserUseCase:
username="testuser",
display_name="Test User",
)
response, error = use_case.execute(request)
assert response is None
assert error is not None
assert "at least 8 characters" in error
def test_register_user_email_exists(self, use_case, mock_user_repo):
"""测试邮箱已存在"""
# Mock 返回已存在的用户
@@ -88,19 +91,19 @@ class TestRegisterUserUseCase:
display_name="Existing",
)
mock_user_repo.find_by_email.return_value = existing_user
request = RegisterUserRequest(
email="test@example.com",
password="SecurePass123",
username="testuser",
display_name="Test User",
)
response, error = use_case.execute(request)
assert response is None
assert error == "Email already registered"
def test_register_user_username_taken(self, use_case, mock_user_repo):
"""测试用户名已被占用"""
existing_user = User(
@@ -110,19 +113,19 @@ class TestRegisterUserUseCase:
display_name="Other",
)
mock_user_repo.find_by_username.return_value = existing_user
request = RegisterUserRequest(
email="test@example.com",
password="SecurePass123",
username="testuser",
display_name="Test User",
)
response, error = use_case.execute(request)
assert response is None
assert error == "Username already taken"
def test_register_user_missing_email(self, use_case):
"""测试缺少邮箱"""
request = RegisterUserRequest(
@@ -131,25 +134,28 @@ class TestRegisterUserUseCase:
username="testuser",
display_name="Test User",
)
response, error = use_case.execute(request)
assert response is None
assert error == "Email is required"
def test_register_user_email_send_failure(self, use_case, mock_user_repo):
"""测试邮件发送失败(用户仍然创建)"""
use_case.email_service.send_verification_email.return_value = (False, "SMTP error")
use_case.email_service.send_verification_email.return_value = (
False,
"SMTP error",
)
request = RegisterUserRequest(
email="test@example.com",
password="SecurePass123",
username="testuser",
display_name="Test User",
)
response, error = use_case.execute(request)
assert error is None # 用户创建成功
assert response is not None
assert response.email_verification_sent is False # 但邮件发送失败
@@ -157,18 +163,18 @@ class TestRegisterUserUseCase:
class TestVerifyEmailUseCase:
"""邮箱验证用例测试"""
@pytest.fixture
def mock_user_repo(self):
repo = Mock()
repo.find_by_verification_token = Mock(return_value=None)
repo.save = Mock()
return repo
@pytest.fixture
def use_case(self, mock_user_repo):
return VerifyEmailUseCase(user_repository=mock_user_repo)
def test_verify_email_success(self, use_case, mock_user_repo):
"""测试验证成功"""
user = User(
@@ -180,28 +186,28 @@ class TestVerifyEmailUseCase:
email_verification_token="valid-token",
)
mock_user_repo.find_by_verification_token.return_value = user
request = VerifyEmailRequest(token="valid-token")
success, error = use_case.execute(request)
assert success is True
assert error is None
# 验证用户状态已更新
assert user.email_verified is True
assert user.email_verification_token is None
mock_user_repo.save.assert_called_once()
def test_verify_email_invalid_token(self, use_case, mock_user_repo):
"""测试无效令牌"""
mock_user_repo.find_by_verification_token.return_value = None
request = VerifyEmailRequest(token="invalid-token")
success, error = use_case.execute(request)
assert success is False
assert error == "Invalid or expired verification token"
def test_verify_email_already_verified(self, use_case, mock_user_repo):
"""测试已验证的邮箱"""
user = User(
@@ -213,9 +219,9 @@ class TestVerifyEmailUseCase:
email_verification_token="old-token",
)
mock_user_repo.find_by_verification_token.return_value = user
request = VerifyEmailRequest(token="old-token")
success, error = use_case.execute(request)
assert success is True # 已验证也返回成功
assert error is None