/django_couchdb_utils/auth/tests.py

https://github.com/dgreisen/django-couchdb-utils · Python · 152 lines · 124 code · 27 blank · 1 comment · 1 complexity · dfe285ca138220b4f87a2d25ee292380 MD5 · raw file

  1. from django.contrib import auth as core_auth
  2. from django.conf import settings
  3. from .models import User, UserProfile
  4. from django_couchdb_utils.test.utils import DbTester
  5. from . import app_label
  6. class AuthTests(DbTester):
  7. def setUp(self):
  8. super(self.__class__, self).setUp(app_label)
  9. def test_user_registration(self):
  10. data = {
  11. 'username': 'frank',
  12. 'password': 'secret',
  13. 'email': 'user@host.com',
  14. }
  15. user = User(**data)
  16. user.save()
  17. user = User.get_user(data['username'])
  18. self.assertIsNotNone(user)
  19. self.assertEqual(user.username, data['username'])
  20. user = User.get_user_by_email(data['email'])
  21. self.assertIsNotNone(user)
  22. self.assertEqual(user.username, data['username'])
  23. def test_username_uniqueness(self):
  24. data = {
  25. 'username': 'frank',
  26. 'password': 'secret',
  27. }
  28. user = User(**data)
  29. user.save()
  30. user2 = User(**data)
  31. self.assertExcMsg(Exception, 'This username is already in use.',
  32. user2.save)
  33. def test_email_uniqueness(self):
  34. data = {
  35. 'username': 'frank',
  36. 'password': 'secret',
  37. 'email': 'user@host.com',
  38. }
  39. user = User(**data)
  40. user.save()
  41. data.update({
  42. 'username': 'mark',
  43. })
  44. user2 = User(**data)
  45. self.assertExcMsg(Exception, 'This email address is already in use.',
  46. user2.save)
  47. def test_user_change_email(self):
  48. data = {
  49. 'username': 'frank',
  50. 'password': 'secret',
  51. 'email': 'user@host.com',
  52. }
  53. user = User(**data)
  54. user.save()
  55. user = User.get_user_by_email(data['email'])
  56. user.email = 'notme@otherhost.com'
  57. user.save()
  58. def test_user_authentication(self):
  59. authdata = {
  60. 'username': 'mickey',
  61. 'password': 'secret',
  62. }
  63. data = authdata.copy()
  64. data.update({
  65. 'email': 'mickey@mice.com',
  66. })
  67. user = User(**data)
  68. user.set_password(data['password'])
  69. user.save()
  70. user = core_auth.authenticate(**authdata)
  71. self.assertIsNotNone(user)
  72. def test_user_profile(self):
  73. settings.AUTH_PROFILE_MODULE = 'auth.UserProfile'
  74. data = {
  75. 'username': 'frank',
  76. 'password': 'secret',
  77. }
  78. user = User(**data)
  79. user.save()
  80. profiledata = {
  81. 'user_id': user.get_id,
  82. 'age': 7,
  83. }
  84. userprofile = UserProfile(**profiledata)
  85. userprofile.save()
  86. userprofile = UserProfile.get_userprofile(profiledata['user_id'])
  87. self.assertIsNotNone(userprofile)
  88. self.assertEqual(user.get_profile().age, profiledata['age'])
  89. ### XXX older doctest code
  90. BASIC_TESTS = """
  91. >>> from django_couchdb_utils.auth.models import User
  92. >>> from django.contrib.auth.models import UNUSABLE_PASSWORD
  93. >>> u = User(username='testuser', email='test@example.com', password='testpw')
  94. >>> u.set_password('testpw')
  95. >>> u.save()
  96. >>> u.has_usable_password()
  97. True
  98. >>> u.check_password('bad')
  99. False
  100. >>> u.check_password('testpw')
  101. True
  102. >>> u.set_unusable_password()
  103. >>> u.has_usable_password()
  104. False
  105. >>> u2 = User(username='testuser2', email='test2@example.com')
  106. >>> u2.password = UNUSABLE_PASSWORD
  107. >>> u2.save()
  108. >>> u2.has_usable_password()
  109. False
  110. >>> u.is_authenticated()
  111. True
  112. >>> u.is_staff
  113. False
  114. >>> u.is_active
  115. True
  116. >>> u.is_superuser
  117. False
  118. """
  119. __test__ = {
  120. 'BASIC_TESTS': BASIC_TESTS,
  121. }
  122. if __name__ == '__main__':
  123. import doctest
  124. doctest.testmod()