import os import sys import feed_file_exporter as ffe def test_prompt_missing_env_interactive(monkeypatch): # Set interactive TTY simulation monkeypatch.setenv('ENVIRONMENT', 'DEV') monkeypatch.setattr(sys.stdin, 'isatty', lambda: True) monkeypatch.setattr(sys.stdout, 'isatty', lambda: True) # Ensure vars are absent monkeypatch.delenv('SNOWFLAKE_SOURCE_TABLE', raising=False) monkeypatch.delenv('PERIOD_ID', raising=False) inputs = iter(['TABLE_NAME', '2025-10']) monkeypatch.setattr('builtins.input', lambda prompt='': next(inputs)) ffe.prompt_missing_env(ffe.REQUIRED_ENV_FIELDS) assert os.environ.get('SNOWFLAKE_SOURCE_TABLE') == 'TABLE_NAME' assert os.environ.get('PERIOD_ID') == '2025-10' def test_prompt_missing_env_noninteractive(monkeypatch): monkeypatch.setenv('ENVIRONMENT', 'DEV') monkeypatch.setattr(sys.stdin, 'isatty', lambda: False) monkeypatch.setattr(sys.stdout, 'isatty', lambda: False) monkeypatch.delenv('SNOWFLAKE_SOURCE_TABLE', raising=False) ffe.prompt_missing_env(ffe.REQUIRED_ENV_FIELDS) assert os.environ.get('SNOWFLAKE_SOURCE_TABLE') is None def test_prompt_missing_secrets(monkeypatch): import sys import feed_file_exporter as ffe2 monkeypatch.setenv('ENVIRONMENT', 'DEV') monkeypatch.setattr(sys.stdin, 'isatty', lambda: True) monkeypatch.setattr(sys.stdout, 'isatty', lambda: True) monkeypatch.delenv('SNOWFLAKE_KEY_PASSPHRASE', raising=False) import getpass monkeypatch.setattr(getpass, 'getpass', lambda prompt='': 'secret_pass') ffe2.prompt_missing_secrets(['SNOWFLAKE_KEY_PASSPHRASE']) assert os.environ.get('SNOWFLAKE_KEY_PASSPHRASE') == 'secret_pass'