summaryrefslogtreecommitdiff
path: root/tests/auth_tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auth_tests')
-rw-r--r--tests/auth_tests/models/with_custom_email_field.py23
-rw-r--r--tests/auth_tests/test_forms.py12
-rw-r--r--tests/auth_tests/test_models.py11
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):