"""Tests for s3 module.""" import json from unittest.mock import Mock from unittest.mock import patch from flows.digital import s3 @patch('flows.digital.s3.s3') def test_get_manifest_objects(mock_s3): """Test get_manifest_objects function.""" example_data = { 'entries': [ {'url': 's3://test-bucket/some/path/1.gz'}, {'url': 's3://test-bucket/some/path/2.gz'}, {'url': 's3://test-bucket/some/path/3.gz'}, {'url': 's3://test-bucket/some/path/4.gz'}, {'url': 's3://test-bucket/some/path/5.gz'}, {'url': 's3://test-bucket/some/path/6.gz'}]} mock_stream = Mock() mock_stream.read.return_value = json.dumps(example_data).encode('utf-8') manifest = {'Body': mock_stream} mock_object = Mock() mock_object.get.return_value = manifest mock_s3.get_object.return_value = mock_object result = s3.get_manifest_objects('foo') for entry in example_data['entries']: next(result) mock_s3.get_object.assert_called_with(entry['url'])