Esempio n. 1
0
def serve_documentation(app: App):
    template_name = 'kapi/docs/index.html'
    code_style = None  # pygments_css('emacs')
    return app.render_template(template_name,
                               document=app.document,
                               langs=['python', 'javascript', 'cURL', 'swift'],
                               code_style=code_style)
Esempio n. 2
0
def test_on_error_loads_the_same_component_instances():
    # Given that I have an app that uses an AComponent and the AEventHooks
    app = App(
        components=[AComponent()],
        event_hooks=[AEventHooks],
        routes=[Route('/uses-a', method='GET', handler=uses_a)],
    )

    # When I call an endpoint that raises an error
    with pytest.raises(RuntimeError):
        test.TestClient(app).get('/uses-a')

    # Then all the instances of A are the same
    assert len(A_INSTANCES) >= 2
    for i in range(1, len(A_INSTANCES)):
        assert A_INSTANCES[i] is A_INSTANCES[i - 1]
Esempio n. 3
0
async def serve_static_asgi(app: App, scope: ASGIScope, receive: ASGIReceive,
                            send: ASGISend):
    instance = app.statics(scope)
    await instance(receive, send)
Esempio n. 4
0
def serve_static_wsgi(app: App, environ: WSGIEnviron,
                      start_response: WSGIStartResponse):
    return app.statics(environ, start_response)
Esempio n. 5
0
    Include(url='/parameters', name='parameters', routes=[
        Route(url='/no-parameters/', method='GET', handler=no_parameter),
        Route(url='/query-parameter/', method='GET', handler=query_parameter),
        Route(url='/body-parameter/', method='POST', handler=body_parameter),
    ]),
    Include(url='/responses', name='responses', routes=[
        Route(url='/text-response/', method='GET', handler=text_response),
        Route(url='/empty-response/', method='GET', handler=empty_response),
        Route(url='/error-response/', method='GET', handler=error_response),
    ]),
    Include(url='/downloads', name='downloads', routes=[
        Route(url='/download-response/', method='GET', handler=download_response),
        Route(url='/download-response/path.jpg', method='GET', handler=download_response_filename_in_url),
    ]),
]
app = App(routes=routes)


document = Document(
    url='http://testserver',
    content=[
        Section(name='parameters', content=[
            Link(name='no_parameter', url='/parameters/no-parameters/', method='GET'),
            Link(name='query_parameter', url='/parameters/query-parameter/', method='GET', fields=[
                Field(name='a', location='query')
            ]),
            Link(
                name='body_parameter',
                url='/parameters/body-parameter/',
                method='POST',
                encoding='application/json',
Esempio n. 6
0
    raise RuntimeError('something bad happened')


def error():
    assert 1 == 2


routes = [
    Route('/hello', method='GET', handler=hello_world),
    Route('/error', method='GET', handler=error),
    Route('/uses-a', method='GET', handler=uses_a),
]

event_hooks = [CustomResponseHeader]

app = App(routes=routes, event_hooks=event_hooks)

client = test.TestClient(app)


def test_on_response():
    response = client.get('/hello')
    assert response.status_code == 200
    assert response.headers['Custom'] == 'Ran hooks'


def test_on_error():
    global ON_ERROR

    ON_ERROR = None
    with pytest.raises(AssertionError):
Esempio n. 7
0
from kapi import App, ASyncApp, TestClient

async_app = ASyncApp(routes=[])
async_test_client = TestClient(async_app)

app = App(routes=[])
test_client = TestClient(app)


def test_docs():
    response = test_client.get('/docs/')
    assert response.status_code == 200


def test_docs_async():
    response = async_test_client.get('/docs/')
    assert response.status_code == 200