EnglishPal/app/test_login.py

64 lines
1.7 KiB
Python

# test_username.py
import pytest
from app.Login import UserName
def test_username_too_long():
username = 'a' * 21
result = UserName(username).validate()
assert username in result
assert 'too long' in result
def test_username_empty():
username = ''
result = UserName(username).validate()
assert 'empty user name' in result
def test_username_starts_with_dot():
username = '.startwithdot'
result = UserName(username).validate()
assert 'Period (.) is not allowed' in result
def test_username_contains_space():
username = 'has space'
result = UserName(username).validate()
assert 'Whitespace is not allowed' in result
def test_username_contains_invalid_punctuation():
invalid_chars = ['@', '#', '$', '!', '{', '}', '[', ']']
for c in invalid_chars:
username = f'bad{c}name'
result = UserName(username).validate()
assert f'{c} is not allowed' in result, f"Failed on char: {c}"
def test_username_uses_restricted_word():
restricted_words = ['signup', 'login', 'logout', 'reset', 'mark', 'back',
'unfamiliar', 'familiar', 'del', 'admin']
for word in restricted_words:
result = UserName(word).validate()
assert 'restricted word' in result, f"Failed on word: {word}"
def test_username_contains_chinese():
username = '用户名'
result = UserName(username).validate()
assert 'Chinese characters are not allowed' in result
def test_valid_username():
valid_usernames = [
'valid_user',
'valid.user',
'user123',
'A_veryValidName',
]
for username in valid_usernames:
result = UserName(username).validate()
assert result == 'OK', f"Failed on valid username: {username}"