# 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}"