Beispiel #1
0
 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) == []
Beispiel #2
0
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
Beispiel #3
0
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)
Beispiel #4
0
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))