"""Test s3 file upload.""" import boto3 from moto import mock_aws from unittest.mock import MagicMock from unittest.mock import patch from salessheets import config from salessheets.connectors import s3 from salessheets.constants import field_const @mock_aws def test_upload_file_to_s3_no_bucket(): """Test s3 upload to unavailable bucket.""" conn = boto3.client('s3') conn.create_bucket(Bucket='bucket-doesnt-exist') product_id = '1' filename = '{product_id}.pdf'.format(product_id=product_id) result = s3.upload_file_to_s3(filename) assert result.status == 404 @patch('salessheets.connectors.s3.boto3.client') def test_upload_file_to_s3_valid(mock_boto_client, create_test_dir): """Test valid s3 upload""" pdf_dir = create_test_dir product_id = '1' mock_s3_client = MagicMock(return_value=None) mock_s3_client.upload_file = MagicMock(return_value=None) mock_boto_client.return_value = mock_s3_client filename = '{product_id}.pdf'.format(product_id=product_id) result = s3.upload_file_to_s3(filename, str(pdf_dir)) assert mock_boto_client.call_count == 1 assert mock_boto_client.call_args[0][0] == 's3' assert result