-test_floodprotection_middleware.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. from datetime import timedelta
  2. from django.utils import timezone
  3. from misago.threads.posting import PostingInterrupt
  4. from misago.threads.posting.floodprotection import MIN_POSTING_PAUSE, FloodProtectionMiddleware
  5. from misago.users.testutils import AuthenticatedUserTestCase
  6. class FloodProtectionMiddlewareTests(AuthenticatedUserTestCase):
  7. def test_flood_protection_middleware_on_no_posts(self):
  8. """middleware sets last_posted_on on user"""
  9. self.user.update_fields = []
  10. self.assertIsNone(self.user.last_posted_on)
  11. middleware = FloodProtectionMiddleware(user=self.user)
  12. middleware.interrupt_posting(None)
  13. self.assertIsNotNone(self.user.last_posted_on)
  14. def test_flood_protection_middleware_old_posts(self):
  15. """middleware is not complaining about old post"""
  16. self.user.update_fields = []
  17. original_last_posted_on = timezone.now() - timedelta(days=1)
  18. self.user.last_posted_on = original_last_posted_on
  19. middleware = FloodProtectionMiddleware(user=self.user)
  20. middleware.interrupt_posting(None)
  21. self.assertTrue(self.user.last_posted_on > original_last_posted_on)
  22. def test_flood_protection_middleware_on_flood(self):
  23. """middleware is complaining about flood"""
  24. self.user.last_posted_on = timezone.now()
  25. with self.assertRaises(PostingInterrupt):
  26. middleware = FloodProtectionMiddleware(user=self.user)
  27. middleware.interrupt_posting(None)