summaryrefslogtreecommitdiff
path: root/tests/regressiontests/middleware_exceptions
diff options
context:
space:
mode:
authorAdrian Holovaty <adrian@holovaty.com>2010-01-10 17:35:01 +0000
committerAdrian Holovaty <adrian@holovaty.com>2010-01-10 17:35:01 +0000
commitca6f64a43f668749c395c8c47dbb47aa175dfe25 (patch)
treed54e6ccc66187e89f45e60fce8f8887742de87bc /tests/regressiontests/middleware_exceptions
parenta7dc2c06532586f8988d04d8f697c4ebfcabfde8 (diff)
Fixed #6094 -- Middleware exceptions are now caught by the core handler. Thanks, isagalaev
git-svn-id: http://code.djangoproject.com/svn/django/trunk@12165 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests/regressiontests/middleware_exceptions')
-rw-r--r--tests/regressiontests/middleware_exceptions/models.py1
-rw-r--r--tests/regressiontests/middleware_exceptions/tests.py37
-rw-r--r--tests/regressiontests/middleware_exceptions/urls.py8
-rw-r--r--tests/regressiontests/middleware_exceptions/views.py4
4 files changed, 50 insertions, 0 deletions
diff --git a/tests/regressiontests/middleware_exceptions/models.py b/tests/regressiontests/middleware_exceptions/models.py
new file mode 100644
index 0000000000..137941ffae
--- /dev/null
+++ b/tests/regressiontests/middleware_exceptions/models.py
@@ -0,0 +1 @@
+from django.db import models
diff --git a/tests/regressiontests/middleware_exceptions/tests.py b/tests/regressiontests/middleware_exceptions/tests.py
new file mode 100644
index 0000000000..2f950a0c4a
--- /dev/null
+++ b/tests/regressiontests/middleware_exceptions/tests.py
@@ -0,0 +1,37 @@
+import sys
+
+from django.test import TestCase
+from django.core.signals import got_request_exception
+
+class RequestMiddleware(object):
+ def process_request(self, request):
+ raise Exception('Exception')
+
+class MiddlewareExceptionTest(TestCase):
+ def __init__(self, *args, **kwargs):
+ super(MiddlewareExceptionTest, self).__init__(*args, **kwargs)
+ self.exceptions = []
+ got_request_exception.connect(self._on_request_exception)
+
+ def setUp(self):
+ self.client.handler.load_middleware()
+
+ def tearDown(self):
+ self.exceptions = []
+
+ def _on_request_exception(self, sender, request, **kwargs):
+ self.exceptions.append(sys.exc_info())
+
+ def test_process_request(self):
+ self.client.handler._request_middleware.insert(0, RequestMiddleware().process_request)
+ try:
+ response = self.client.get('/')
+ except:
+ # Test client indefinitely re-raises any exceptions being raised
+ # during request handling. Hence actual testing that exception was
+ # properly handled is done by relying on got_request_exception
+ # signal being sent.
+ pass
+ self.assertEquals(len(self.exceptions), 1)
+ exception, value, tb = self.exceptions[0]
+ self.assertEquals(value.args, ('Exception', ))
diff --git a/tests/regressiontests/middleware_exceptions/urls.py b/tests/regressiontests/middleware_exceptions/urls.py
new file mode 100644
index 0000000000..63f3ba1496
--- /dev/null
+++ b/tests/regressiontests/middleware_exceptions/urls.py
@@ -0,0 +1,8 @@
+# coding: utf-8
+from django.conf.urls.defaults import *
+
+import views
+
+urlpatterns = patterns('',
+ (r'^$', views.index),
+)
diff --git a/tests/regressiontests/middleware_exceptions/views.py b/tests/regressiontests/middleware_exceptions/views.py
new file mode 100644
index 0000000000..e2d597d9b1
--- /dev/null
+++ b/tests/regressiontests/middleware_exceptions/views.py
@@ -0,0 +1,4 @@
+from django import http
+
+def index(request):
+ return http.HttpResponse('')