1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/tests/rackspace/requests/block_storage/snapshot_tests.rb
Paul Thornthwaite b7b7f51b0b [rackspace] Fixes nesting of tests
Fog::Compute connection was called outside of the Shindo blocks and
failing if rackspace credentials were not present.
2013-01-17 10:33:17 +00:00

81 lines
2 KiB
Ruby

Shindo.tests('Fog::Rackspace::BlockStorage | snapshot_tests', ['rackspace']) do
timeout = Fog.mocking? ? 1 : 10
snapshot_format = {
'id' => String,
'status' => String,
'display_name' => Fog::Nullable::String,
'display_description' => Fog::Nullable::String,
'volume_id' => String,
'size' => Integer,
'created_at' => String,
'availability_zone' => String
}
get_snapshot_format = {
'snapshot' => snapshot_format
}
list_snapshot_format = {
'snapshots' => [snapshot_format]
}
def snapshot_deleted?(service, snapshot_id)
begin
service.get_snapshot(snapshot_id)
false
rescue
true
end
end
service = Fog::Rackspace::BlockStorage.new
tests('success') do
volume = service.create_volume(100).body['volume']
volume_id = volume['id']
snapshot_id = nil
until service.get_volume(volume_id).body['volume']['status'] == 'available'
sleep timeout
end
tests("#create_snapshot(#{volume_id})").formats(get_snapshot_format) do
service.create_snapshot(volume_id).body.tap do |b|
snapshot_id = b['snapshot']['id']
end
end
tests("#list_snapshots").formats(list_snapshot_format) do
service.list_snapshots.body
end
tests("#get_snapshot(#{snapshot_id})").formats(get_snapshot_format) do
service.get_snapshot(snapshot_id).body
end
until service.get_snapshot(snapshot_id).body['snapshot']['status'] == 'available' do
sleep timeout
end
tests("#delete_snapshot(#{snapshot_id})").succeeds do
service.delete_snapshot(snapshot_id)
end
until snapshot_deleted?(service, snapshot_id)
sleep timeout
end
service.delete_volume(volume_id)
end
tests('failure') do
tests("#create_snapshot('invalid')").raises(Fog::Rackspace::BlockStorage::NotFound) do
service.create_snapshot('invalid')
end
tests("#get_snapshot('invalid')").raises(Fog::Rackspace::BlockStorage::NotFound) do
service.get_snapshot('invalid')
end
end
end