diff options
| -rw-r--r-- | debug_toolbar/middleware.py | 6 | ||||
| -rw-r--r-- | debug_toolbar/tests/tests.py | 93 | 
2 files changed, 95 insertions, 4 deletions
| diff --git a/debug_toolbar/middleware.py b/debug_toolbar/middleware.py index e7cd97f..7cdf7b0 100644 --- a/debug_toolbar/middleware.py +++ b/debug_toolbar/middleware.py @@ -62,10 +62,8 @@ class DebugToolbarMiddleware(object):              remote_addr = x_forwarded_for.split(',')[0].strip()          else:              remote_addr = request.META.get('REMOTE_ADDR', None) -        if not remote_addr in settings.INTERNAL_IPS \ -            or (request.is_ajax() and \ -                not debug_toolbar.urls._PREFIX in request.path) \ -                    or not (settings.DEBUG or getattr(settings, 'TEST', False)): +        # if not internal ip, and not DEBUG or TEST +        if not (remote_addr in settings.INTERNAL_IPS or settings.DEBUG or getattr(settings, 'TEST', False)):              return False          return True diff --git a/debug_toolbar/tests/tests.py b/debug_toolbar/tests/tests.py index fe1904a..54a99d5 100644 --- a/debug_toolbar/tests/tests.py +++ b/debug_toolbar/tests/tests.py @@ -3,17 +3,44 @@ from debug_toolbar.panels.sql import SQLDebugPanel  from debug_toolbar.toolbar.loader import DebugToolbar  from debug_toolbar.utils.tracking import pre_dispatch, post_dispatch, callbacks +from django.conf import settings +from django.conf.urls.defaults import patterns  from django.contrib.auth.models import User  from django.test import TestCase  from dingus import Dingus  import thread + +class Settings(object): +    """Allows you to define settings that are required for this function to work""" + +    NotDefined = object() + +    def __init__(self, **overrides): +        self.overrides = overrides +        self._orig = {} + +    def __enter__(self): +        for k, v in self.overrides.iteritems(): +            self._orig[k] = getattr(settings, k, self.NotDefined) +            setattr(settings, k, v) + +    def __exit__(self, exc_type, exc_value, traceback): +        for k, v in self._orig.iteritems(): +            if v is self.NotDefined: +                delattr(settings, k) +            else: +                setattr(settings, k, v) +      class BaseTestCase(TestCase):      def setUp(self):          request = Dingus('request')          toolbar = DebugToolbar(request) +          DebugToolbarMiddleware.debug_toolbars[thread.get_ident()] = toolbar + +        self.request = request          self.toolbar = toolbar  class DebugToolbarTestCase(BaseTestCase): @@ -23,6 +50,72 @@ class DebugToolbarTestCase(BaseTestCase):          resp = self.client.get('/execute_sql/')          self.assertEquals(resp.status_code, 200) +    def test_show_toolbar_DEBUG(self): +        request = self.request +         +        middleware = DebugToolbarMiddleware() +         +        with Settings(DEBUG=True): +            self.assertTrue(middleware._show_toolbar(request)) + +        with Settings(DEBUG=False): +            self.assertFalse(middleware._show_toolbar(request)) + +    def test_show_toolbar_TEST(self): +        request = self.request +         +        middleware = DebugToolbarMiddleware() +         +        with Settings(TEST=True): +            self.assertTrue(middleware._show_toolbar(request)) + +        with Settings(TEST=False): +            self.assertFalse(middleware._show_toolbar(request)) + +    def test_show_toolbar_INTERNAL_IPS(self): +        request = self.request +         +        request.META = {'REMOTE_ADDR': '127.0.0.1'} +        middleware = DebugToolbarMiddleware() +         +        with Settings(INTERNAL_IPS=['127.0.0.1']): +            self.assertTrue(middleware._show_toolbar(request)) + +        with Settings(INTERNAL_IPS=[]): +            self.assertFalse(middleware._show_toolbar(request)) + +    def test_request_urlconf_string(self): +        request = self.request +         +        request.urlconf = 'debug_toolbar.tests.urls' +        request.META = {'REMOTE_ADDR': '127.0.0.1'} +        middleware = DebugToolbarMiddleware() +         +        with Settings(DEBUG=True): +            middleware.process_request(request) +             +            urls = getattr(__import__(request.urlconf), request.urlconf.rsplit('.', 1)[-1]) +             +            self.assertEquals(urls.urlpatterns[0]._callback_str, 'debug_toolbar.views.debug_media') +            self.assertEquals(urls.urlpatterns[-1].urlconf_name.__name__, 'debug_toolbar.tests.urls') + +    def test_request_urlconf_string_per_request(self): +        request = self.request +         +        request.urlconf = 'debug_toolbar.tests.urls' +        request.META = {'REMOTE_ADDR': '127.0.0.1'} +        middleware = DebugToolbarMiddleware() +         +        with Settings(DEBUG=True): +            middleware.process_request(request) +            request.urlconf = 'debug_toolbar.urls' +            middleware.process_request(request) + +            urls = getattr(__import__(request.urlconf), request.urlconf.rsplit('.', 1)[-1]) +             +            self.assertEquals(urls.urlpatterns[0]._callback_str, 'debug_toolbar.views.debug_media') +            self.assertEquals(urls.urlpatterns[-1].urlconf_name.__name__, 'debug_toolbar.urls') +  class SQLPanelTestCase(BaseTestCase):      def test_recording(self):          panel = self.toolbar.get_panel(SQLDebugPanel) | 
