Просмотр исходного кода

Fixed build, added more tests for admin views utils

Rafał Pitoń 11 лет назад
Родитель
Сommit
dd4b4d1cc0
2 измененных файлов с 40 добавлено и 4 удалено
  1. 33 0
      misago/admin/tests/test_admin_views.py
  2. 7 4
      misago/admin/views/__init__.py

+ 33 - 0
misago/admin/tests/test_admin_views.py

@@ -2,6 +2,7 @@ from django.contrib.auth import get_user_model
 from django.core.urlresolvers import reverse
 from django.test import TestCase
 from misago.admin.testutils import admin_login
+from misago.admin.views import get_protected_namespace
 
 
 class AdminIndexViewTests(TestCase):
@@ -50,3 +51,35 @@ class AdminLoginViewTests(TestCase):
 
         self.assertEqual(response.status_code, 302)
 
+
+class FakeRequest(object):
+    def __init__(self, path):
+        self.path = path
+
+
+class AdminProtectedNamespaceTexts(TestCase):
+    def test_valid_cases(self):
+        """get_protected_namespace returns true for protected links"""
+        links_prefix = reverse('misago:admin:index')
+        TEST_CASES = (
+            '',
+            'somewhere/',
+            'ejksajdlksajldjskajdlksajlkdas',
+        )
+
+        for case in TEST_CASES:
+            request = FakeRequest(links_prefix + case)
+            self.assertEqual(get_protected_namespace(request), 'misago:admin')
+
+
+    def test_invalid_cases(self):
+        """get_protected_namespace returns none for other links"""
+        TEST_CASES = (
+            '/',
+            '/somewhere/',
+            '/ejksajdlksajldjskajdlksajlkdas',
+        )
+
+        for case in TEST_CASES:
+            request = FakeRequest(case)
+            self.assertEqual(get_protected_namespace(request), None)

+ 7 - 4
misago/admin/views/__init__.py

@@ -1,5 +1,5 @@
 from django.conf import settings
-from django.core.urlresolvers import reverse
+from django.core.urlresolvers import reverse, NoReverseMatch
 from django.shortcuts import render as dj_render
 from misago.admin import site
 from misago.admin.auth import is_admin_session, update_admin_session
@@ -8,9 +8,12 @@ from misago.admin.views.auth import login
 
 def get_protected_namespace(request):
     for namespace in settings.MISAGO_ADMIN_NAMESPACES:
-        admin_path = reverse('%s:index' % namespace)
-        if request.path.startswith(admin_path):
-            return namespace
+        try:
+            admin_path = reverse('%s:index' % namespace)
+            if request.path.startswith(admin_path):
+                return namespace
+        except NoReverseMatch:
+            pass
     else:
         return None