test_auth_backend.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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(
  10. "BobBoberson", "bob@test.com", self.password
  11. )
  12. def test_authenticate_username(self):
  13. """auth authenticates with username"""
  14. user = backend.authenticate(
  15. None, username=self.user.username, 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, username=self.user.email, password=self.password
  22. )
  23. self.assertEqual(user, self.user)
  24. def test_authenticate_username_and_email(self):
  25. """auth authenticates with email and skips username"""
  26. user = backend.authenticate(
  27. None,
  28. username=self.user.username,
  29. password=self.password,
  30. email=self.user.email,
  31. )
  32. self.assertEqual(user, self.user)
  33. def test_authenticate_wrong_username_and_email(self):
  34. """auth authenticates with email and invalid username"""
  35. user = backend.authenticate(
  36. None,
  37. username="skipped-username",
  38. password=self.password,
  39. email=self.user.email,
  40. )
  41. self.assertEqual(user, self.user)
  42. def test_authenticate_invalid_credential(self):
  43. """auth handles invalid credentials"""
  44. user = backend.authenticate(
  45. None, username="InvalidCredential", password=self.password
  46. )
  47. self.assertIsNone(user)
  48. def test_authenticate_invalid_password(self):
  49. """auth validates password"""
  50. user = backend.authenticate(None, username=self.user.email, password="Invalid")
  51. self.assertIsNone(user)
  52. def test_authenticate_disabled_user(self):
  53. """auth validates disabled state"""
  54. self.user.is_active = False
  55. self.user.save()
  56. user = backend.authenticate(
  57. None, username=self.user.email, password=self.password
  58. )
  59. self.assertIsNone(user)
  60. def test_authenticate_no_data(self):
  61. """auth has no errors if no recognised credentials are provided"""
  62. self.user.is_active = False
  63. self.user.save()
  64. user = backend.authenticate(None)
  65. self.assertIsNone(user)
  66. def test_get_user_valid_pk(self):
  67. """auth backend returns active user for pk given"""
  68. self.assertEqual(backend.get_user(self.user.pk), self.user)
  69. def test_get_user_invalid_pk(self):
  70. """auth backend returns none for invalid pk"""
  71. self.assertIsNone(backend.get_user(self.user.pk + 1))
  72. def test_get_user_disabled(self):
  73. """auth backend returns none for disabled user"""
  74. self.user.is_active = False
  75. self.user.save()
  76. self.assertIsNone(backend.get_user(self.user.pk))