summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2018-07-02 18:10:36 -0400
committerTim Graham <timograham@gmail.com>2018-07-02 18:57:12 -0400
commit78f502cd0bc834422c3f189e852564fe4b6459f2 (patch)
treeb52ddb2484cebb94be32e74ffdf5e71962b1c382 /tests
parentfb05b9432451d77890e24f66af35e9ca4a71867f (diff)
[2.1.x] Fixed #29449 -- Reverted "Fixed #28757 -- Allowed using contrib.auth forms without installing contrib.auth."
This reverts commit 3333d935d2914cd80cf31f4803821ad5c0e2a51d due to a crash if USERNAME_FIELD isn't a CharField. Backport of f3fa86a89b3b85242f49b2b9acf58b5ea35acc1f from master
Diffstat (limited to 'tests')
-rw-r--r--tests/auth_tests/test_forms.py140
1 files changed, 30 insertions, 110 deletions
diff --git a/tests/auth_tests/test_forms.py b/tests/auth_tests/test_forms.py
index 52d61cfe87..825138755d 100644
--- a/tests/auth_tests/test_forms.py
+++ b/tests/auth_tests/test_forms.py
@@ -1,9 +1,7 @@
import datetime
import re
-from importlib import reload
from unittest import mock
-import django
from django import forms
from django.contrib.auth.forms import (
AdminPasswordChangeForm, AuthenticationForm, PasswordChangeForm,
@@ -13,7 +11,7 @@ from django.contrib.auth.forms import (
from django.contrib.auth.models import User
from django.contrib.auth.signals import user_login_failed
from django.contrib.sites.models import Site
-from django.core import mail, signals
+from django.core import mail
from django.core.mail import EmailMultiAlternatives
from django.forms.fields import CharField, Field, IntegerField
from django.test import SimpleTestCase, TestCase, override_settings
@@ -29,24 +27,6 @@ from .models.with_integer_username import IntegerUsernameUser
from .settings import AUTH_TEMPLATES
-def reload_auth_forms(sender, setting, value, enter, **kwargs):
- if setting == 'AUTH_USER_MODEL':
- reload(django.contrib.auth.forms)
-
-
-class ReloadFormsMixin:
-
- @classmethod
- def setUpClass(cls):
- super().setUpClass()
- signals.setting_changed.connect(reload_auth_forms)
-
- @classmethod
- def tearDownClass(cls):
- signals.setting_changed.disconnect(reload_auth_forms)
- super().tearDownClass()
-
-
class TestDataMixin:
@classmethod
@@ -57,10 +37,9 @@ class TestDataMixin:
cls.u4 = User.objects.create(username='empty_password', password='')
cls.u5 = User.objects.create(username='unmanageable_password', password='$')
cls.u6 = User.objects.create(username='unknown_password', password='foo$bar')
- cls.u7 = ExtensionUser.objects.create(username='extension_client', date_of_birth='1998-02-24')
-class UserCreationFormTest(ReloadFormsMixin, TestDataMixin, TestCase):
+class UserCreationFormTest(TestDataMixin, TestCase):
def test_user_already_exists(self):
data = {
@@ -196,25 +175,19 @@ class UserCreationFormTest(ReloadFormsMixin, TestDataMixin, TestCase):
)
def test_custom_form(self):
- with override_settings(AUTH_USER_MODEL='auth_tests.ExtensionUser'):
- from django.contrib.auth.forms import UserCreationForm
- self.assertEqual(UserCreationForm.Meta.model, ExtensionUser)
-
- class CustomUserCreationForm(UserCreationForm):
- class Meta(UserCreationForm.Meta):
- fields = UserCreationForm.Meta.fields + ('date_of_birth',)
+ class CustomUserCreationForm(UserCreationForm):
+ class Meta(UserCreationForm.Meta):
+ model = ExtensionUser
+ fields = UserCreationForm.Meta.fields + ('date_of_birth',)
- data = {
- 'username': 'testclient',
- 'password1': 'testclient',
- 'password2': 'testclient',
- 'date_of_birth': '1988-02-24',
- }
- form = CustomUserCreationForm(data)
- self.assertTrue(form.is_valid())
- # reload_auth_forms() reloads the form.
- from django.contrib.auth.forms import UserCreationForm
- self.assertEqual(UserCreationForm.Meta.model, User)
+ data = {
+ 'username': 'testclient',
+ 'password1': 'testclient',
+ 'password2': 'testclient',
+ 'date_of_birth': '1988-02-24',
+ }
+ form = CustomUserCreationForm(data)
+ self.assertTrue(form.is_valid())
def test_custom_form_with_different_username_field(self):
class CustomUserCreationForm(UserCreationForm):
@@ -288,30 +261,6 @@ class UserCreationFormTest(ReloadFormsMixin, TestDataMixin, TestCase):
['The password is too similar to the first name.'],
)
- def test_with_custom_user_model(self):
- with override_settings(AUTH_USER_MODEL='auth_tests.ExtensionUser'):
- data = {
- 'username': 'test_username',
- 'password1': 'test_password',
- 'password2': 'test_password',
- }
- from django.contrib.auth.forms import UserCreationForm
- self.assertEqual(UserCreationForm.Meta.model, ExtensionUser)
- form = UserCreationForm(data)
- self.assertTrue(form.is_valid())
-
- def test_customer_user_model_with_different_username_field(self):
- with override_settings(AUTH_USER_MODEL='auth_tests.CustomUser'):
- from django.contrib.auth.forms import UserCreationForm
- self.assertEqual(UserCreationForm.Meta.model, CustomUser)
- data = {
- 'email': 'testchange@test.com',
- 'password1': 'test_password',
- 'password2': 'test_password',
- }
- form = UserCreationForm(data)
- self.assertTrue(form.is_valid())
-
# To verify that the login form rejects inactive users, use an authentication
# backend that allows them.
@@ -677,7 +626,7 @@ class PasswordChangeFormTest(TestDataMixin, TestCase):
self.assertEqual(form.cleaned_data['new_password2'], data['new_password2'])
-class UserChangeFormTest(ReloadFormsMixin, TestDataMixin, TestCase):
+class UserChangeFormTest(TestDataMixin, TestCase):
def test_username_validity(self):
user = User.objects.get(username='testclient')
@@ -751,51 +700,22 @@ class UserChangeFormTest(ReloadFormsMixin, TestDataMixin, TestCase):
self.assertEqual(form.initial['password'], form['password'].value())
def test_custom_form(self):
- with override_settings(AUTH_USER_MODEL='auth_tests.ExtensionUser'):
- from django.contrib.auth.forms import UserChangeForm
- self.assertEqual(UserChangeForm.Meta.model, ExtensionUser)
-
- class CustomUserChangeForm(UserChangeForm):
- class Meta(UserChangeForm.Meta):
- fields = ('username', 'password', 'date_of_birth')
-
- data = {
- 'username': 'testclient',
- 'password': 'testclient',
- 'date_of_birth': '1998-02-24',
- }
- form = CustomUserChangeForm(data, instance=self.u7)
- self.assertTrue(form.is_valid())
- form.save()
- self.assertEqual(form.cleaned_data['username'], 'testclient')
- self.assertEqual(form.cleaned_data['date_of_birth'], datetime.date(1998, 2, 24))
- # reload_auth_forms() reloads the form.
- from django.contrib.auth.forms import UserChangeForm
- self.assertEqual(UserChangeForm.Meta.model, User)
-
- def test_with_custom_user_model(self):
- with override_settings(AUTH_USER_MODEL='auth_tests.ExtensionUser'):
- from django.contrib.auth.forms import UserChangeForm
- self.assertEqual(UserChangeForm.Meta.model, ExtensionUser)
- data = {
- 'username': 'testclient',
- 'date_joined': '1998-02-24',
- 'date_of_birth': '1998-02-24',
- }
- form = UserChangeForm(data, instance=self.u7)
- self.assertTrue(form.is_valid())
+ class CustomUserChangeForm(UserChangeForm):
+ class Meta(UserChangeForm.Meta):
+ model = ExtensionUser
+ fields = ('username', 'password', 'date_of_birth',)
- def test_customer_user_model_with_different_username_field(self):
- with override_settings(AUTH_USER_MODEL='auth_tests.CustomUser'):
- from django.contrib.auth.forms import UserChangeForm
- self.assertEqual(UserChangeForm.Meta.model, CustomUser)
- user = CustomUser.custom_objects.create(email='test@test.com', date_of_birth='1998-02-24')
- data = {
- 'email': 'testchange@test.com',
- 'date_of_birth': '1998-02-24',
- }
- form = UserChangeForm(data, instance=user)
- self.assertTrue(form.is_valid())
+ user = User.objects.get(username='testclient')
+ data = {
+ 'username': 'testclient',
+ 'password': 'testclient',
+ 'date_of_birth': '1998-02-24',
+ }
+ form = CustomUserChangeForm(data, instance=user)
+ self.assertTrue(form.is_valid())
+ form.save()
+ self.assertEqual(form.cleaned_data['username'], 'testclient')
+ self.assertEqual(form.cleaned_data['date_of_birth'], datetime.date(1998, 2, 24))
def test_password_excluded(self):
class UserChangeFormWithoutPassword(UserChangeForm):