Skip to content

Commit c61cbd0

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

File tree

3 files changed

+13
-12
lines changed

3 files changed

+13
-12
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_admin.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def make_post_data(self, user, **kwargs):
2828
return post_data
2929

3030
def test_does_not_validate_username_if_it_is_unchanged(self):
31-
user = factories.UserFactory.create(username='ewoutvs_')
31+
user = factories.UserFactory.create(username='ewoutvs__')
3232
post_data = self.make_post_data(user)
3333
form = admin.AdminUserChangeForm(post_data, instance=user)
3434
form.save()
@@ -42,7 +42,7 @@ def test_does_validate_username_if_it_changes(self):
4242

4343
def test_validates_username(self):
4444
user = factories.UserFactory.create()
45-
post_data = self.make_post_data(user, username='ewoutvs_')
45+
post_data = self.make_post_data(user, username='ewoutvs__')
4646
form = admin.AdminUserChangeForm(post_data, instance=user)
4747
with pytest.raises(ValueError):
4848
form.save()

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)