from unittest.mock import MagicMock from garcon.contrib import redshift def test_unload(mocker): """Test Redshift UNLOAD. """ AWS_KEY = 'nopass' AWS_SECRET = 'nosecret' def side_effect(sql): assert AWS_KEY not in sql assert AWS_SECRET not in sql assert '[...]' in sql query = 'select * from dim_artist' s3_prefix = 's3://some_location' debug_mock = MagicMock(side_effect=side_effect) logger_mock = MagicMock() logger_mock.debug = debug_mock activity_mock = mocker.patch('garcon.activity.Activity') activity_mock.logger = logger_mock with mocker.patch('psycopg2.connect') as mock_conn: redshift.unload( activity=activity_mock, query=query, s3_prefix=s3_prefix, options='', redshift_host='nohost', redshift_port=666, redshift_db='nodb', redshift_user='nouser', redshift_password='nopass', aws_access_key=AWS_KEY, aws_access_secret=AWS_SECRET ) mock_conn.assert_called assert logger_mock.debug.called def test_describe_table(mocker): """Test Redshift describe table. """ with mocker.patch('psycopg2.connect') as mock_conn: with mocker.patch('json.dumps'): ctx = redshift.describe_table( activity=mocker.patch('garcon.activity.Activity'), schema='noschema', table='notable', redshift_host='nohost', redshift_port=666, redshift_db='nodb', redshift_user='nouser', redshift_password='nopass', ) mock_conn.assert_called assert 'describe_json' in ctx