From 4bb69d4c9823f0c66eab6c6f10d712515f95cc47 Mon Sep 17 00:00:00 2001 From: Marcos Mercedes Date: Thu, 9 Feb 2017 20:52:11 -0400 Subject: [PATCH] Avoid errors due to mutations to options argument in the upload_file method (#1416) --- .../lib/aws-sdk-resources/services/s3/object.rb | 5 +++-- .../spec/services/s3/object/upload_file_spec.rb | 13 +++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/aws-sdk-resources/lib/aws-sdk-resources/services/s3/object.rb b/aws-sdk-resources/lib/aws-sdk-resources/services/s3/object.rb index eaad393b026..f023c335ace 100644 --- a/aws-sdk-resources/lib/aws-sdk-resources/services/s3/object.rb +++ b/aws-sdk-resources/lib/aws-sdk-resources/services/s3/object.rb @@ -245,10 +245,11 @@ def public_url(options = {}) # without any errors. # def upload_file(source, options = {}) + uploading_options = options.dup uploader = FileUploader.new( - multipart_threshold: options.delete(:multipart_threshold), + multipart_threshold: uploading_options.delete(:multipart_threshold), client: client) - uploader.upload(source, options.merge(bucket: bucket_name, key: key)) + uploader.upload(source, uploading_options.merge(bucket: bucket_name, key: key)) true end diff --git a/aws-sdk-resources/spec/services/s3/object/upload_file_spec.rb b/aws-sdk-resources/spec/services/s3/object/upload_file_spec.rb index 0617c46de36..274b37b6559 100644 --- a/aws-sdk-resources/spec/services/s3/object/upload_file_spec.rb +++ b/aws-sdk-resources/spec/services/s3/object/upload_file_spec.rb @@ -51,6 +51,19 @@ module S3 end } + describe 'accepts options without mutating them' do + + it 'uploads objects with custom options' do + options = {}.freeze + expect(client).to receive(:put_object).with( + bucket: 'bucket', + key: 'key', + body: one_meg_file) + object.upload_file(one_meg_file, options) + end + + end + describe 'small objects' do it 'uploads small objects using Client#put_object' do