async def check_database() -> None: async with ComponentFactory.standalone() as factory: admin_service = factory.create_admin_service() expected = [Admin(username=u) for u in config.initial_admins] assert await admin_service.get_admins() == expected token_service = factory.create_token_service() bootstrap = TokenData.bootstrap_token() assert await token_service.list_tokens(bootstrap) == []
async def factory(empty_database: None) -> AsyncIterator[ComponentFactory]: """Return a component factory. Note that this creates a separate SQLAlchemy AsyncSession from any that may be created by the FastAPI app. """ async with ComponentFactory.standalone() as factory: yield factory
async def update_service_tokens() -> None: """Update service tokens stored in Kubernetes secrets.""" config = config_dependency() logger = structlog.get_logger(config.safir.logger_name) if not config.kubernetes: logger.info("No Kubernetes secrets configured") sys.exit(0) async with ComponentFactory.standalone() as factory: kubernetes_service = factory.create_kubernetes_service() try: await kubernetes_service.update_service_secrets() except KubernetesError as e: msg = "Failed to update service token secrets" logger.error(msg, error=str(e)) sys.exit(1)
async def _selenium_startup(token_path: str) -> None: """Startup hook for the app run in Selenium testing mode.""" config = await config_dependency() user_info = TokenUserInfo(username="******", name="Test User", uid=1000) scopes = list(config.known_scopes.keys()) async with ComponentFactory.standalone() as factory: async with factory.session.begin(): # Add an expired token so that we can test display of expired # tokens. await add_expired_session_token( user_info, scopes=scopes, ip_address="127.0.0.1", session=factory.session, ) # Add the valid session token. token_service = factory.create_token_service() token = await token_service.create_session_token( user_info, scopes=scopes, ip_address="127.0.0.1") with open(token_path, "w") as f: f.write(str(token))