aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--debug_toolbar/middleware.py6
-rw-r--r--debug_toolbar/tests/tests.py93
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)