test_credentialchange.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. from django.contrib.auth import get_user_model
  2. from django.test import TestCase
  3. from misago.users import credentialchange
  4. UserModel = get_user_model()
  5. class MockRequest(object):
  6. def __init__(self, user):
  7. self.session = {}
  8. self.user = user
  9. class CredentialChangeTests(TestCase):
  10. def setUp(self):
  11. self.user = UserModel.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(request, 'email', 'newbob@test.com')
  16. email = credentialchange.read_new_credential(request, 'email', token)
  17. self.assertEqual(email, 'newbob@test.com')
  18. def test_email_change_invalidated_token(self):
  19. """token is invalidated by email change"""
  20. request = MockRequest(self.user)
  21. token = credentialchange.store_new_credential(request, 'email', 'newbob@test.com')
  22. self.user.set_email('egebege@test.com')
  23. self.user.save()
  24. email = credentialchange.read_new_credential(request, 'email', token)
  25. self.assertIsNone(email)
  26. def test_password_change_invalidated_token(self):
  27. """token is invalidated by password change"""
  28. request = MockRequest(self.user)
  29. token = credentialchange.store_new_credential(request, 'email', 'newbob@test.com')
  30. self.user.set_password('Egebeg!123')
  31. self.user.save()
  32. email = credentialchange.read_new_credential(request, 'email', token)
  33. self.assertIsNone(email)
  34. def test_invalid_token_is_handled(self):
  35. """there are no explosions in invalid tokens handling"""
  36. request = MockRequest(self.user)
  37. token = credentialchange.store_new_credential(request, 'email', 'newbob@test.com')
  38. email = credentialchange.read_new_credential(request, 'em4il', token)
  39. self.assertIsNone(email)