EnglishPal/app/test/test_integration_login.py

75 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# test_integration_username.py
import pytest
import sys
import os
# 获取文件所在目录的上两级目录EnglishPal
project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..'))
sys.path.append(project_root)
from app.Login import add_user, check_username_availability
# 模拟数据库行为
class MockUserDB:
def __init__(self):
self.users = {}
def insert_user(self, username, password, start_date, expiry_date):
if username in self.users:
return False
self.users[username] = {
'password': password,
'start_date': start_date,
'expiry_date': expiry_date
}
return True
def get_user_by_username(self, username):
return self.users.get(username)
original_insert_user = None
original_get_user_by_username = None
@pytest.fixture(autouse=True)
def setup_and_teardown():
global original_insert_user, original_get_user_by_username
from app.Login import insert_user as original_iu, get_user_by_username as original_gubu
original_insert_user = original_iu
original_get_user_by_username = original_gubu
mock_db = MockUserDB()
def mock_insert_user(**kwargs):
return mock_db.insert_user(**kwargs)
def mock_get_user_by_username(username):
return mock_db.get_user_by_username(username)
from app.Login import insert_user, get_user_by_username
insert_user = mock_insert_user
get_user_by_username = mock_get_user_by_username
yield
from app.Login import insert_user, get_user_by_username
insert_user = original_insert_user
get_user_by_username = original_get_user_by_username
def test_add_user_with_empty_username_fails():
with pytest.raises(ValueError) as exc_info:
add_user('', 'Password123')
assert "Attribute User.name is required" in str(exc_info.value)
def test_add_user_with_valid_username_succeeds():
result = add_user('validuser', 'Password123')
assert result is None # 如果 add_user 不返回值,则断言无异常即可
assert check_username_availability('validuser') is False # 用户已存在