diff options
Diffstat (limited to 'parts/django/tests/regressiontests/middleware_exceptions')
5 files changed, 53 insertions, 0 deletions
diff --git a/parts/django/tests/regressiontests/middleware_exceptions/__init__.py b/parts/django/tests/regressiontests/middleware_exceptions/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/parts/django/tests/regressiontests/middleware_exceptions/__init__.py diff --git a/parts/django/tests/regressiontests/middleware_exceptions/models.py b/parts/django/tests/regressiontests/middleware_exceptions/models.py new file mode 100644 index 0000000..137941f --- /dev/null +++ b/parts/django/tests/regressiontests/middleware_exceptions/models.py @@ -0,0 +1 @@ +from django.db import models diff --git a/parts/django/tests/regressiontests/middleware_exceptions/tests.py b/parts/django/tests/regressiontests/middleware_exceptions/tests.py new file mode 100644 index 0000000..3d9c5f6 --- /dev/null +++ b/parts/django/tests/regressiontests/middleware_exceptions/tests.py @@ -0,0 +1,40 @@ +import sys + +from django.test import TestCase +from django.core.signals import got_request_exception + +class TestException(Exception): + pass + +class TestMiddleware(object): + def process_request(self, request): + raise TestException('Test Exception') + +class MiddlewareExceptionTest(TestCase): + def setUp(self): + self.exceptions = [] + got_request_exception.connect(self._on_request_exception) + self.client.handler.load_middleware() + + def tearDown(self): + got_request_exception.disconnect(self._on_request_exception) + 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, TestMiddleware().process_request) + try: + response = self.client.get('/') + except TestException, e: + # 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 + except Exception, e: + self.fail("Unexpected exception: %s" % e) + self.assertEquals(len(self.exceptions), 1) + exception, value, tb = self.exceptions[0] + self.assertEquals(value.args, ('Test Exception', )) diff --git a/parts/django/tests/regressiontests/middleware_exceptions/urls.py b/parts/django/tests/regressiontests/middleware_exceptions/urls.py new file mode 100644 index 0000000..63f3ba1 --- /dev/null +++ b/parts/django/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/parts/django/tests/regressiontests/middleware_exceptions/views.py b/parts/django/tests/regressiontests/middleware_exceptions/views.py new file mode 100644 index 0000000..e2d597d --- /dev/null +++ b/parts/django/tests/regressiontests/middleware_exceptions/views.py @@ -0,0 +1,4 @@ +from django import http + +def index(request): + return http.HttpResponse('') |