"""Test S3 Connector.""" from os import remove from unittest.mock import MagicMock from unittest.mock import patch import boto3 from moto import mock_s3 from sales.connectors.s3 import upload_file_to_s3 @mock_s3 def test_upload_file_to_s3(): """Test s3 upload.""" mock_bucket_name = 'test-bucket' mock_client = boto3.client('s3') mock_client.create_bucket(Bucket=mock_bucket_name) with open('file.csv', 'w') as file_obj: file_obj.write('hello') upload_file_to_s3('file.csv', mock_bucket_name, 'file.csv', '1') remove('file.csv') @patch('sales.connectors.s3.boto3.client') def test_upload_file_metadata(mock_boto_client): """Test attaching metadata to upload.""" mock_s3_client = MagicMock(return_value=None) mock_s3_client.upload_file = MagicMock(return_value=None) mock_boto_client.return_value = mock_s3_client upload_file_to_s3('file.csv', 'bucket_name', 'file.csv', '1') assert mock_boto_client.call_count == 1 assert mock_boto_client.call_args[0][0] == 's3' assert mock_s3_client.upload_file.call_args[0] == ( 'file.csv', 'bucket_name', 'file.csv', {'Metadata': {'sales-file-id': '1'}}) assert mock_s3_client.upload_file.call_count == 1