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

118 lines
4.1 KiB
Ruby

require 'pp'
Shindo.tests('Compute::VcloudDirector | network requests', ['vclouddirector']) do
GET_NETWORK_FORMAT = {
:type => String,
:name => String,
:href => String,
:id => String,
:description => Fog::Nullable::String,
:is_inherited => Fog::Boolean,
:gateway => Fog::Nullable::String,
:netmask => String,
:dns1 => Fog::Nullable::String,
:dns2 => Fog::Nullable::String,
:dns_suffix => Fog::Nullable::String,
:ip_ranges => [{
:start_address => String,
:end_address => String
}]
}
@service = Fog::Compute::VcloudDirector.new
@org = VcloudDirector::Compute::Helper.current_org(@service)
@created_net_id = nil
tests('Create network in non-existent vDC').raises(Fog::Compute::VcloudDirector::Forbidden) do
@service.post_create_org_vdc_network('00000000-0000-0000-0000-000000000000', 'bob')
end
tests('Delete non-existent OrgNetwork').raises(Fog::Compute::VcloudDirector::Forbidden) do
@service.delete_network('00000000-0000-0000-0000-000000000000')
end
tests('Retrieve non-existent OrgNetwork (get_network)').raises(Fog::Compute::VcloudDirector::Forbidden) do
@service.get_network('00000000-0000-0000-0000-000000000000')
end
tests('Retrieve non-existent OrgNetwork (get_network_complete)').raises(Fog::Compute::VcloudDirector::Forbidden) do
@service.get_network_complete('00000000-0000-0000-0000-000000000000')
end
tests('#get_network').data_matches_schema(GET_NETWORK_FORMAT) do
link = @org[:Link].detect do |l|
l[:rel] == 'down' && l[:type] == 'application/vnd.vmware.vcloud.orgNetwork+xml'
end
pending unless link # nothing to test here cannot continue
@network_id = link[:href].split('/').last
@service.get_network(@network_id).body
end
tests('#get_network_complete').data_matches_schema(VcloudDirector::Compute::Schema::NETWORK_TYPE) do
pending if Fog.mocking?
link = @org[:Link].detect do |l|
l[:rel] == 'down' && l[:type] == 'application/vnd.vmware.vcloud.orgNetwork+xml'
end
pending unless link # nothing to test here cannot continue
@network_id = link[:href].split('/').last
@service.get_network_complete(@network_id).body
end
tests('#get_network_metadata').data_matches_schema(VcloudDirector::Compute::Schema::METADATA_TYPE) do
pending if Fog.mocking?
pending unless @network_id # nothing to test here cannot continue
@service.get_network_metadata(@network_id).body
end
tests('#post_create_org_vdc_network') do
pending unless Fog.mocking?
link = @org[:Link].detect do |l|
l[:rel] == 'down' && l[:type] == 'application/vnd.vmware.vcloud.vdc+xml'
end
vdc_id = link[:href].split('/').last
name = VcloudDirector::Compute::Helper.test_name
options = {
:Description => "Testing post_create_org_vdc_network #{name}",
:Configuration => {
:IpScopes => {
:IpScope => {
:IsInherited => 'false',
:Gateway => '198.51.100.1',
:Netmask => '255.255.255.0',
:Dns1 => '198.51.100.2',
:Dns2 => '198.51.100.3',
:DnsSuffix => 'example.com',
:IpRanges => [
{ :IpRange => { :StartAddress => '198.51.100.10', :EndAddress => '198.51.100.20' } },
{ :IpRange => { :StartAddress => '198.51.100.30', :EndAddress => '198.51.100.40' } },
]
},
},
:FenceMode => 'isolated',
}
}
body = @service.post_create_org_vdc_network(vdc_id, name, options).body
@created_net_id = body[:href].split('/').last if body[:href]
@service.process_task(body[:Tasks][:Task]) if body && body.key?(:Tasks)
tests('fetched name matches created name').returns(name) do
net = @service.get_network(@created_net_id).body
net[:name]
end
end
tests('#delete_network') do
pending unless Fog.mocking?
@delete_task = @service.delete_network(@created_net_id).body
@service.process_task(@delete_task)
tests('created network has been deleted').raises(Fog::Compute::VcloudDirector::Forbidden) do
@service.get_network(@created_net_id)
end
end
end