class TestErrorViews(TestCase): def setUp(self): self.request = HTTPRequest('', {}) def test_exceptionviewbase(self): view = http.ExceptionViewBase(Exception(), self.request) self.assertTrue(IHTTPException.providedBy(view)) self.assertEqual(str(view), '') self.assertEqual(view(), '') self.assertEqual(self.request.response.getStatus(), 500) def test_exceptionview(self): view = http.ExceptionView(Exception(), self.request) self.assertTrue(IHTTPException.providedBy(view)) self.assertEqual(str(view), '') self.assertEqual(view(), '') self.assertEqual(self.request.response.getStatus(), 500) def test_systemerrormixin_view(self): class SystemErrorView(http.ExceptionViewBase, http.SystemErrorViewMixin): pass view = SystemErrorView(Exception(), self.request) self.assertTrue(IHTTPException.providedBy(view)) self.assertTrue(ISystemErrorView.providedBy(view)) self.assertTrue(view.isSystemError()) self.assertEqual(str(view), '') self.assertEqual(view(), '') self.assertEqual(self.request.response.getStatus(), 500) def test_traversalexceptionview(self): view = http.TraversalExceptionView(TraversalException(), self.request) self.assertTrue(IHTTPException.providedBy(view)) self.assertEqual(view(), '') self.assertEqual(self.request.response.getStatus(), 404) self.request = HTTPRequest('', {'REQUEST_METHOD': 'MKCOL'}) view = http.TraversalExceptionView(TraversalException(), self.request) self.assertTrue(IHTTPException.providedBy(view)) self.assertEqual(view(), '') self.assertEqual(self.request.response.getStatus(), 404) self.request.setTraversalStack(['foo', 'bar']) view = http.TraversalExceptionView(TraversalException(), self.request) self.assertTrue(IHTTPException.providedBy(view)) self.assertEqual(view(), '') self.assertEqual(self.request.response.getStatus(), 409) def test_unauthorizedexceptionview(self): view = http.UnauthorizedView(Unauthorized(), self.request) self.assertTrue(IHTTPException.providedBy(view)) self.assertEqual(view(), '') self.assertEqual(self.request.response.getStatus(), 401) self.assertTrue( self.request.response.getHeader( 'WWW-Authenticate', '', True).startswith('basic')) def test_methodnotallowedview(self): error = MethodNotAllowed(object(), self.request) view = http.MethodNotAllowedView(error, self.request) self.assertTrue(IHTTPException.providedBy(view)) self.assertEqual(view(), '') self.assertEqual(self.request.response.getStatus(), 405) self.assertEqual(self.request.response.getHeader('Allow'), '') class MyMethodNotAllowedView(http.MethodNotAllowedView): def allowed(self): return 'GET', 'POST', 'PUT', 'DELETE' MyMethodNotAllowedView(error, self.request)() self.assertEqual(self.request.response.getStatus(), 405) self.assertEqual( self.request.response.getHeader('Allow'), 'GET, POST, PUT, DELETE')