Browse Source

extracted is_ember_cli_request from middleware

Rafał Pitoń 10 years ago
parent
commit
a8a6c5c718

+ 9 - 0
misago/core/embercli.py

@@ -0,0 +1,9 @@
+from django.conf import settings
+
+
+def is_ember_cli_request(request):
+    if settings.DEBUG and settings.MISAGO_EMBER_CLI_ORIGIN:
+        http_origin = request.META.get('HTTP_ORIGIN', '')
+        return http_origin.startswith(settings.MISAGO_EMBER_CLI_ORIGIN)
+    else:
+        return False

+ 4 - 12
misago/core/middleware/embercliredirects.py

@@ -1,4 +1,5 @@
 from django.conf import settings
 from django.conf import settings
+from misago.core.embercli import is_ember_cli_request
 
 
 
 
 class EmberCLIRedirectsMiddleware(object):
 class EmberCLIRedirectsMiddleware(object):
@@ -15,21 +16,12 @@ class EmberCLIRedirectsMiddleware(object):
     header that matches one in MISAGO_EMBER_CLI_ORIGIN setting.
     header that matches one in MISAGO_EMBER_CLI_ORIGIN setting.
     """
     """
     def process_response(self, request, response):
     def process_response(self, request, response):
-        if settings.DEBUG and settings.MISAGO_EMBER_CLI_ORIGIN:
-            rewrite_ember_cli_redirect_url = (
-                response.status_code in (301, 302)
-                and request.META.get('HTTP_ORIGIN')
-                and self.is_ember_cli_request(request)
-            )
-
-            if rewrite_ember_cli_redirect_url:
-                return self.rewrite_http_redirect_url(response)
+        if (is_ember_cli_request(request) and
+                response.status_code in (301, 302)):
+            return self.rewrite_http_redirect_url(response)
 
 
         return response
         return response
 
 
-    def is_ember_cli_request(self, request):
-        http_origin = request.META.get('HTTP_ORIGIN', '')
-        return http_origin.endswith(settings.MISAGO_EMBER_CLI_ORIGIN)
 
 
     def rewrite_http_redirect_url(self, response):
     def rewrite_http_redirect_url(self, response):
         final_location = settings.MISAGO_EMBER_CLI_ORIGIN, response['location']
         final_location = settings.MISAGO_EMBER_CLI_ORIGIN, response['location']

+ 35 - 0
misago/core/tests/test_embercli.py

@@ -0,0 +1,35 @@
+from django.conf import settings
+from django.test import TestCase
+
+from misago.core.embercli import is_ember_cli_request
+
+
+class MockRequest(object):
+    def __init__(self, origin):
+        self.META = {'HTTP_ORIGIN': origin}
+
+
+class EmberCLITests(TestCase):
+    def test_is_ember_cli_request(self):
+        """is_ember_cli_request test works"""
+        with self.settings(DEBUG=True):
+            valid_request = MockRequest(settings.MISAGO_EMBER_CLI_ORIGIN)
+            self.assertTrue(is_ember_cli_request(valid_request))
+
+            valid_origin = '%s/page.html' % settings.MISAGO_EMBER_CLI_ORIGIN
+            valid_request = MockRequest(valid_origin)
+            self.assertTrue(is_ember_cli_request(valid_request))
+
+            invalid_request = MockRequest('http://somewhere.com/page.html')
+            self.assertFalse(is_ember_cli_request(invalid_request))
+
+        with self.settings(DEBUG=False):
+            valid_request = MockRequest(settings.MISAGO_EMBER_CLI_ORIGIN)
+            self.assertFalse(is_ember_cli_request(valid_request))
+
+            valid_origin = '%s/page.html' % settings.MISAGO_EMBER_CLI_ORIGIN
+            valid_request = MockRequest(valid_origin)
+            self.assertFalse(is_ember_cli_request(valid_request))
+
+            invalid_request = MockRequest('http://somewhere.com/page.html')
+            self.assertFalse(is_ember_cli_request(invalid_request))

+ 0 - 18
misago/core/tests/test_embercliredirects_middleware.py

@@ -48,24 +48,6 @@ class EmberCLIRedirectsMiddlewareTests(TestCase):
                 settings.MISAGO_EMBER_CLI_ORIGIN))
                 settings.MISAGO_EMBER_CLI_ORIGIN))
             self.assertTrue(response['location'].endswith(url))
             self.assertTrue(response['location'].endswith(url))
 
 
-        with self.settings(MISAGO_EMBER_CLI_ORIGIN=''):
-            response = MockResponse(url, 301)
-
-            middleware.process_response(request, response)
-            self.assertFalse(response['location'].startswith(
-                settings.MISAGO_EMBER_CLI_ORIGIN))
-            self.assertTrue(response['location'].endswith(url))
-
-    def test_is_ember_cli_request(self):
-        """is_ember_cli_request test works"""
-        middleware = EmberCLIRedirectsMiddleware()
-
-        valid_request = MockRequest(settings.MISAGO_EMBER_CLI_ORIGIN)
-        self.assertTrue(middleware.is_ember_cli_request(valid_request))
-
-        invalid_request = MockRequest('http://somewhere.com/some_page.html')
-        self.assertFalse(middleware.is_ember_cli_request(invalid_request))
-
     def rewrite_http_redirect_url(self):
     def rewrite_http_redirect_url(self):
         """rewrite_http_redirect_url prepents CLI host to URL"""
         """rewrite_http_redirect_url prepents CLI host to URL"""
         middleware = EmberCLIRedirectsMiddleware()
         middleware = EmberCLIRedirectsMiddleware()