1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/tests/xenserver/models/compute/vbd_tests.rb

115 lines
3.1 KiB
Ruby

Shindo.tests('Fog::Compute[:xenserver] | VBD model', ['xenserver']) do
vbds = Fog::Compute[:xenserver].vbds
vbd = vbds.first
servers = Fog::Compute[:xenserver].servers
server = create_ephemeral_vm
tests('The VBD model should') do
tests('have the action') do
test('reload') { vbd.respond_to? 'reload' }
test('eject') { vbd.respond_to? 'eject' }
test('insert') { vbd.respond_to? 'insert' }
test('unplug') { vbd.respond_to? 'unplug' }
test('unplug_force') { vbd.respond_to? 'unplug_force' }
end
tests('have attributes') do
model_attribute_hash = vbd.attributes
attributes = [
:reference,
:uuid,
:currently_attached,
:__vdi,
:__vm,
:device,
:status_detail,
:type,
:allowed_operations,
:current_operations,
:status_code,
:storage_lock,
:mode,
:runtime_properties,
:unpluggable,
:userdevice,
:bootable,
:empty,
:__metrics
]
tests("The VBD model should respond to") do
attributes.each do |attribute|
test("#{attribute}") { vbd.respond_to? attribute }
end
end
tests("The attributes hash should have key") do
attributes.each do |attribute|
test("#{attribute}") { model_attribute_hash.has_key? attribute }
end
end
end
test('be a kind of Fog::Compute::XenServer::VBD') { vbd.kind_of? Fog::Compute::XenServer::VBD}
end
tests("A real VBD should") do
test("have a valid OpaqueRef") do
puts vbd.reference
(vbd.reference =~ /OpaqueRef:/).eql?(0) and \
vbd.reference != "OpaqueRef:NULL"
end
tests("belong to a VM when attached") do
vbds.each do |vbd|
test("#{vbd.uuid}") do
if vbd.currently_attached
(vbd.__vm =~ /OpaqueRef/).eql?(0) and \
vbd.__vm != "OpaqueRef:NULL"
else
true
end
end
end
end
vbds.each do |vbd|
test("return a Fog::Compute::XenServer::VDI when type Disk") do
if vbd.type == 'Disk'
vbd.vdi.kind_of? Fog::Compute::XenServer::VDI
else
true
end
end
test("return a nil VDI when type CD") do
if vbd.type == 'CD'
vbd.vdi.nil?
else
true
end
end
test("return a VbdMetrics object when attached") do
if vbd.currently_attached
vbd.metrics.kind_of? Fog::Compute::XenServer::VbdMetrics
else
vbd.metrics.nil?
end
end
end
tests("return valid Server") do
test("should be a Fog::Compute::XenServer::Server") { vbd.server.kind_of? Fog::Compute::XenServer::Server }
end
test("be able to be unplugged when type is CD") do
if vbd.type == "CD"
vbd.unpluggable == true
else
vbd.unpluggable == false
end
end
end
tests("VBD Metrics should") do
test("have a last_updated Time property") { server.vbds.first.metrics.last_updated.kind_of? Time }
end
destroy_ephemeral_servers
end