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/models/compute_v2/image_tests.rb

75 lines
2.4 KiB
Ruby

Shindo.tests('Fog::Compute::RackspaceV2 | image', ['rackspace']) do
service = Fog::Compute::RackspaceV2.new
test_time = Time.now.to_i.to_s
options = {
:name => "fog_server_#{test_time}",
:flavor_id => rackspace_test_flavor_id(service),
:image_id => rackspace_test_image_id(service)
}
tests('ready?') do
@server = Fog::Compute::RackspaceV2::Image.new
tests('default in ready state').returns(true) do
@server.state = Fog::Compute::RackspaceV2::Image::ACTIVE
@server.ready?
end
tests('custom ready state').returns(true) do
@server.state = Fog::Compute::RackspaceV2::Image::SAVING
@server.ready?(Fog::Compute::RackspaceV2::Image::SAVING)
end
tests('default NOT in ready state').returns(false) do
@server.state = Fog::Compute::RackspaceV2::Image::SAVING
@server.ready?
end
tests('custom NOT ready state').returns(false) do
@server.state = Fog::Compute::RackspaceV2::Image::UNKNOWN
@server.ready?(Fog::Compute::RackspaceV2::Image::SAVING)
end
tests('default error state').returns(true) do
@server.state = Fog::Compute::RackspaceV2::Image::ERROR
exception_occurred = false
begin
@server.ready?
rescue Fog::Compute::RackspaceV2::InvalidImageStateException => e
exception_occurred = true
returns(true) {e.desired_state == Fog::Compute::RackspaceV2::Image::ACTIVE }
returns(true) {e.current_state == Fog::Compute::RackspaceV2::Image::ERROR }
end
exception_occurred
end
tests('custom error state').returns(true) do
@server.state = Fog::Compute::RackspaceV2::Image::UNKNOWN
exception_occurred = false
begin
@server.ready?(Fog::Compute::RackspaceV2::Image::SAVING, Fog::Compute::RackspaceV2::Image::UNKNOWN)
rescue Fog::Compute::RackspaceV2::InvalidImageStateException => e
exception_occurred = true
returns(true) {e.desired_state == Fog::Compute::RackspaceV2::Image::SAVING }
returns(true) {e.current_state == Fog::Compute::RackspaceV2::Image::UNKNOWN }
end
exception_occurred
end
end
tests("success") do
begin
server = service.servers.create(options)
server.wait_for { ready? }
image = server.create_image("fog_image_#{test_time}")
tests("destroy").succeeds do
image.destroy
end
ensure
server.destroy if server
end
end
end