/python/lib/django-1.5/django/contrib/auth/tests/models.py

https://gitlab.com/gregtyka/frankenserver · Python · 134 lines · 91 code · 27 blank · 16 comment · 3 complexity · 8339cbdc77ba25058189639c7b50ac26 MD5 · raw file

  1. from django.conf import settings
  2. from django.contrib.auth import get_user_model
  3. from django.contrib.auth.models import (Group, User, SiteProfileNotAvailable,
  4. UserManager)
  5. from django.contrib.auth.tests.utils import skipIfCustomUser
  6. from django.test import TestCase
  7. from django.test.utils import override_settings
  8. from django.utils import six
  9. @skipIfCustomUser
  10. @override_settings(USE_TZ=False, AUTH_PROFILE_MODULE='')
  11. class ProfileTestCase(TestCase):
  12. def test_site_profile_not_available(self):
  13. user = User.objects.create(username='testclient')
  14. # calling get_profile without AUTH_PROFILE_MODULE set
  15. del settings.AUTH_PROFILE_MODULE
  16. with six.assertRaisesRegex(self, SiteProfileNotAvailable,
  17. "You need to set AUTH_PROFILE_MODULE in your project"):
  18. user.get_profile()
  19. # Bad syntax in AUTH_PROFILE_MODULE:
  20. settings.AUTH_PROFILE_MODULE = 'foobar'
  21. with six.assertRaisesRegex(self, SiteProfileNotAvailable,
  22. "app_label and model_name should be separated by a dot"):
  23. user.get_profile()
  24. # module that doesn't exist
  25. settings.AUTH_PROFILE_MODULE = 'foo.bar'
  26. with six.assertRaisesRegex(self, SiteProfileNotAvailable,
  27. "Unable to load the profile model"):
  28. user.get_profile()
  29. @skipIfCustomUser
  30. @override_settings(USE_TZ=False)
  31. class NaturalKeysTestCase(TestCase):
  32. fixtures = ['authtestdata.json']
  33. def test_user_natural_key(self):
  34. staff_user = User.objects.get(username='staff')
  35. self.assertEqual(User.objects.get_by_natural_key('staff'), staff_user)
  36. self.assertEqual(staff_user.natural_key(), ('staff',))
  37. def test_group_natural_key(self):
  38. users_group = Group.objects.create(name='users')
  39. self.assertEqual(Group.objects.get_by_natural_key('users'), users_group)
  40. @skipIfCustomUser
  41. @override_settings(USE_TZ=False)
  42. class LoadDataWithoutNaturalKeysTestCase(TestCase):
  43. fixtures = ['regular.json']
  44. def test_user_is_created_and_added_to_group(self):
  45. user = User.objects.get(username='my_username')
  46. group = Group.objects.get(name='my_group')
  47. self.assertEqual(group, user.groups.get())
  48. @skipIfCustomUser
  49. @override_settings(USE_TZ=False)
  50. class LoadDataWithNaturalKeysTestCase(TestCase):
  51. fixtures = ['natural.json']
  52. def test_user_is_created_and_added_to_group(self):
  53. user = User.objects.get(username='my_username')
  54. group = Group.objects.get(name='my_group')
  55. self.assertEqual(group, user.groups.get())
  56. @skipIfCustomUser
  57. class UserManagerTestCase(TestCase):
  58. def test_create_user(self):
  59. email_lowercase = 'normal@normal.com'
  60. user = User.objects.create_user('user', email_lowercase)
  61. self.assertEqual(user.email, email_lowercase)
  62. self.assertEqual(user.username, 'user')
  63. self.assertEqual(user.password, '!')
  64. def test_create_user_email_domain_normalize_rfc3696(self):
  65. # According to http://tools.ietf.org/html/rfc3696#section-3
  66. # the "@" symbol can be part of the local part of an email address
  67. returned = UserManager.normalize_email(r'Abc\@DEF@EXAMPLE.com')
  68. self.assertEqual(returned, r'Abc\@DEF@example.com')
  69. def test_create_user_email_domain_normalize(self):
  70. returned = UserManager.normalize_email('normal@DOMAIN.COM')
  71. self.assertEqual(returned, 'normal@domain.com')
  72. def test_create_user_email_domain_normalize_with_whitespace(self):
  73. returned = UserManager.normalize_email('email\ with_whitespace@D.COM')
  74. self.assertEqual(returned, 'email\ with_whitespace@d.com')
  75. def test_empty_username(self):
  76. self.assertRaisesMessage(ValueError,
  77. 'The given username must be set',
  78. User.objects.create_user, username='')
  79. class IsActiveTestCase(TestCase):
  80. """
  81. Tests the behavior of the guaranteed is_active attribute
  82. """
  83. @skipIfCustomUser
  84. def test_builtin_user_isactive(self):
  85. user = User.objects.create(username='foo', email='foo@bar.com')
  86. # is_active is true by default
  87. self.assertEqual(user.is_active, True)
  88. user.is_active = False
  89. user.save()
  90. user_fetched = User.objects.get(pk=user.pk)
  91. # the is_active flag is saved
  92. self.assertFalse(user_fetched.is_active)
  93. @override_settings(AUTH_USER_MODEL='auth.IsActiveTestUser1')
  94. def test_is_active_field_default(self):
  95. """
  96. tests that the default value for is_active is provided
  97. """
  98. UserModel = get_user_model()
  99. user = UserModel(username='foo')
  100. self.assertEqual(user.is_active, True)
  101. # you can set the attribute - but it will not save
  102. user.is_active = False
  103. # there should be no problem saving - but the attribute is not saved
  104. user.save()
  105. user_fetched = UserModel._default_manager.get(pk=user.pk)
  106. # the attribute is always true for newly retrieved instance
  107. self.assertEqual(user_fetched.is_active, True)