mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
118 lines
4.1 KiB
Ruby
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
|