Esempio n. 1
0
async def app(event_loop, db, request):
    globalregistry.reset()
    settings = get_db_settings(request.node)
    app = make_app(settings=settings, loop=event_loop)

    server_settings = settings.get("test_server_settings", {})
    host = server_settings.get("host", "127.0.0.1")
    port = int(server_settings.get("port", 8000))

    from uvicorn import Config, Server

    config = Config(app, host=host, port=port, lifespan="on")
    server = Server(config=config)
    task = asyncio.ensure_future(server.serve(), loop=event_loop)

    while app.app is None and not task.done():
        # Wait for app initialization
        await asyncio.sleep(0.05)

    if task.done():
        task.result()

    await _clear_dbs(app.app.root)

    yield host, port

    server.should_exit = True
    await asyncio.sleep(1)  # There is no other way to wait for server shutdown
    clear_task_vars()
Esempio n. 2
0
async def app_client(event_loop, db, request):
    globalregistry.reset()
    app = make_app(settings=get_db_settings(request.node), loop=event_loop)
    async with TestClient(app, timeout=30) as client:
        await _clear_dbs(app.app.root)
        yield app, client
    clear_task_vars()
Esempio n. 3
0
async def dummy_guillotina(event_loop, request):
    globalregistry.reset()
    app = make_app(settings=get_dummy_settings(request.node), loop=event_loop)
    async with TestClient(app):
        yield app
    logout()
    clear_task_vars()
Esempio n. 4
0
def guillotina_main(loop):
    globalregistry.reset()
    aioapp = make_app(settings=get_db_settings(), loop=loop)
    aioapp.config.execute_actions()
    load_cached_schema()
    yield aioapp
    try:
        loop.run_until_complete(close_async_tasks(aioapp))
    except asyncio.CancelledError:
        pass
Esempio n. 5
0
def dummy_guillotina(loop):
    globalregistry.reset()
    aioapp = loop.run_until_complete(
        make_app(settings=get_dummy_settings(), loop=loop))
    aioapp.config.execute_actions()
    load_cached_schema()
    yield aioapp
    try:
        loop.run_until_complete(close_async_tasks(aioapp))
    except asyncio.CancelledError:
        pass
Esempio n. 6
0
def dummy_guillotina(loop, request):
    globalregistry.reset()
    aioapp = loop.run_until_complete(
        make_app(settings=get_dummy_settings(request.node), loop=loop))
    aioapp.config.execute_actions()
    load_cached_schema()
    yield aioapp
    try:
        loop.run_until_complete(close_async_tasks(aioapp))
    except asyncio.CancelledError:
        pass
    logout()
Esempio n. 7
0
def test_not_warn_about_jwt_secret(loop, caplog):
    settings = deepcopy(testing.get_settings())
    settings.update({
        "debug": True,
        "jwt": {
            "algorithm": "HS256",
            "secret": "secret"
        }
    })
    with caplog.at_level(logging.WARNING, logger="guillotina"):
        globalregistry.reset()
        loop.run_until_complete(make_app(settings=settings, loop=loop))
        assert len(caplog.records) == 0
Esempio n. 8
0
def guillotina_in_thread(port):
    # Create a new loop and set it
    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)
    # Create guillotina app
    globalregistry.reset()
    aioapp = loop.run_until_complete(
        make_app(settings=get_db_settings(), loop=loop))
    aioapp.config.execute_actions()
    load_cached_schema()
    # Create test server with app
    server = TestServer(aioapp, loop=loop, port=port)
    loop.run_until_complete(server.start_server(loop=loop))
    loop.run_forever()
Esempio n. 9
0
def test_warn_about_jwt_complexity(loop, caplog):
    settings = deepcopy(testing.get_settings())
    settings.update({
        "debug": False,
        "jwt": {
            "algorithm": "HS256",
            "secret": "DKK@7328*!&@@"
        }
    })
    with caplog.at_level(logging.WARNING, logger="guillotina"):
        globalregistry.reset()
        loop.run_until_complete(make_app(settings=settings, loop=loop))
        assert len(caplog.records) == 1
        assert "insecure secret" in caplog.records[0].message
Esempio n. 10
0
def test_warn_about_jwt_secret(loop, caplog):
    settings = deepcopy(testing.get_settings())
    settings.update({
        'debug': False,
        'jwt': {
            "algorithm": "HS256",
            'secret': 'secret'
        }
    })
    with caplog.at_level(logging.WARNING, logger='guillotina'):
        globalregistry.reset()
        loop.run_until_complete(make_app(settings=settings, loop=loop))
        assert len(caplog.records) == 1
        assert 'strongly advised' in caplog.records[0].message
Esempio n. 11
0
async def test_not_warn_about_jwt_secret(event_loop, caplog):
    settings = deepcopy(testing.get_settings())
    settings.update({
        "debug": True,
        "jwt": {
            "algorithm": "HS256",
            "secret": "secret"
        }
    })
    with caplog.at_level(logging.WARNING, logger="guillotina"):
        globalregistry.reset()
        app = make_app(settings=settings, loop=event_loop)
        await app.startup()
        assert len(caplog.records) == 0
        await app.shutdown()