def aws_route_file(bucket_name, bucket_file_path, local_path): """Route file to either S3 bucket or local filesystem.""" if os.path.isdir(bucket_name): copy_to_local_dir(bucket_name, local_path, bucket_file_path,) else: upload_to_s3(bucket_name, bucket_file_path, local_path)
def test_upload_to_s3_success(self, mock_boto_resource): """Test upload_to_s3 method with mock s3.""" bucket_name = "my_bucket" s3_client = Mock() s3_client.Bucket.create.return_value = Mock() s3_client.Bucket.return_value.upload_file.return_value = Mock() mock_boto_resource.return_value = s3_client s3_client = boto3.resource("s3") s3_client.Bucket(bucket_name).create() with NamedTemporaryFile(delete=False) as t_file: success = upload_to_s3(bucket_name, "/file.txt", t_file.name) self.assertTrue(success) os.remove(t_file.name)
def test_upload_failure(self, mock_boto_resource): """Test upload_to_s3 method with mock s3.""" bucket_name = 'my_bucket' s3_client = Mock() s3_client.Bucket.create.return_value = Mock() s3_client.Bucket.return_value.upload_file.side_effect = ClientError( {'Error': {}}, 'Create') mock_boto_resource.return_value = s3_client s3_client = boto3.resource('s3') s3_client.Bucket(bucket_name).create() t_file = NamedTemporaryFile(delete=False) success = upload_to_s3(bucket_name, '/file.txt', t_file.name) self.assertFalse(success) os.remove(t_file.name)