Browse Source

Tests for decorators

Rafał Pitoń 11 years ago
parent
commit
9bfd08a207

+ 1 - 1
misago/core/errorpages.py

@@ -19,7 +19,7 @@ def page_not_found(request):
 
 
 def csrf_failure(request, reason=""):
-    response = render(request, 'misago/csrf_failure.html')
+    response = render(request, 'misago/errorpages/csrf_failure.html')
     response.status_code = 403
     return response
 

+ 27 - 0
misago/core/tests/test_decorators.py

@@ -0,0 +1,27 @@
+from django.contrib.auth import get_user_model
+from django.core.urlresolvers import reverse
+from django.test import Client, TestCase
+from misago.core.decorators import require_POST
+
+
+class RequirePostTests(TestCase):
+    def test_require_POST_success(self):
+        """require_POST decorator allowed POST request"""
+        User = get_user_model()
+        test_user = User.objects.create_user('Bob', 'bob@test.com', 'Pass.123')
+        self.client.login(username=test_user.username, password='Pass.123')
+
+        response = self.client.post(reverse('misago:logout'))
+
+        self.assertEqual(response.status_code, 302)
+
+    def test_require_POST_fail(self):
+        """require_POST decorator failed on GET request"""
+        User = get_user_model()
+        test_user = User.objects.create_user('Bob', 'bob@test.com', 'Pass.123')
+        self.client.login(username=test_user.username, password='Pass.123')
+
+        response = self.client.get(reverse('misago:logout'))
+
+        self.assertEqual(response.status_code, 405)
+        self.assertIn("Wrong way", response.content)

+ 36 - 0
misago/users/tests/test_decorators.py

@@ -0,0 +1,36 @@
+from django.contrib.auth import get_user_model
+from django.core.urlresolvers import reverse
+from django.test import Client, TestCase
+from misago.users.decorators import deny_authenticated, deny_guests
+
+
+class DenyAuthenticatedTests(TestCase):
+    def test_success(self):
+        """deny_authenticated decorator allowed guest request"""
+        response = self.client.get(reverse('misago:login'))
+        self.assertEqual(response.status_code, 200)
+
+    def test_fail(self):
+        """deny_authenticated decorator blocked authenticated request"""
+        User = get_user_model()
+        test_user = User.objects.create_user('Bob', 'bob@test.com', 'Pass.123')
+        self.client.login(username=test_user.username, password='Pass.123')
+
+        response = self.client.get(reverse('misago:login'))
+        self.assertEqual(response.status_code, 403)
+
+
+class DenyGuestsTests(TestCase):
+    def test_success(self):
+        """deny_guests decorator allowed authenticated request"""
+        User = get_user_model()
+        test_user = User.objects.create_user('Bob', 'bob@test.com', 'Pass.123')
+        self.client.login(username=test_user.username, password='Pass.123')
+
+        response = self.client.post(reverse('misago:logout'))
+        self.assertEqual(response.status_code, 302)
+
+    def test_fail(self):
+        """deny_guests decorator blocked authenticated request"""
+        response = self.client.post(reverse('misago:logout'))
+        self.assertEqual(response.status_code, 403)

+ 1 - 1
misago/users/views/auth.py

@@ -19,4 +19,4 @@ def login(request):
 @csrf_protect
 @never_cache
 def logout(request):
-    raise NotImplementedError()
+    return redirect('misago:index')