def test_redirect_on_permission_error(self): """The post_process_request method can redirect during exception handling from an exception raised in process_request. """ self.env.enable_component(self.request_filter['RedirectOnPermError']) dispatcher = RequestDispatcher(self.env) req = MockRequest(self.env, method='GET', path_info='/perm-error') req.entered_process_request = False req.entered_post_process_request = False try: dispatcher.dispatch(req) except RequestDone: pass else: self.fail("RequestDone not raised") self.assertTrue(req.entered_process_request) self.assertTrue(req.entered_post_process_request)
def test_redirect_on_permission_error(self): """The post_process_request method can redirect during exception handling from an exception raised in process_request. """ class RedirectOnPermissionErrorStub(Component): implements(IRequestHandler, IRequestFilter) def match_request(self, req): return re.match(r'/perm-error', req.path_info) def process_request(self, req): req.entered_process_request = True raise PermissionError("No permission to view") def pre_process_request(self, req, handler): return handler def post_process_request(self, req, template, data, content_type): if (template, data, content_type) == (None, None, None): req.entered_post_process_request = True req.redirect(req.href('/redirect-target')) return template, data, content_type dispatcher = RequestDispatcher(self.env) req = MockRequest(self.env, method='GET', path_info='/perm-error') req.entered_process_request = False req.entered_post_process_request = False try: dispatcher.dispatch(req) except RequestDone: pass else: self.fail("RequestDone not raised") self.assertTrue(req.entered_process_request) self.assertTrue(req.entered_post_process_request)