From c42d870faafe5b1177f2b70137cc329281507ac4 Mon Sep 17 00:00:00 2001 From: Brian Palmer Date: Mon, 6 Jan 2014 10:41:47 -0700 Subject: [PATCH] enable the relevant tests for multipart mocks The list tests are still pending, as I didn't implement the mocks for those. --- .../requests/storage/abort_multipart_upload.rb | 2 +- .../storage/complete_multipart_upload.rb | 10 +++++----- .../aws/requests/storage/shared_mock_methods.rb | 8 ++++++-- .../requests/storage/multipart_upload_tests.rb | 17 +++-------------- 4 files changed, 15 insertions(+), 22 deletions(-) diff --git a/lib/fog/aws/requests/storage/abort_multipart_upload.rb b/lib/fog/aws/requests/storage/abort_multipart_upload.rb index 1b3bc23c6..d458ed64f 100644 --- a/lib/fog/aws/requests/storage/abort_multipart_upload.rb +++ b/lib/fog/aws/requests/storage/abort_multipart_upload.rb @@ -30,7 +30,7 @@ module Fog def abort_multipart_upload(bucket_name, object_name, upload_id) verify_mock_bucket_exists(bucket_name) - upload_info = self.data[:multipart_uploads][bucket_name].delete(upload_id) + upload_info = get_upload_info(bucket_name, upload_id, true) response = Excon::Response.new if upload_info response.status = 204 diff --git a/lib/fog/aws/requests/storage/complete_multipart_upload.rb b/lib/fog/aws/requests/storage/complete_multipart_upload.rb index dcd50fb29..1713a7487 100644 --- a/lib/fog/aws/requests/storage/complete_multipart_upload.rb +++ b/lib/fog/aws/requests/storage/complete_multipart_upload.rb @@ -54,17 +54,17 @@ module Fog def complete_multipart_upload(bucket_name, object_name, upload_id, parts) bucket = verify_mock_bucket_exists(bucket_name) - upload_info = get_upload_info(bucket_name, upload_id) + upload_info = get_upload_info(bucket_name, upload_id, true) body = parts.map { |pid| upload_info[:parts][pid.to_i] }.join object = store_mock_object(bucket, object_name, body, upload_info[:options]) response = Excon::Response.new response.status = 200 response.body = { - 'Content-Length' => object['Content-Length'], - 'Content-Type' => object['Content-Type'], - 'ETag' => object['ETag'], - 'Last-Modified' => object['Last-Modified'], + 'Location' => "http://#{bucket_name}.s3.amazonaws.com/#{object_name}", + 'Bucket' => bucket_name, + 'Key' => object_name, + 'ETag' => object['ETag'], } response.headers['x-amz-version-id'] = object['VersionId'] if object['VersionId'] != 'null' response diff --git a/lib/fog/aws/requests/storage/shared_mock_methods.rb b/lib/fog/aws/requests/storage/shared_mock_methods.rb index 85a8b8d0b..0005f02b2 100644 --- a/lib/fog/aws/requests/storage/shared_mock_methods.rb +++ b/lib/fog/aws/requests/storage/shared_mock_methods.rb @@ -30,8 +30,12 @@ module Fog raise(Excon::Errors.status_error({:expects => 200}, response)) end - def get_upload_info(bucket_name, upload_id) - upload_info = self.data[:multipart_uploads][bucket_name][upload_id] + def get_upload_info(bucket_name, upload_id, delete = false) + if delete + upload_info = self.data[:multipart_uploads][bucket_name].delete(upload_id) + else + upload_info = self.data[:multipart_uploads][bucket_name][upload_id] + end if !upload_info response = Excon::Response.new diff --git a/tests/aws/requests/storage/multipart_upload_tests.rb b/tests/aws/requests/storage/multipart_upload_tests.rb index 98ca13099..7aad4464a 100644 --- a/tests/aws/requests/storage/multipart_upload_tests.rb +++ b/tests/aws/requests/storage/multipart_upload_tests.rb @@ -11,7 +11,6 @@ Shindo.tests('Fog::Storage[:aws] | multipart upload requests', ["aws"]) do } tests("#initiate_multipart_upload('#{@directory.identity}')", 'fog_multipart_upload').formats(@initiate_multipart_upload_format) do - pending if Fog.mocking? data = Fog::Storage[:aws].initiate_multipart_upload(@directory.identity, 'fog_multipart_upload').body @upload_id = data['UploadId'] data @@ -49,7 +48,6 @@ Shindo.tests('Fog::Storage[:aws] | multipart upload requests', ["aws"]) do @parts = [] tests("#upload_part('#{@directory.identity}', 'fog_multipart_upload', '#{@upload_id}', 1, ('x' * 6 * 1024 * 1024))").succeeds do - pending if Fog.mocking? data = Fog::Storage[:aws].upload_part(@directory.identity, 'fog_multipart_upload', @upload_id, 1, ('x' * 6 * 1024 * 1024)) @parts << data.headers['ETag'] end @@ -80,9 +78,7 @@ Shindo.tests('Fog::Storage[:aws] | multipart upload requests', ["aws"]) do Fog::Storage[:aws].list_parts(@directory.identity, 'fog_multipart_upload', @upload_id).body end - if !Fog.mocking? - @parts << Fog::Storage[:aws].upload_part(@directory.identity, 'fog_multipart_upload', @upload_id, 2, ('x' * 4 * 1024 * 1024)).headers['ETag'] - end + @parts << Fog::Storage[:aws].upload_part(@directory.identity, 'fog_multipart_upload', @upload_id, 2, ('x' * 4 * 1024 * 1024)).headers['ETag'] @complete_multipart_upload_format = { 'Bucket' => String, @@ -92,25 +88,18 @@ Shindo.tests('Fog::Storage[:aws] | multipart upload requests', ["aws"]) do } tests("#complete_multipart_upload('#{@directory.identity}', 'fog_multipart_upload', '#{@upload_id}', #{@parts.inspect})").formats(@complete_multipart_upload_format) do - pending if Fog.mocking? Fog::Storage[:aws].complete_multipart_upload(@directory.identity, 'fog_multipart_upload', @upload_id, @parts).body end tests("#get_object('#{@directory.identity}', 'fog_multipart_upload').body").succeeds do - pending if Fog.mocking? Fog::Storage[:aws].get_object(@directory.identity, 'fog_multipart_upload').body == ('x' * 10 * 1024 * 1024) end - if !Fog.mocking? - @directory.files.new(:key => 'fog_multipart_upload').destroy - end + @directory.files.new(:key => 'fog_multipart_upload').destroy - if !Fog.mocking? - @upload_id = Fog::Storage[:aws].initiate_multipart_upload(@directory.identity, 'fog_multipart_abort').body['UploadId'] - end + @upload_id = Fog::Storage[:aws].initiate_multipart_upload(@directory.identity, 'fog_multipart_abort').body['UploadId'] tests("#abort_multipart_upload('#{@directory.identity}', 'fog_multipart_abort', '#{@upload_id}')").succeeds do - pending if Fog.mocking? Fog::Storage[:aws].abort_multipart_upload(@directory.identity, 'fog_multipart_abort', @upload_id) end