64 lines
1.7 KiB
Python
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}"
|