def test_resolution_null(): def endpoint_func(): pass route = Route('/', endpoint_func) assert len(route.get_required_args()) == 0
def test_resolution_null(): def endpoint_func(): pass route = Route('/', endpoint_func) bound_route = route.bind(Application()) assert len(bound_route.get_required_args()) == 0
def test_resolution_basic(): mws = [FirstMW(), SecondMW()] def endpoint_func(url_arg, b): return {} route = Route('/<url_arg>/', endpoint_func, middlewares=mws) bound_route = route.bind(Application()) assert bound_route.is_required_arg('a') is True
def test_resolution_basic(): mws = [FirstMW(), SecondMW()] def endpoint_func(url_arg, b): return {} route = Route('/<url_arg>/', endpoint_func, middlewares=mws) assert route.is_required_arg('a') is True
def test_broken_error_render(): rt = Route('/<number:int>', odd_endpoint, render_basic) app = Application([rt], render_error=render_error_broken) cl = Client(app, BaseResponse) err_resp = cl.get('/2') yield eq_, err_resp.status_code, 500 yield ok_, 'not in my house' in err_resp.data
def test_error_render_count(): class AccumErrorHandler(ErrorHandler): def render_error(self, _error, request, error_list, **kwargs): if 'reraise' in request.path: raise _error if 'badgateway' in request.path: _error = BadGateway() error_list.append(_error) return _error rt = Route('/<number:int>/<option?>', odd_endpoint, render_basic) error_list = [] rsrc = {'error_list': error_list} app = Application([rt], rsrc, error_handler=AccumErrorHandler()) cl = Client(app, BaseResponse) err_resp = cl.get('/39') yield eq_, err_resp.status_code, 200 err_resp = cl.get('/2') yield eq_, err_resp.status_code, 500 yield eq_, len(error_list), 1 # reraising means the error will be handled by the default # handler, so no length change should occur err_resp = cl.get('/4/reraise') yield eq_, err_resp.status_code, 500 yield eq_, len(error_list), 1 err_resp = cl.get('/6/badgateway') #if err_resp.status_code != 502: # import pdb;pdb.set_trace() yield eq_, err_resp.status_code, 502 yield eq_, len(error_list), 2
def test_unresolved_error_render(): class BadErrorHandler(ErrorHandler): def render_error(self, nopenope, **kwargs): return False rt = Route('/<number:int>', odd_endpoint, render_basic) Application([rt], error_handler=BadErrorHandler())
def test_error_render_count(): class AccumErrorHandler(ErrorHandler): def render_error(self, _error, request, error_list, **kwargs): if 'reraise' in request.path: raise _error if 'badgateway' in request.path: _error = BadGateway() error_list.append(_error) return _error rt = Route('/<number:int>/<option?>', odd_endpoint, render_basic) error_list = [] rsrc = {'error_list': error_list} app = Application([rt], rsrc, error_handler=AccumErrorHandler()) cl = app.get_local_client() err_resp = cl.get('/39') assert err_resp.status_code == 200 err_resp = cl.get('/2') assert err_resp.status_code == 500 assert len(error_list) == 1 # reraising means the error will be handled by the default # handler, so no length change should occur err_resp = cl.get('/4/reraise') assert err_resp.status_code == 500 assert len(error_list) == 1 err_resp = cl.get('/6/badgateway') assert err_resp.status_code == 502 assert len(error_list) == 2
def test_broken_error_render(): class BrokenErrorHandler(ErrorHandler): def render_error(self, **kwargs): 1 / 0 rt = Route('/<number:int>', odd_endpoint, render_basic) app = Application([rt], error_handler=BrokenErrorHandler()) cl = Client(app, BaseResponse) err_resp = cl.get('/2') yield eq_, err_resp.status_code, 500 yield ok_, 'not in my house' in err_resp.data
def test_broken_error_render(): class BrokenErrorHandler(ErrorHandler): def render_error(self, **kwargs): 1 / 0 rt = Route('/<number:int>', odd_endpoint, render_basic) app = Application([rt], error_handler=BrokenErrorHandler()) cl = app.get_local_client() err_resp = cl.get('/2') assert err_resp.status_code == 500 assert b'not in my house' in err_resp.data
def test_app_error_render(): rt = Route('/<number:int>', odd_endpoint, render_basic) app = Application([rt]) cl = app.get_local_client() assert cl.get('/1').status_code == 200 err_resp = cl.get('/2') assert err_resp.status_code == 500 assert b'not in my house' in err_resp.data err_resp = cl.get('/non-int') assert err_resp.status_code == 404
def test_app_error_render(): rt = Route('/<number:int>', odd_endpoint, render_basic) yield eq_, rt._render_error, None app = Application([rt], render_error=render_error_basic) yield eq_, rt._render_error, render_error_basic cl = Client(app, BaseResponse) yield eq_, cl.get('/1').status_code, 200 err_resp = cl.get('/2') yield eq_, err_resp.status_code, 500 yield ok_, 'not in my house' in err_resp.data err_resp = cl.get('/non-int') yield eq_, err_resp.status_code, 404
def test_error_render_count(): rt = Route('/<number:int>/<option?>', odd_endpoint, render_basic) error_list = [] rsrc = {'error_list': error_list} app = Application([rt], rsrc, render_error=accum_render_error) cl = Client(app, BaseResponse) err_resp = cl.get('/39') yield eq_, err_resp.status_code, 200 err_resp = cl.get('/2') yield eq_, err_resp.status_code, 500 yield eq_, len(error_list), 1 # reraising means the error will be handled by the default # handler, so no length change should occur err_resp = cl.get('/4/reraise') yield eq_, err_resp.status_code, 500 yield eq_, len(error_list), 1 err_resp = cl.get('/6/badgateway') yield eq_, err_resp.status_code, 502 yield eq_, len(error_list), 2
def test_unresolved_error_render(): rt = Route('/<number:int>', odd_endpoint, render_basic) Application([rt], render_error=lambda nopenope: False)