test_credentialchange.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from django.test import TestCase
  2. from ...users import credentialchange
  3. from ..test import create_test_user
  4. class MockRequest(object):
  5. def __init__(self, user):
  6. self.session = {}
  7. self.user = user
  8. class CredentialChangeTests(TestCase):
  9. def setUp(self):
  10. self.user = create_test_user("User", "user@example.com")
  11. def test_valid_token_generation(self):
  12. """credentialchange module allows for store and read of change token"""
  13. request = MockRequest(self.user)
  14. token = credentialchange.store_new_credential(
  15. request, "email", "newmail@example.com"
  16. )
  17. email = credentialchange.read_new_credential(request, "email", token)
  18. self.assertEqual(email, "newmail@example.com")
  19. def test_email_change_invalidated_token(self):
  20. """token is invalidated by email change"""
  21. request = MockRequest(self.user)
  22. token = credentialchange.store_new_credential(
  23. request, "email", "newmail@example.com"
  24. )
  25. self.user.set_email("otheremail@example.com")
  26. self.user.save()
  27. email = credentialchange.read_new_credential(request, "email", token)
  28. self.assertIsNone(email)
  29. def test_password_change_invalidated_token(self):
  30. """token is invalidated by password change"""
  31. request = MockRequest(self.user)
  32. token = credentialchange.store_new_credential(
  33. request, "email", "newmail@example.com"
  34. )
  35. self.user.set_password("Egebeg!123")
  36. self.user.save()
  37. email = credentialchange.read_new_credential(request, "email", token)
  38. self.assertIsNone(email)
  39. def test_invalid_token_is_handled(self):
  40. """there are no explosions in invalid tokens handling"""
  41. request = MockRequest(self.user)
  42. token = credentialchange.store_new_credential(
  43. request, "email", "newmail@example.com"
  44. )
  45. email = credentialchange.read_new_credential(request, "em4il", token)
  46. self.assertIsNone(email)