parts/django/tests/regressiontests/middleware_exceptions/tests.py
changeset 307 c6bca38c1cbf
equal deleted inserted replaced
306:5ff1fc726848 307:c6bca38c1cbf
       
     1 import sys
       
     2 
       
     3 from django.test import TestCase
       
     4 from django.core.signals import got_request_exception
       
     5 
       
     6 class TestException(Exception):
       
     7     pass
       
     8 
       
     9 class TestMiddleware(object):
       
    10     def process_request(self, request):
       
    11         raise TestException('Test Exception')
       
    12 
       
    13 class MiddlewareExceptionTest(TestCase):
       
    14     def setUp(self):
       
    15         self.exceptions = []
       
    16         got_request_exception.connect(self._on_request_exception)
       
    17         self.client.handler.load_middleware()
       
    18 
       
    19     def tearDown(self):
       
    20         got_request_exception.disconnect(self._on_request_exception)
       
    21         self.exceptions = []
       
    22 
       
    23     def _on_request_exception(self, sender, request, **kwargs):
       
    24         self.exceptions.append(sys.exc_info())
       
    25 
       
    26     def test_process_request(self):
       
    27         self.client.handler._request_middleware.insert(0, TestMiddleware().process_request)
       
    28         try:
       
    29             response = self.client.get('/')
       
    30         except TestException, e:
       
    31             # Test client indefinitely re-raises any exceptions being raised
       
    32             # during request handling. Hence actual testing that exception was
       
    33             # properly handled is done by relying on got_request_exception
       
    34             # signal being sent.
       
    35             pass
       
    36         except Exception, e:
       
    37             self.fail("Unexpected exception: %s" % e)
       
    38         self.assertEquals(len(self.exceptions), 1)
       
    39         exception, value, tb = self.exceptions[0]
       
    40         self.assertEquals(value.args, ('Test Exception', ))