test_credentialchange.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. from django.contrib.auth import get_user_model
  2. from django.test import TestCase
  3. from .. import credentialchange
  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. User = get_user_model()
  11. self.user = User.objects.create_user('Bob', 'bob@bob.com', 'pass123')
  12. def test_valid_token_generation(self):
  13. """credentialchange module allows for store and read of change token"""
  14. request = MockRequest(self.user)
  15. token = credentialchange.store_new_credential(
  16. request, 'email', 'newbob@test.com')
  17. email = credentialchange.read_new_credential(request, 'email', token)
  18. self.assertEqual(email, 'newbob@test.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', 'newbob@test.com')
  24. self.user.set_email('egebege@test.com')
  25. self.user.save()
  26. email = credentialchange.read_new_credential(request, 'email', token)
  27. self.assertIsNone(email)
  28. def test_password_change_invalidated_token(self):
  29. """token is invalidated by password change"""
  30. request = MockRequest(self.user)
  31. token = credentialchange.store_new_credential(
  32. request, 'email', 'newbob@test.com')
  33. self.user.set_password('Egebeg!123')
  34. self.user.save()
  35. email = credentialchange.read_new_credential(request, 'email', token)
  36. self.assertIsNone(email)
  37. def test_invalid_token_is_handled(self):
  38. """there are no explosions in invalid tokens handling"""
  39. request = MockRequest(self.user)
  40. token = credentialchange.store_new_credential(
  41. request, 'email', 'newbob@test.com')
  42. email = credentialchange.read_new_credential(request, 'em4il', token)
  43. self.assertIsNone(email)