import os import feed_file_exporter as ffe def test_parse_dev_cli_args_sets_env(monkeypatch): args = [ '--sftp-password', 'abc', '--prompt-sftp-password', '--mock-sftp', '--enable-sftp', '--clear-local-sftp', ] ffe.parse_dev_cli_args(args) assert os.environ.get('SFTP_PASSWORD') == 'abc' assert os.environ.get('SFTP_PROMPT_PASSWORD') == 'True' assert os.environ.get('SFTP_MOCK') == 'True' assert os.environ.get('TRANSFER_FILES') == 'True' assert os.environ.get('SFTP_CLEAR_LOCAL') == 'True' def test_prompt_missing_env_noninteractive_noop(monkeypatch): monkeypatch.setenv('ENVIRONMENT', 'DEV') monkeypatch.setattr(ffe, '_is_interactive_tty', lambda: False) monkeypatch.delenv('PERIOD_ID', raising=False) ffe.prompt_missing_env(['PERIOD_ID']) assert os.environ.get('PERIOD_ID') is None def test_prompt_missing_env_interactive_sets(monkeypatch): monkeypatch.setenv('ENVIRONMENT', 'DEV') monkeypatch.setattr(ffe, '_is_interactive_tty', lambda: True) monkeypatch.delenv('PERIOD_ID', raising=False) monkeypatch.setattr('builtins.input', lambda _: '202501') ffe.prompt_missing_env(['PERIOD_ID']) assert os.environ.get('PERIOD_ID') == '202501' def test_prompt_missing_secrets_interactive_sets(monkeypatch): monkeypatch.setenv('ENVIRONMENT', 'DEV') monkeypatch.setattr(ffe, '_is_interactive_tty', lambda: True) monkeypatch.delenv('SNOWFLAKE_KEY_PASSPHRASE', raising=False) # Override getpass for this test only import getpass monkeypatch.setattr(getpass, 'getpass', lambda _: 's3cret') ffe.prompt_missing_secrets(['SNOWFLAKE_KEY_PASSPHRASE']) assert os.environ.get('SNOWFLAKE_KEY_PASSPHRASE') == 's3cret'