summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/contrib/auth/forms.py2
-rw-r--r--tests/auth_tests/test_forms.py21
2 files changed, 23 insertions, 0 deletions
diff --git a/django/contrib/auth/forms.py b/django/contrib/auth/forms.py
index de4c49e49b..56695bacf8 100644
--- a/django/contrib/auth/forms.py
+++ b/django/contrib/auth/forms.py
@@ -86,6 +86,8 @@ class UserCreationForm(forms.ModelForm):
self.error_messages['password_mismatch'],
code='password_mismatch',
)
+ self.instance.username = self.cleaned_data.get('username')
+ password_validation.validate_password(self.cleaned_data.get('password2'), self.instance)
return password2
def save(self, commit=True):
diff --git a/tests/auth_tests/test_forms.py b/tests/auth_tests/test_forms.py
index ab1cff3ea3..aa0a6af41a 100644
--- a/tests/auth_tests/test_forms.py
+++ b/tests/auth_tests/test_forms.py
@@ -132,6 +132,27 @@ class UserCreationFormTest(TestDataMixin, TestCase):
self.assertEqual(password_changed.call_count, 1)
self.assertEqual(repr(u), '<User: jsmith@example.com>')
+ @override_settings(AUTH_PASSWORD_VALIDATORS=[
+ {'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator'},
+ {'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 'OPTIONS': {
+ 'min_length': 12,
+ }},
+ ])
+ def test_validates_password(self):
+ data = {
+ 'username': 'testclient',
+ 'password1': 'testclient',
+ 'password2': 'testclient',
+ }
+ form = UserCreationForm(data)
+ self.assertFalse(form.is_valid())
+ self.assertEqual(len(form['password2'].errors), 2)
+ self.assertIn('The password is too similar to the username.', form['password2'].errors)
+ self.assertIn(
+ 'This password is too short. It must contain at least 12 characters.',
+ form['password2'].errors
+ )
+
@override_settings(USE_TZ=False, PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'])
class AuthenticationFormTest(TestDataMixin, TestCase):