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()
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()
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()
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
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
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()
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
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()
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
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
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()