def test_notfound(self): view = getMultiAdapter((NotFound(object(), self.request), self.request), name='index.html') self.assertTrue(IHTTPException.providedBy(view)) self.assertEqual(view(), '') self.assertEqual(self.request.response.getStatus(), 404)
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_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 = getMultiAdapter( (Unauthorized(), self.request), name='index.html') 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 callObject(self, request, ob): # Exception handling, dont try to call request.method orig = ob if not IHTTPException.providedBy(ob): ob = zope.component.queryMultiAdapter((ob, request), name=request.method) ob = getattr(ob, request.method, None) if ob is None: raise MethodNotAllowed(orig, request) return mapply(ob, request.getPositionalArguments(), request)
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 callObject(self, request, ob): orig = ob if not IHTTPException.providedBy(ob): ob = component.queryMultiAdapter((ob, request), name=request.method) checker = selectChecker(ob) if checker is not None: checker.check(ob, '__call__') ob = getattr(ob, request.method, None) if ob is None: raise GrokMethodNotAllowed(orig, request) return mapply(ob, request.getPositionalArguments(), request)
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')
def testbasicauth(self): from zope.app.http.exception.unauthorized import Unauthorized exception = Exception() try: raise exception except: pass request = TestRequest() u = Unauthorized(exception, request) # Chech that we implement the right interface self.failUnless(IHTTPException.providedBy(u)) # Call the view u() # Make sure the response status was set self.assertEqual(request.response.getStatus(), 401) self.failUnless(request.response.getHeader('WWW-Authenticate', '', True).startswith('basic'))
def test_methodnotallowedview(self): error = MethodNotAllowed(object(), self.request) view = getMultiAdapter((error, self.request), name='index.html') 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' provideAdapter( MyMethodNotAllowedView, (IMethodNotAllowed, IHTTPRequest), Interface, 'index.html') view = getMultiAdapter((error, self.request), name='index.html')() self.assertEqual(self.request.response.getStatus(), 405) self.assertEqual( self.request.response.getHeader('Allow'), 'GET, POST, PUT, DELETE')
def test_unauthorizedview(self): self.request.setPrincipal(MockPrincipal()) view = getMultiAdapter( (Unauthorized(), self.request), name='index.html') self.failUnless(IHTTPException.providedBy(view)) self.assertEquals( view(), 'Access to the requested resource is forbidden.') self.assertEquals(self.request.response.getStatus(), 403) getUtility(IAuthentication).status = 401 self.assertEquals( view(), 'Access to the requested resource is forbidden.') self.assertEquals(self.request.response.getStatus(), 401) getUtility(IAuthentication).status = 302 self.assertEquals(view(), '') self.assertEquals(self.request.response.getStatus(), 302) getUtility(IAuthentication).status = 303 self.assertEquals(view(), '') self.assertEquals(self.request.response.getStatus(), 303)
def test_notfoundview(self): error = NotFound(object(), self.request) view = getMultiAdapter((error, self.request), name='index.html') self.failUnless(IHTTPException.providedBy(view)) self.assertEquals(view(), 'The requested resource can not be found.') self.assertEquals(self.request.response.getStatus(), 404)
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_traversalexceptionview(self): view = getMultiAdapter( (TraversalException(), self.request), name='index.html') self.assertTrue(IHTTPException.providedBy(view)) self.assertEqual(view(), '') self.assertEqual(self.request.response.getStatus(), 404)