"""Lambda test module.""" from unittest.mock import patch import pytest from src.app import handler @pytest.fixture def mock_secrets_manager(): """Mock AWS Secrets Manager responses.""" with patch( 'src.connectors.boto_clients.secrets_manager_client.get_secret_value' ) as mock_secrets: def mock_get_secret(SecretId): secrets = { 'shared/rds-refresh/test-sql/SNOWFLAKE_USER': ( 'test_user' ), 'shared/rds-refresh/test-sql/SNOWFLAKE_PRIVATE_KEY': ( 'test_key' ), 'shared/rds-refresh/test-sql/SNOWFLAKE_PRIVATE_KEY_PASSPHRASE': ( 'test' ) } return {'SecretString': secrets[SecretId]} mock_secrets.side_effect = mock_get_secret yield mock_secrets @patch('os.path.exists', return_value=True) @patch('os.listdir', return_value=['script1.sql']) @patch('tempfile.NamedTemporaryFile') @patch('src.logic.snowflake.run_scripts') def test_handler_with_scripts( mock_run_scripts, mock_tempfile, mock_listdir, mock_exists, mock_secrets_manager ): """Test handler when scripts_dir is provided.""" mock_run_scripts.return_value = 3 mock_tempfile.return_value.name = '/tmp/test_key.p8' event = {'db_name': 'test-sql'} result = handler(event, None) assert result == {'scripts_run': 3} mock_run_scripts.assert_called_once_with( 'scripts/test-sql', 'test_user', '/tmp/test_key.p8', 'test' ) @patch('src.logic.snowflake.run_scripts') def test_handler_no_scripts(mock_run_scripts, mock_secrets_manager): """Test handler when scripts_dir is missing.""" event = {} with pytest.raises(ValueError, match="Missing 'db_name' in event payload"): handler(event, None) mock_run_scripts.assert_not_called()