Skip to content

Commit b9a8fbc

Browse files
committed
Fix tests and simplify regex
1 parent 539e04f commit b9a8fbc

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

spongeauth/accounts/models.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,19 @@ def validate_username(username):
2323
errs.append(ValidationError(
2424
_('Username must be at least 3 characters long.'),
2525
code='username_min_length'))
26-
if re.search(r'[^\w_-]', username):
26+
if re.search(r'[^\w-]', username):
2727
errs.append(ValidationError(
2828
_('Username must only include numbers, letters, underscores and dashes.'),
2929
code='username_charset'))
30-
if re.search(r'[^\w_]', username[0]):
30+
if re.search(r'[\W]', username[0]):
3131
errs.append(ValidationError(
3232
_('Username must begin with a letter, number or underscore.'),
3333
code='username_initial_charset'))
34-
if re.search(r'[^\w_]', username[-1]):
34+
if re.search(r'[\W]', username[-1]):
3535
errs.append(ValidationError(
3636
_('Username must end with a letter, number or underscore.'),
3737
code='username_ending_charset'))
38-
if re.search(r'[-_]{2,}', username):
38+
if re.search(r'[^A-Za-z0-9]{2,}', username):
3939
errs.append(ValidationError(
4040
_('Username must not contain two special characters in a row.'),
4141
code='username_double_special'))

spongeauth/accounts/tests/test_username_validation.py

+7-6
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,16 @@
99
BAD_EXAMPLES = [
1010
("lukegb", []),
1111
("_lukegb", []),
12+
("_lukegb_", []),
1213
("a", ['username_min_length']),
13-
("__", ['username_double_special', 'username_min_length', 'username_ending_charset']),
14-
("._", ['username_double_special', 'username_min_length', 'username_ending_charset', 'username_initial_charset']),
14+
("__", ['username_double_special', 'username_min_length']),
15+
("._", ['username_double_special', 'username_min_length', 'username_charset', 'username_initial_charset']),
1516
("\N{SNOWMAN}", ['username_charset', 'username_min_length', 'username_ending_charset', 'username_initial_charset']),
16-
(".png", ['username_file_suffix', 'username_initial_charset']),
17-
("lukegb.png", ['username_file_suffix']),
17+
(".png", ['username_charset', 'username_initial_charset']),
18+
("lukegb.png", ['username_charset']),
1819
("luke__gb", ['username_double_special']),
19-
("luke_.gb", ['username_double_special']),
20-
("lukegb_", ['username_ending_charset']),
20+
("luke_.gb", ['username_charset', 'username_double_special']),
21+
("lukegb-", ['username_ending_charset']),
2122
("-lukegb", ['username_initial_charset']),
2223
]
2324

0 commit comments

Comments
 (0)