diff --git a/lib/fog/aws/requests/storage/delete_multiple_objects.rb b/lib/fog/aws/requests/storage/delete_multiple_objects.rb index fa73ab79a..3413228d0 100644 --- a/lib/fog/aws/requests/storage/delete_multiple_objects.rb +++ b/lib/fog/aws/requests/storage/delete_multiple_objects.rb @@ -32,9 +32,10 @@ module Fog # @see http://docs.amazonwebservices.com/AmazonS3/latest/API/multiobjectdeleteapi.html def delete_multiple_objects(bucket_name, object_names, options = {}) + headers = options.dup data = "" - data << "true" if options.delete(:quiet) - version_ids = options.delete('versionId') + data << "true" if headers.delete(:quiet) + version_ids = headers.delete('versionId') object_names.each do |object_name| data << "" data << "#{CGI.escapeHTML(object_name)}" @@ -46,7 +47,6 @@ module Fog end data << "" - headers = options headers['Content-Length'] = data.length headers['Content-MD5'] = Base64.encode64(Digest::MD5.digest(data)). gsub("\n", '') @@ -67,11 +67,13 @@ module Fog class Mock # :nodoc:all def delete_multiple_objects(bucket_name, object_names, options = {}) + headers = options.dup + headers.delete(:quiet) response = Excon::Response.new if bucket = self.data[:buckets][bucket_name] response.status = 200 response.body = { 'DeleteResult' => [] } - version_ids = options.delete('versionId') + version_ids = headers.delete('versionId') object_names.each do |object_name| object_version = version_ids.nil? ? nil : version_ids[object_name] response.body['DeleteResult'] << delete_object_helper(bucket, diff --git a/tests/aws/requests/storage/delete_multiple_objects_tests.rb b/tests/aws/requests/storage/delete_multiple_objects_tests.rb new file mode 100644 index 000000000..9138e91b3 --- /dev/null +++ b/tests/aws/requests/storage/delete_multiple_objects_tests.rb @@ -0,0 +1,11 @@ +Shindo.tests('AWS::Storage | delete_multiple_objects', ['aws']) do + @directory = Fog::Storage[:aws].directories.create(:key => 'fogobjecttests-' + Time.now.to_i.to_s(32)) + + tests("doesn't alter options") do + options = {:quiet => true, 'versionId' => {'fog_object' => '12345'}} + Fog::Storage[:aws].delete_multiple_objects(@directory.identity, ['fog_object'], options) + + test(":quiet is unchanged") { options[:quiet] } + test("'versionId' is unchanged") { options['versionId'] == '12345' } + end +end