test_auth_backend.py 3.0 KB

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