From 298d02a77a69321af8c0023df3250663e9d1362d Mon Sep 17 00:00:00 2001 From: Paul Schilling Date: Sat, 24 Sep 2022 15:26:14 +0100 Subject: Fixed #25617 -- Added case-insensitive unique username validation in UserCreationForm. Co-Authored-By: Neven Mundar --- tests/auth_tests/test_forms.py | 68 ++++++++++++++++++++++++++---------------- 1 file changed, 43 insertions(+), 25 deletions(-) (limited to 'tests/auth_tests/test_forms.py') diff --git a/tests/auth_tests/test_forms.py b/tests/auth_tests/test_forms.py index 1aee923bb9..c3ce1f570f 100644 --- a/tests/auth_tests/test_forms.py +++ b/tests/auth_tests/test_forms.py @@ -6,6 +6,7 @@ from unittest import mock from django.contrib.auth.forms import ( AdminPasswordChangeForm, AuthenticationForm, + BaseUserCreationForm, PasswordChangeForm, PasswordResetForm, ReadOnlyPasswordHashField, @@ -54,14 +55,14 @@ class TestDataMixin: cls.u6 = User.objects.create(username="unknown_password", password="foo$bar") -class UserCreationFormTest(TestDataMixin, TestCase): +class BaseUserCreationFormTest(TestDataMixin, TestCase): def test_user_already_exists(self): data = { "username": "testclient", "password1": "test123", "password2": "test123", } - form = UserCreationForm(data) + form = BaseUserCreationForm(data) self.assertFalse(form.is_valid()) self.assertEqual( form["username"].errors, @@ -74,7 +75,7 @@ class UserCreationFormTest(TestDataMixin, TestCase): "password1": "test123", "password2": "test123", } - form = UserCreationForm(data) + form = BaseUserCreationForm(data) self.assertFalse(form.is_valid()) validator = next( v @@ -90,7 +91,7 @@ class UserCreationFormTest(TestDataMixin, TestCase): "password1": "test123", "password2": "test", } - form = UserCreationForm(data) + form = BaseUserCreationForm(data) self.assertFalse(form.is_valid()) self.assertEqual( form["password2"].errors, [str(form.error_messages["password_mismatch"])] @@ -99,7 +100,7 @@ class UserCreationFormTest(TestDataMixin, TestCase): def test_both_passwords(self): # One (or both) passwords weren't given data = {"username": "jsmith"} - form = UserCreationForm(data) + form = BaseUserCreationForm(data) required_error = [str(Field.default_error_messages["required"])] self.assertFalse(form.is_valid()) self.assertEqual(form["password1"].errors, required_error) @@ -119,7 +120,7 @@ class UserCreationFormTest(TestDataMixin, TestCase): "password1": "test123", "password2": "test123", } - form = UserCreationForm(data) + form = BaseUserCreationForm(data) self.assertTrue(form.is_valid()) form.save(commit=False) self.assertEqual(password_changed.call_count, 0) @@ -133,7 +134,7 @@ class UserCreationFormTest(TestDataMixin, TestCase): "password1": "test123", "password2": "test123", } - form = UserCreationForm(data) + form = BaseUserCreationForm(data) self.assertTrue(form.is_valid()) u = form.save() self.assertEqual(u.username, "宝") @@ -147,7 +148,7 @@ class UserCreationFormTest(TestDataMixin, TestCase): "password1": "pwd2", "password2": "pwd2", } - form = UserCreationForm(data) + form = BaseUserCreationForm(data) self.assertTrue(form.is_valid()) user = form.save() self.assertNotEqual(user.username, ohm_username) @@ -168,7 +169,7 @@ class UserCreationFormTest(TestDataMixin, TestCase): "password1": "pwd2", "password2": "pwd2", } - form = UserCreationForm(data) + form = BaseUserCreationForm(data) self.assertFalse(form.is_valid()) self.assertEqual( form.errors["username"], ["A user with that username already exists."] @@ -198,7 +199,7 @@ class UserCreationFormTest(TestDataMixin, TestCase): "password1": "testclient", "password2": "testclient", } - form = UserCreationForm(data) + form = BaseUserCreationForm(data) self.assertFalse(form.is_valid()) self.assertEqual(len(form["password2"].errors), 2) self.assertIn( @@ -210,8 +211,8 @@ class UserCreationFormTest(TestDataMixin, TestCase): ) def test_custom_form(self): - class CustomUserCreationForm(UserCreationForm): - class Meta(UserCreationForm.Meta): + class CustomUserCreationForm(BaseUserCreationForm): + class Meta(BaseUserCreationForm.Meta): model = ExtensionUser fields = UserCreationForm.Meta.fields + ("date_of_birth",) @@ -225,8 +226,8 @@ class UserCreationFormTest(TestDataMixin, TestCase): self.assertTrue(form.is_valid()) def test_custom_form_with_different_username_field(self): - class CustomUserCreationForm(UserCreationForm): - class Meta(UserCreationForm.Meta): + class CustomUserCreationForm(BaseUserCreationForm): + class Meta(BaseUserCreationForm.Meta): model = CustomUser fields = ("email", "date_of_birth") @@ -240,8 +241,8 @@ class UserCreationFormTest(TestDataMixin, TestCase): self.assertTrue(form.is_valid()) def test_custom_form_hidden_username_field(self): - class CustomUserCreationForm(UserCreationForm): - class Meta(UserCreationForm.Meta): + class CustomUserCreationForm(BaseUserCreationForm): + class Meta(BaseUserCreationForm.Meta): model = CustomUserWithoutIsActiveField fields = ("email",) # without USERNAME_FIELD @@ -254,8 +255,8 @@ class UserCreationFormTest(TestDataMixin, TestCase): self.assertTrue(form.is_valid()) def test_custom_form_saves_many_to_many_field(self): - class CustomUserCreationForm(UserCreationForm): - class Meta(UserCreationForm.Meta): + class CustomUserCreationForm(BaseUserCreationForm): + class Meta(BaseUserCreationForm.Meta): model = CustomUserWithM2M fields = UserCreationForm.Meta.fields + ("orgs",) @@ -278,7 +279,7 @@ class UserCreationFormTest(TestDataMixin, TestCase): "password1": " testpassword ", "password2": " testpassword ", } - form = UserCreationForm(data) + form = BaseUserCreationForm(data) self.assertTrue(form.is_valid()) self.assertEqual(form.cleaned_data["password1"], data["password1"]) self.assertEqual(form.cleaned_data["password2"], data["password2"]) @@ -294,7 +295,7 @@ class UserCreationFormTest(TestDataMixin, TestCase): ] ) def test_password_help_text(self): - form = UserCreationForm() + form = BaseUserCreationForm() self.assertEqual( form.fields["password1"].help_text, "