diff --git a/ask_shell/_internal/typer_command_test.py b/ask_shell/_internal/typer_command_test.py index c021102..cb285d7 100644 --- a/ask_shell/_internal/typer_command_test.py +++ b/ask_shell/_internal/typer_command_test.py @@ -1,9 +1,35 @@ +import logging + import pytest import typer from ask_shell._internal import typer_command +def test_hide_secrets(caplog, tmp_path): + root_logger = logging.getLogger() + assert root_logger.handlers + handler = root_logger.handlers[0] + assert isinstance(handler, logging.StreamHandler) + secrets = { + "SECRET_KEY": "my_secret_value", + "ANOTHER_KEY": "another", + "token": "adsfadf", + "ok": "some-value", + "my-secret-path": str(tmp_path), + } + typer_command.hide_secrets(handler, secrets) + expect_hidden = {value for key, value in secrets.items() if key not in {"ok", "my-secret-path"}} + expect_shown = {value for key, value in secrets.items() if key in {"ok", "my-secret-path"}} + all_vars_logged = ",".join(f"{key}={value}" for key, value in secrets.items()) + root_logger.warning(f"Logging all variables: {all_vars_logged}") + output = caplog.text + found_hidden = {value for value in expect_hidden if value in output} + assert not found_hidden + found_shown: set[str] = {value for value in expect_shown if value in output} + assert found_shown == expect_shown, f"Expected to find {expect_shown}, but found {found_shown}" + + def test_configure_logging_wraps_commands_in_nested_typers() -> None: root = typer.Typer(name="root") sub = typer.Typer(help="sub")