1
0
Fork 0
mirror of https://github.com/fog/fog-aws.git synced 2022-11-09 13:50:52 -05:00
fog--fog-aws/tests/requests/storage/multipart_upload_tests.rb
Josh Lane d48d376e9c initial import
* take the liberty of correcting Aws naming
2014-12-31 09:17:51 -08:00

121 lines
4.2 KiB
Ruby

Shindo.tests('Fog::Storage[:aws] | multipart upload requests', ["aws"]) do
@directory = Fog::Storage[:aws].directories.create(:key => uniq_id('fogmultipartuploadtests'))
tests('success') do
@initiate_multipart_upload_format = {
'Bucket' => String,
'Key' => String,
'UploadId' => String
}
tests("#initiate_multipart_upload('#{@directory.identity}')", 'fog_multipart_upload').formats(@initiate_multipart_upload_format) do
data = Fog::Storage[:aws].initiate_multipart_upload(@directory.identity, 'fog_multipart_upload').body
@upload_id = data['UploadId']
data
end
@list_multipart_uploads_format = {
'Bucket' => String,
'IsTruncated' => Fog::Boolean,
'MaxUploads' => Integer,
'KeyMarker' => NilClass,
'NextKeyMarker' => String,
'NextUploadIdMarker' => Fog::Nullable::String,
'Upload' => [{
'Initiated' => Time,
'Initiator' => {
'DisplayName' => String,
'ID' => String
},
'Key' => String,
'Owner' => {
'DisplayName' => String,
'ID' => String
},
'StorageClass' => String,
'UploadId' => String
}],
'UploadIdMarker' => NilClass,
}
tests("#list_multipart_uploads('#{@directory.identity})").formats(@list_multipart_uploads_format) do
pending if Fog.mocking?
Fog::Storage[:aws].list_multipart_uploads(@directory.identity).body
end
@parts = []
tests("#upload_part('#{@directory.identity}', 'fog_multipart_upload', '#{@upload_id}', 1, ('x' * 6 * 1024 * 1024))").succeeds do
data = Fog::Storage[:aws].upload_part(@directory.identity, 'fog_multipart_upload', @upload_id, 1, ('x' * 6 * 1024 * 1024))
@parts << data.headers['ETag']
end
@list_parts_format = {
'Bucket' => String,
'Initiator' => {
'DisplayName' => String,
'ID' => String
},
'IsTruncated' => Fog::Boolean,
'Key' => String,
'MaxParts' => Integer,
'NextPartNumberMarker' => String,
'Part' => [{
'ETag' => String,
'LastModified' => Time,
'PartNumber' => Integer,
'Size' => Integer
}],
'PartNumberMarker' => String,
'StorageClass' => String,
'UploadId' => String
}
tests("#list_parts('#{@directory.identity}', 'fog_multipart_upload', '#{@upload_id}')").formats(@list_parts_format) do
pending if Fog.mocking?
Fog::Storage[:aws].list_parts(@directory.identity, 'fog_multipart_upload', @upload_id).body
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,
'ETag' => String,
'Key' => String,
'Location' => String
}
tests("#complete_multipart_upload('#{@directory.identity}', 'fog_multipart_upload', '#{@upload_id}', #{@parts.inspect})").formats(@complete_multipart_upload_format) do
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
Fog::Storage[:aws].get_object(@directory.identity, 'fog_multipart_upload').body == ('x' * 10 * 1024 * 1024)
end
@directory.files.new(:key => 'fog_multipart_upload').destroy
@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
Fog::Storage[:aws].abort_multipart_upload(@directory.identity, 'fog_multipart_abort', @upload_id)
end
end
tests('failure') do
tests("initiate_multipart_upload")
tests("list_multipart_uploads")
tests("upload_part")
tests("list_parts")
tests("complete_multipart_upload")
tests("abort_multipart_upload")
end
@directory.destroy
end