Browse Source

tests for flood protection

Rafał Pitoń 10 years ago
parent
commit
5e0003682f
1 changed files with 42 additions and 0 deletions
  1. 42 0
      misago/threads/tests/test_floodprotection_middleware.py

+ 42 - 0
misago/threads/tests/test_floodprotection_middleware.py

@@ -0,0 +1,42 @@
+from datetime import timedelta
+
+from django.utils import timezone
+
+from misago.users.testutils import AuthenticatedUserTestCase
+
+from misago.threads.posting import PostingInterrupt
+from misago.threads.posting.floodprotection import (MIN_POSTING_PAUSE,
+                                                    FloodProtectionMiddleware)
+
+
+class FloodProtectionMiddlewareTests(AuthenticatedUserTestCase):
+    def test_flood_protection_middleware_on_no_posts(self):
+        """middleware sets last_post on user"""
+        self.user.update_fields = []
+        self.assertIsNone(self.user.last_post)
+
+        middleware = FloodProtectionMiddleware(user=self.user)
+        middleware.save(None)
+
+        self.assertIsNotNone(self.user.last_post)
+
+    def test_flood_protection_middleware_old_posts(self):
+        """middleware is not complaining about old post"""
+        self.user.update_fields = []
+
+        original_last_post = timezone.now() - timedelta(days=1)
+        self.user.last_post = original_last_post
+
+        middleware = FloodProtectionMiddleware(user=self.user)
+        middleware.save(None)
+
+        self.assertTrue(self.user.last_post > original_last_post)
+
+    def test_flood_protection_middleware_on_flood(self):
+        """middleware is complaining about flood"""
+        original_last_post = timezone.now() - timedelta(days=1)
+        self.user.last_post = timezone.now()
+
+        with self.assertRaises(PostingInterrupt):
+            middleware = FloodProtectionMiddleware(user=self.user)
+            middleware.save(None)