test_auth_backend.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. from django.contrib.auth import get_user_model
  2. from django.test import TestCase
  3. from misago.users.authbackends import MisagoBackend
  4. UserModel = get_user_model()
  5. backend = MisagoBackend()
  6. class MisagoBackendTests(TestCase):
  7. def setUp(self):
  8. self.password = 'Pass.123'
  9. self.user = UserModel.objects.create_user('BobBoberson', 'bob@test.com', self.password)
  10. def test_authenticate_username(self):
  11. """auth authenticates with username"""
  12. user = backend.authenticate(
  13. None,
  14. username=self.user.username,
  15. password=self.password,
  16. )
  17. self.assertEqual(user, self.user)
  18. def test_authenticate_email(self):
  19. """auth authenticates with email instead of username"""
  20. user = backend.authenticate(
  21. None,
  22. username=self.user.email,
  23. password=self.password,
  24. )
  25. self.assertEqual(user, self.user)
  26. def test_authenticate_username_and_email(self):
  27. """auth authenticates with email and skips username"""
  28. user = backend.authenticate(
  29. None,
  30. username=self.user.username,
  31. password=self.password,
  32. email=self.user.email
  33. )
  34. self.assertEqual(user, self.user)
  35. def test_authenticate_wrong_username_and_email(self):
  36. """auth authenticates with email and invalid username"""
  37. user = backend.authenticate(
  38. None,
  39. username='skipped-username',
  40. password=self.password,
  41. email=self.user.email
  42. )
  43. self.assertEqual(user, self.user)
  44. def test_authenticate_invalid_credential(self):
  45. """auth handles invalid credentials"""
  46. user = backend.authenticate(
  47. None,
  48. username='InvalidCredential',
  49. password=self.password,
  50. )
  51. self.assertIsNone(user)
  52. def test_authenticate_invalid_password(self):
  53. """auth validates password"""
  54. user = backend.authenticate(
  55. None,
  56. username=self.user.email,
  57. password='Invalid',
  58. )
  59. self.assertIsNone(user)
  60. def test_authenticate_disabled_user(self):
  61. """auth validates disabled state"""
  62. self.user.is_active = False
  63. self.user.save()
  64. user = backend.authenticate(
  65. None,
  66. username=self.user.email,
  67. password=self.password,
  68. )
  69. self.assertIsNone(user)
  70. def test_authenticate_no_data(self):
  71. """auth has no errors if no recognised credentials are provided"""
  72. self.user.is_active = False
  73. self.user.save()
  74. user = backend.authenticate(None)
  75. self.assertIsNone(user)
  76. def test_get_user_valid_pk(self):
  77. """auth backend returns active user for pk given"""
  78. self.assertEqual(backend.get_user(self.user.pk), self.user)
  79. def test_get_user_invalid_pk(self):
  80. """auth backend returns none for invalid pk"""
  81. self.assertIsNone(backend.get_user(self.user.pk + 1))
  82. def test_get_user_disabled(self):
  83. """auth backend returns none for disabled user"""
  84. self.user.is_active = False
  85. self.user.save()
  86. self.assertIsNone(backend.get_user(self.user.pk))