diff options
| author | Adrian Holovaty <adrian@holovaty.com> | 2010-01-10 17:35:01 +0000 |
|---|---|---|
| committer | Adrian Holovaty <adrian@holovaty.com> | 2010-01-10 17:35:01 +0000 |
| commit | ca6f64a43f668749c395c8c47dbb47aa175dfe25 (patch) | |
| tree | d54e6ccc66187e89f45e60fce8f8887742de87bc /tests/regressiontests/middleware_exceptions | |
| parent | a7dc2c06532586f8988d04d8f697c4ebfcabfde8 (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')
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('') |
