import json import unittest.mock from unittest.mock import MagicMock import pytest import slz_downloader.dsp.vevo import slz_downloader.entities from slz_downloader import config @unittest.mock.patch('slz_downloader.dsp.vevo.client.get_secret') @unittest.mock.patch('slz_downloader.dsp.vevo.client.get_copier') @unittest.mock.patch('requests.get') def test_downloading(requests_get, get_copier, get_secret, params): uow_dict = { 'uow_id': 'vevo-20200308-sme-SonyStandardSales-v1', 'dsp': 'vevo', 'report_type': 'SonyStandardSales', 'version': 'v1', 'report_date': '020-03-08', 'licensor': 'sme', 'extension': 'tsv', 'context': 'SonyStandardSales', } # Client initialization logger = unittest.mock.Mock() client = slz_downloader.dsp.vevo.Client(logger=logger) # Mock secrets get_secret.return_value = json.dumps( { 'SECRET_ACCESS_KEY': 'key', 'ACCESS_KEY_ID': 'key', 'BUCKET': 'vevo-prparamsd-partner-export', 'PREFIX': 'data/partner-export-sony' } ) client.configure(params) job = slz_downloader.entities.Job.from_dict(uow_dict) requests_get.return_value.ok = True source_url = "https://vevo-prd-partner-export.s3.amazonaws.com/data/partner-export-sony/SonyStandardSales_20200308.tsv.gz" client._client.generate_presigned_url = MagicMock(return_value=source_url) client.download(job, chunk_size=1) # VEVO API called with correct request requests_get.assert_called_with( source_url, stream=True, timeout=20, ) assert get_copier.called