2012-08-15 16:31:36 +01:00
|
|
|
Shindo.tests('Fog::Storage[:rackspace] | object requests', ["rackspace"]) do
|
2010-11-02 14:50:39 -07:00
|
|
|
|
|
|
|
unless Fog.mocking?
|
2011-06-15 14:26:43 -07:00
|
|
|
@directory = Fog::Storage[:rackspace].directories.create(:key => 'fogobjecttests')
|
2010-11-02 14:50:39 -07:00
|
|
|
end
|
|
|
|
|
2012-08-07 21:44:59 -04:00
|
|
|
module RackspaceStorageHelpers
|
|
|
|
def override_path(path)
|
2013-02-20 13:02:32 -06:00
|
|
|
@uri.path = path
|
2012-08-07 21:44:59 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2010-11-02 14:50:39 -07:00
|
|
|
tests('success') do
|
|
|
|
|
|
|
|
tests("#put_object('fogobjecttests', 'fog_object')").succeeds do
|
|
|
|
pending if Fog.mocking?
|
2011-06-15 14:26:43 -07:00
|
|
|
Fog::Storage[:rackspace].put_object('fogobjecttests', 'fog_object', lorem_file)
|
2010-11-02 14:50:39 -07:00
|
|
|
end
|
|
|
|
|
2013-07-02 18:20:50 -04:00
|
|
|
tests("#get_object('fogobjectests', 'fog_object')").succeeds do
|
2010-11-02 14:50:39 -07:00
|
|
|
pending if Fog.mocking?
|
2013-07-02 18:20:50 -04:00
|
|
|
Fog::Storage[:rackspace].get_object('fogobjecttests', 'fog_object').body == lorem_file.read
|
2010-11-02 14:50:39 -07:00
|
|
|
end
|
|
|
|
|
2013-07-02 18:20:50 -04:00
|
|
|
tests("#get_object('fogobjecttests', 'fog_object', &block)").succeeds do
|
2011-05-03 11:44:32 -07:00
|
|
|
pending if Fog.mocking?
|
2011-04-04 17:03:31 -07:00
|
|
|
data = ''
|
2011-06-15 14:26:43 -07:00
|
|
|
Fog::Storage[:rackspace].get_object('fogobjecttests', 'fog_object') do |chunk, remaining_bytes, total_bytes|
|
2011-04-04 17:03:31 -07:00
|
|
|
data << chunk
|
|
|
|
end
|
2013-07-02 18:20:50 -04:00
|
|
|
data == lorem_file.read
|
2011-04-04 17:03:31 -07:00
|
|
|
end
|
|
|
|
|
2010-11-02 14:50:39 -07:00
|
|
|
tests("#head_object('fogobjectests', 'fog_object')").succeeds do
|
|
|
|
pending if Fog.mocking?
|
2011-06-15 14:26:43 -07:00
|
|
|
Fog::Storage[:rackspace].head_object('fogobjecttests', 'fog_object')
|
2010-11-02 14:50:39 -07:00
|
|
|
end
|
|
|
|
|
|
|
|
tests("#delete_object('fogobjecttests', 'fog_object')").succeeds do
|
|
|
|
pending if Fog.mocking?
|
2011-06-15 14:26:43 -07:00
|
|
|
Fog::Storage[:rackspace].delete_object('fogobjecttests', 'fog_object')
|
2010-11-02 14:50:39 -07:00
|
|
|
end
|
|
|
|
|
2012-08-05 17:02:30 +10:00
|
|
|
# an object key with no special characters
|
2012-06-24 18:23:46 +10:00
|
|
|
tests("#get_object_https_url('fogobjecttests', 'fog_object','expiration timestamp')").succeeds do
|
|
|
|
pending if Fog.mocking?
|
2012-08-05 17:02:30 +10:00
|
|
|
expires_at = 1344149532 # 2012-08-05 16:52:12 +1000
|
|
|
|
storage = Fog::Storage::Rackspace.new(:rackspace_temp_url_key => "super_secret")
|
2012-08-07 21:44:59 -04:00
|
|
|
storage.extend RackspaceStorageHelpers
|
|
|
|
storage.override_path('/fake_version/fake_tenant')
|
2012-08-05 17:02:30 +10:00
|
|
|
object_url = storage.get_object_https_url('fogobjecttests', 'fog_object', expires_at)
|
2012-08-07 21:44:59 -04:00
|
|
|
object_url =~ /https:\/\/.*clouddrive.com\/[^\/]+\/[^\/]+\/fogobjecttests\/fog_object\?temp_url_sig=7e69a73092e333095a70b3be826a7350fcbede86&temp_url_expires=1344149532/
|
2012-08-05 17:02:30 +10:00
|
|
|
end
|
|
|
|
|
|
|
|
# an object key nested under a /
|
|
|
|
tests("#get_object_https_url('fogobjecttests', 'fog/object','expiration timestamp')").succeeds do
|
|
|
|
pending if Fog.mocking?
|
|
|
|
expires_at = 1344149532 # 2012-08-05 16:52:12 +1000
|
|
|
|
storage = Fog::Storage::Rackspace.new(:rackspace_temp_url_key => "super_secret")
|
2012-08-07 21:44:59 -04:00
|
|
|
storage.extend RackspaceStorageHelpers
|
|
|
|
storage.override_path('/fake_version/fake_tenant')
|
2012-08-05 17:02:30 +10:00
|
|
|
object_url = storage.get_object_https_url('fogobjecttests', 'fog/object', expires_at)
|
2012-08-07 21:44:59 -04:00
|
|
|
object_url =~ /https:\/\/.*clouddrive.com\/[^\/]+\/[^\/]+\/fogobjecttests\/fog\/object\?temp_url_sig=3e99892828804e3d0fdadd18c543b688591ca8b8&temp_url_expires=1344149532/
|
2012-08-05 17:02:30 +10:00
|
|
|
end
|
|
|
|
|
|
|
|
# an object key containing a -
|
|
|
|
tests("#get_object_https_url('fogobjecttests', 'fog-object','expiration timestamp')").succeeds do
|
|
|
|
pending if Fog.mocking?
|
|
|
|
expires_at = 1344149532 # 2012-08-05 16:52:12 +1000
|
|
|
|
storage = Fog::Storage::Rackspace.new(:rackspace_temp_url_key => "super_secret")
|
2012-08-07 21:44:59 -04:00
|
|
|
storage.extend RackspaceStorageHelpers
|
|
|
|
storage.override_path('/fake_version/fake_tenant')
|
2013-07-02 18:20:50 -04:00
|
|
|
object_url = storage.get_object_https_url('fogobjecttests', 'fog-object', expires_at)
|
2012-08-07 21:44:59 -04:00
|
|
|
object_url =~ /https:\/\/.*clouddrive.com\/[^\/]+\/[^\/]+\/fogobjecttests\/fog%2Dobject\?temp_url_sig=a24dd5fc955a57adce7d1b5bc4ec2c7660ab8396&temp_url_expires=1344149532/
|
2012-06-24 18:23:46 +10:00
|
|
|
end
|
|
|
|
|
2013-05-29 15:08:37 -05:00
|
|
|
tests("put_object with block") do
|
2013-07-02 18:20:50 -04:00
|
|
|
pending if Fog.mocking?
|
2013-05-29 15:08:37 -05:00
|
|
|
|
2013-07-02 18:20:50 -04:00
|
|
|
tests("#put_object('fogobjecttests', 'fog_object', &block)").succeeds do
|
2013-05-29 15:08:37 -05:00
|
|
|
begin
|
|
|
|
file = lorem_file
|
2013-07-02 18:20:50 -04:00
|
|
|
buffer_size = file.stat.size / 2 # chop it up into two buffers
|
2013-05-29 15:08:37 -05:00
|
|
|
Fog::Storage[:rackspace].put_object('fogobjecttests', 'fog_block_object', nil) do
|
2013-07-02 18:20:50 -04:00
|
|
|
file.read(buffer_size).to_s
|
2013-05-29 15:08:37 -05:00
|
|
|
end
|
|
|
|
ensure
|
|
|
|
file.close
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2013-07-02 18:20:50 -04:00
|
|
|
tests('#get_object').succeeds do
|
|
|
|
Fog::Storage[:rackspace].get_object('fogobjecttests', 'fog_block_object').body == lorem_file.read
|
2013-05-29 15:08:37 -05:00
|
|
|
end
|
|
|
|
|
2013-07-02 18:20:50 -04:00
|
|
|
tests('#delete_object').succeeds do
|
2013-05-29 15:08:37 -05:00
|
|
|
Fog::Storage[:rackspace].delete_object('fogobjecttests', 'fog_block_object')
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2013-07-02 18:20:57 -04:00
|
|
|
tests('#delete_multiple_objects') do
|
|
|
|
pending if Fog.mocking?
|
|
|
|
|
|
|
|
Fog::Storage[:rackspace].put_object('fogobjecttests', 'fog_object', lorem_file)
|
|
|
|
Fog::Storage[:rackspace].put_object('fogobjecttests', 'fog_object2', lorem_file)
|
|
|
|
Fog::Storage[:rackspace].directories.create(:key => 'fogobjecttests2')
|
|
|
|
Fog::Storage[:rackspace].put_object('fogobjecttests2', 'fog_object', lorem_file)
|
|
|
|
|
|
|
|
expected = {
|
|
|
|
"Number Not Found" => 0,
|
|
|
|
"Response Status" => "200 OK",
|
|
|
|
"Errors" => [],
|
|
|
|
"Number Deleted" => 2,
|
|
|
|
"Response Body" => ""
|
|
|
|
}
|
|
|
|
|
|
|
|
returns(expected, 'deletes multiple objects') do
|
|
|
|
Fog::Storage[:rackspace].delete_multiple_objects('fogobjecttests', ['fog_object', 'fog_object2']).body
|
|
|
|
end
|
|
|
|
|
|
|
|
returns(expected, 'deletes object and container') do
|
|
|
|
Fog::Storage[:rackspace].delete_multiple_objects(nil, ['fogobjecttests2/fog_object', 'fogobjecttests2']).body
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2010-11-02 14:50:39 -07:00
|
|
|
end
|
|
|
|
|
|
|
|
tests('failure') do
|
|
|
|
|
2011-06-15 14:26:43 -07:00
|
|
|
tests("#get_object('fogobjecttests', 'fog_non_object')").raises(Fog::Storage::Rackspace::NotFound) do
|
2010-11-02 14:50:39 -07:00
|
|
|
pending if Fog.mocking?
|
2011-06-15 14:26:43 -07:00
|
|
|
Fog::Storage[:rackspace].get_object('fogobjecttests', 'fog_non_object')
|
2010-11-02 14:50:39 -07:00
|
|
|
end
|
|
|
|
|
2011-06-15 14:26:43 -07:00
|
|
|
tests("#get_object('fognoncontainer', 'fog_non_object')").raises(Fog::Storage::Rackspace::NotFound) do
|
2010-11-02 14:50:39 -07:00
|
|
|
pending if Fog.mocking?
|
2011-06-15 14:26:43 -07:00
|
|
|
Fog::Storage[:rackspace].get_object('fognoncontainer', 'fog_non_object')
|
2010-11-02 14:50:39 -07:00
|
|
|
end
|
|
|
|
|
2011-06-15 14:26:43 -07:00
|
|
|
tests("#head_object('fogobjecttests', 'fog_non_object')").raises(Fog::Storage::Rackspace::NotFound) do
|
2010-11-02 14:50:39 -07:00
|
|
|
pending if Fog.mocking?
|
2011-06-15 14:26:43 -07:00
|
|
|
Fog::Storage[:rackspace].head_object('fogobjecttests', 'fog_non_object')
|
2010-11-02 14:50:39 -07:00
|
|
|
end
|
|
|
|
|
2011-06-15 14:26:43 -07:00
|
|
|
tests("#head_object('fognoncontainer', 'fog_non_object')").raises(Fog::Storage::Rackspace::NotFound) do
|
2010-11-02 14:50:39 -07:00
|
|
|
pending if Fog.mocking?
|
2011-06-15 14:26:43 -07:00
|
|
|
Fog::Storage[:rackspace].head_object('fognoncontainer', 'fog_non_object')
|
2010-11-02 14:50:39 -07:00
|
|
|
end
|
|
|
|
|
2011-06-15 14:26:43 -07:00
|
|
|
tests("#delete_object('fogobjecttests', 'fog_non_object')").raises(Fog::Storage::Rackspace::NotFound) do
|
2010-11-02 14:50:39 -07:00
|
|
|
pending if Fog.mocking?
|
2011-06-15 14:26:43 -07:00
|
|
|
Fog::Storage[:rackspace].delete_object('fogobjecttests', 'fog_non_object')
|
2010-11-02 14:50:39 -07:00
|
|
|
end
|
|
|
|
|
2011-06-15 14:26:43 -07:00
|
|
|
tests("#delete_object('fognoncontainer', 'fog_non_object')").raises(Fog::Storage::Rackspace::NotFound) do
|
2010-11-02 14:50:39 -07:00
|
|
|
pending if Fog.mocking?
|
2011-06-15 14:26:43 -07:00
|
|
|
Fog::Storage[:rackspace].delete_object('fognoncontainer', 'fog_non_object')
|
2010-11-02 14:50:39 -07:00
|
|
|
end
|
|
|
|
|
2013-07-02 18:20:57 -04:00
|
|
|
tests('#delete_multiple_objects') do
|
|
|
|
pending if Fog.mocking?
|
|
|
|
|
|
|
|
expected = {
|
|
|
|
"Number Not Found" => 2,
|
|
|
|
"Response Status" => "200 OK",
|
|
|
|
"Errors" => [],
|
|
|
|
"Number Deleted" => 0,
|
|
|
|
"Response Body" => ""
|
|
|
|
}
|
|
|
|
|
|
|
|
returns(expected, 'reports missing objects') do
|
|
|
|
Fog::Storage[:rackspace].delete_multiple_objects('fogobjecttests', ['fog_non_object', 'fog_non_object2']).body
|
|
|
|
end
|
|
|
|
|
|
|
|
returns(expected, 'reports missing container') do
|
|
|
|
Fog::Storage[:rackspace].delete_multiple_objects('fognoncontainer', ['fog_non_object', 'fog_non_object2']).body
|
|
|
|
end
|
|
|
|
|
|
|
|
tests('deleting non-empty container') do
|
|
|
|
Fog::Storage[:rackspace].put_object('fogobjecttests', 'fog_object', lorem_file)
|
|
|
|
|
|
|
|
expected = {
|
|
|
|
"Number Not Found" => 0,
|
|
|
|
"Response Status" => "400 Bad Request",
|
|
|
|
"Errors" => [['fogobjecttests', '409 Conflict']],
|
|
|
|
"Number Deleted" => 1,
|
|
|
|
"Response Body" => ""
|
|
|
|
}
|
|
|
|
|
|
|
|
returns(expected, 'deletes object but not container') do
|
|
|
|
Fog::Storage[:rackspace].delete_multiple_objects(nil, ['fogobjecttests', 'fogobjecttests/fog_object']).body
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2010-11-02 14:50:39 -07:00
|
|
|
end
|
|
|
|
|
|
|
|
unless Fog.mocking?
|
|
|
|
@directory.destroy
|
|
|
|
end
|
|
|
|
|
2012-06-24 18:23:46 +10:00
|
|
|
end
|