test_auth_backend.py 3.0 KB

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