Beispiel #1
0
def test_resolution_null():
    def endpoint_func():
        pass

    route = Route('/', endpoint_func)

    assert len(route.get_required_args()) == 0
Beispiel #2
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
Beispiel #3
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
Beispiel #4
0
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
Beispiel #5
0
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
Beispiel #6
0
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
Beispiel #7
0
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())
Beispiel #8
0
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
Beispiel #9
0
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
Beispiel #10
0
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
Beispiel #11
0
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
Beispiel #12
0
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
Beispiel #13
0
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
Beispiel #14
0
def test_unresolved_error_render():
    rt = Route('/<number:int>', odd_endpoint, render_basic)
    Application([rt], render_error=lambda nopenope: False)