diff options
Diffstat (limited to 'tests/auth_tests')
| -rw-r--r-- | tests/auth_tests/models/with_custom_email_field.py | 23 | ||||
| -rw-r--r-- | tests/auth_tests/test_forms.py | 12 | ||||
| -rw-r--r-- | tests/auth_tests/test_models.py | 11 |
3 files changed, 46 insertions, 0 deletions
diff --git a/tests/auth_tests/models/with_custom_email_field.py b/tests/auth_tests/models/with_custom_email_field.py new file mode 100644 index 0000000000..a98b02b8f1 --- /dev/null +++ b/tests/auth_tests/models/with_custom_email_field.py @@ -0,0 +1,23 @@ +from django.contrib.auth.base_user import AbstractBaseUser +from django.contrib.auth.models import BaseUserManager +from django.db import models + + +class CustomEmailFieldUserManager(BaseUserManager): + def create_user(self, username, password, email): + user = self.model(username=username) + user.set_password(password) + user.email_address = email + user.save(using=self._db) + return user + + +class CustomEmailField(AbstractBaseUser): + username = models.CharField(max_length=255) + password = models.CharField(max_length=255) + email_address = models.EmailField() + is_active = models.BooleanField(default=True) + + EMAIL_FIELD = 'email_address' + + objects = CustomEmailFieldUserManager() diff --git a/tests/auth_tests/test_forms.py b/tests/auth_tests/test_forms.py index c0e2961424..8d656bd6f9 100644 --- a/tests/auth_tests/test_forms.py +++ b/tests/auth_tests/test_forms.py @@ -26,6 +26,7 @@ from django.utils.translation import ugettext as _ from .models.custom_user import ( CustomUser, CustomUserWithoutIsActiveField, ExtensionUser, ) +from .models.with_custom_email_field import CustomEmailField from .models.with_integer_username import IntegerUsernameUser from .settings import AUTH_TEMPLATES @@ -812,6 +813,17 @@ class PasswordResetFormTest(TestDataMixin, TestCase): message.get_payload(1).get_payload() )) + @override_settings(AUTH_USER_MODEL='auth_tests.CustomEmailField') + def test_custom_email_field(self): + email = 'test@mail.com' + CustomEmailField.objects.create_user('test name', 'test password', email) + form = PasswordResetForm({'email': email}) + self.assertTrue(form.is_valid()) + form.save() + self.assertEqual(form.cleaned_data['email'], email) + self.assertEqual(len(mail.outbox), 1) + self.assertEqual(mail.outbox[0].to, [email]) + class ReadOnlyPasswordHashTest(SimpleTestCase): diff --git a/tests/auth_tests/test_models.py b/tests/auth_tests/test_models.py index a92f882de0..c939f3437c 100644 --- a/tests/auth_tests/test_models.py +++ b/tests/auth_tests/test_models.py @@ -3,6 +3,7 @@ from __future__ import unicode_literals from django.conf.global_settings import PASSWORD_HASHERS from django.contrib.auth import get_user_model +from django.contrib.auth.base_user import AbstractBaseUser from django.contrib.auth.hashers import get_hasher from django.contrib.auth.models import ( AbstractUser, Group, Permission, User, UserManager, @@ -12,6 +13,8 @@ from django.core import mail from django.db.models.signals import post_save from django.test import TestCase, mock, override_settings +from .models.with_custom_email_field import CustomEmailField + class NaturalKeysTestCase(TestCase): @@ -160,6 +163,14 @@ class AbstractBaseUserTests(TestCase): self.assertNotEqual(username, ohm_username) self.assertEqual(username, 'iamtheΩ') # U+03A9 GREEK CAPITAL LETTER OMEGA + def test_default_email(self): + user = AbstractBaseUser() + self.assertEqual(user.get_email_field_name(), 'email') + + def test_custom_email(self): + user = CustomEmailField() + self.assertEqual(user.get_email_field_name(), 'email_address') + class AbstractUserTestCase(TestCase): def test_email_user(self): |
