import json import unittest.mock from unittest.mock import MagicMock import slz_downloader.dsp.sme_max import slz_downloader.entities @unittest.mock.patch('slz_downloader.dsp.sme_max.get_secret') @unittest.mock.patch('slz_downloader.dsp.sme_max.universal') @unittest.mock.patch('requests.get') def test_downloading(requests_get, universal_copier, get_secret, params): uow_dict = { 'uow_id': 'sme_max-20200110-sme-track_mapping-v1', 'dsp': 'sme_max', 'report_type': 'track_mapping', 'version': 'v1', 'report_date': '2020-01-10', 'licensor': 'sme', 'extension': 'txt', 'context': 'track_mapping', } role_creds = { 'AccessKeyId': 'key', 'SecretAccessKey': 'key', 'SessionToken': 'token', } # Client initialization logger = unittest.mock.Mock() client = slz_downloader.dsp.sme_max.Client(logger=logger) # Mock secrets get_secret.return_value = json.dumps( { 'ACCESS_ROLE': 'arn:aws:iam::475275892927:role/access_role', 'BUCKET': 'source_data_bucket' } ) client._get_role_credentials = MagicMock(return_value=role_creds) client.configure(params) job = slz_downloader.entities.Job.from_dict(uow_dict) requests_get.return_value.ok = True source_url = "https://s3.amazonaws.com/source_data_bucket/output/APPLE_ASIN_EXTRACT_TRACK_20200110.AWS" client._client.generate_presigned_url = MagicMock(return_value=source_url) client.download(job, chunk_size=1) # see_max API called with correct request requests_get.assert_called_with( url=source_url, stream=True, timeout=10, ) assert universal_copier.copy.called