test_middleware.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435
  1. from django.contrib.auth.middleware import SessionAuthenticationMiddleware
  2. from django.contrib.auth.models import User
  3. from django.http import HttpRequest
  4. from django.test import TestCase
  5. class TestSessionAuthenticationMiddleware(TestCase):
  6. def setUp(self):
  7. self.user_password = 'test_password'
  8. self.user = User.objects.create_user('test_user',
  9. 'test@example.com',
  10. self.user_password)
  11. def test_changed_password_invalidates_session(self):
  12. """
  13. Tests that changing a user's password invalidates the session.
  14. """
  15. verification_middleware = SessionAuthenticationMiddleware()
  16. self.assertTrue(self.client.login(
  17. username=self.user.username,
  18. password=self.user_password,
  19. ))
  20. request = HttpRequest()
  21. request.session = self.client.session
  22. request.user = self.user
  23. verification_middleware.process_request(request)
  24. self.assertIsNotNone(request.user)
  25. self.assertFalse(request.user.is_anonymous())
  26. # After password change, user should be anonymous
  27. request.user.set_password('new_password')
  28. request.user.save()
  29. verification_middleware.process_request(request)
  30. self.assertIsNotNone(request.user)
  31. self.assertTrue(request.user.is_anonymous())