diff --git a/tests/xenserver/requests/compute/destroy_sr_tests.rb b/tests/xenserver/requests/compute/destroy_sr_tests.rb new file mode 100644 index 000000000..0dc22c68b --- /dev/null +++ b/tests/xenserver/requests/compute/destroy_sr_tests.rb @@ -0,0 +1,46 @@ +# +# @rubiojr +# +# Testing this requires a very specific setup: +# +# I use VirtualBox to virtualize XenServer/XCP and create the XenServer VM using +# two virtual disks under the same SATA controller. One of the virtual disks +# will be /dev/sdb, used to perform the tests. +# + +Shindo.tests('Fog::Compute[:xenserver] | destroy_sr request', ['xenserver']) do + + compute = Fog::Compute[:xenserver] + # We need the SR available for this to work, so create it first + ref = compute.create_sr compute.hosts.first.reference, + 'FOG TEST SR', + 'ext', + '', + { :device => '/dev/sdb' }, + '0', + 'user', + false, + {} + + tests('#destroy_sr') do + test('destroyed "FOG TEST SR"') do + compute.storage_repositories.each do |sr| + next unless sr.name == 'FOG TEST SR' + sr.pbds.each { |pbd| pbd.unplug } + end + compute.destroy_sr ref + (compute.storage_repositories.find { |sr| sr.name == 'FOG TEST SR' }).nil? + end + + raises(Fog::XenServer::RequestFailed, + 'raises HandleInvalid trying to destroy it twice') do + compute.destroy_sr ref + end + end + + tests('The expected options') do + raises(ArgumentError, 'raises ArgumentError when arguments missing') \ + { compute.destroy_sr } + end + +end