From cf45a85039dfc780067be87dcb66f0b0e61c8219 Mon Sep 17 00:00:00 2001 From: Mike Pountney Date: Sun, 8 Jun 2014 07:50:47 +0100 Subject: [PATCH] Add LeaseSettingSection Mocks for vApps --- .../get_lease_settings_section_vapp.rb | 34 +++++++++++++++++++ .../requests/compute/get_vapp.rb | 13 +------ .../requests/compute/vapp_tests.rb | 19 +++++++++-- .../requests/compute/vm_tests.rb | 12 +++++++ 4 files changed, 63 insertions(+), 15 deletions(-) diff --git a/lib/fog/vcloud_director/requests/compute/get_lease_settings_section_vapp.rb b/lib/fog/vcloud_director/requests/compute/get_lease_settings_section_vapp.rb index bd3630659..6ea851b25 100644 --- a/lib/fog/vcloud_director/requests/compute/get_lease_settings_section_vapp.rb +++ b/lib/fog/vcloud_director/requests/compute/get_lease_settings_section_vapp.rb @@ -20,6 +20,40 @@ module Fog ) end end + + class Mock + + def get_lease_settings_section_vapp(id) + + type = 'application/vnd.vmware.vcloud.leaseSettingsSection+xml' + + unless vapp = data[:vapps][id] + raise Fog::Compute::VcloudDirector::Forbidden.new( + 'This operation is denied.' + ) + end + + Excon::Response.new( + :status => 200, + :headers => {'Content-Type' => "#{type};version=#{api_version}"}, + :body => get_vapp_lease_settings_section_body(id) + ) + + end + + def get_vapp_lease_settings_section_body(id) + { + :type => "application/vnd.vmware.vcloud.leaseSettingsSection+xml", + :href => make_href("vApp/#{id}/leaseSettingsSection/"), + :ovf_required=>"false", + :"ovf:Info"=>"Lease settings section", + :DeploymentLeaseInSeconds=>"0", + :StorageLeaseInSeconds=>"0", + } + end + + end + end end end diff --git a/lib/fog/vcloud_director/requests/compute/get_vapp.rb b/lib/fog/vcloud_director/requests/compute/get_vapp.rb index 27d305506..776d8cab2 100644 --- a/lib/fog/vcloud_director/requests/compute/get_vapp.rb +++ b/lib/fog/vcloud_director/requests/compute/get_vapp.rb @@ -92,7 +92,7 @@ module Fog :name => vapp[:name], :type => "application/vnd.vmware.vcloud.vApp+xml", :href => make_href("vApp/#{id}"), - :LeaseSettingsSection => get_vapp_lease_settings_section_body(id, vapp), + :LeaseSettingsSection => get_vapp_lease_settings_section_body(id), :"ovf:StartupSection" => get_vapp_ovf_startup_section_body(id, vapp), :"ovf:NetworkSection" => get_vapp_ovf_network_section_body(id, vapp), :NetworkConfigSection => get_vapp_network_config_section_body(id, vapp), @@ -107,17 +107,6 @@ module Fog body end - def get_vapp_lease_settings_section_body(id, vapp) - { - :type => "application/vnd.vmware.vcloud.leaseSettingsSection+xml", - :href => make_href("vApp/#{id}/leaseSettingsSection/"), - :ovf_required=>"false", - :"ovf:Info"=>"Lease settings section", - :DeploymentLeaseInSeconds=>"0", - :StorageLeaseInSeconds=>"0", - } - end - def get_vapp_ovf_startup_section_body(id, vapp) { :xmlns_ns12 => "http://www.vmware.com/vcloud/v1.5", diff --git a/tests/vcloud_director/requests/compute/vapp_tests.rb b/tests/vcloud_director/requests/compute/vapp_tests.rb index 1bf44a4e8..ad38eafe3 100644 --- a/tests/vcloud_director/requests/compute/vapp_tests.rb +++ b/tests/vcloud_director/requests/compute/vapp_tests.rb @@ -15,15 +15,28 @@ Shindo.tests('Compute::VcloudDirector | vapp requests', ['vclouddirector']) do @vapp_id = v[:href].split('/').last #tests("#get_vapp(#{@vapp_id})").data_matches_schema(VcloudDirector::Compute::Schema::VAPP_TYPE) do - tests("#get_vapp(#{@vapp_id})").returns(Hash) do - pending if Fog.mocking? + tests("#get_vapp(#{@vapp_id}).body").returns(Hash) do @service.get_vapp(@vapp_id).body.class end + tests("#get_vapp(#{@vapp_id}).body[:name]").returns(String) do + @service.get_vapp(@vapp_id).body[:name].class + end + + tests("#get_vapp(#{@vapp_id}).body[:href]").returns(v[:href]) do + @service.get_vapp(@vapp_id).body[:href] + end + tests("#get_lease_settings_section_vapp(#{@vapp_id})").returns(Hash) do - pending if Fog.mocking? @service.get_lease_settings_section_vapp(@vapp_id).body.class end + tests("#get_lease_settings_section_vapp(#{@vapp_id}).body[:DeploymentLeaseInSeconds] is >= 0").returns(true) do + Integer(@service.get_lease_settings_section_vapp(@vapp_id).body[:DeploymentLeaseInSeconds]) >= 0 + end + tests("#get_vapp(#{@vapp_id}).body[:LeaseSettingsSection[:DeploymentLeaseInSeconds] is >= 0").returns(true) do + Integer(@service.get_vapp(@vapp_id).body[:LeaseSettingsSection][:DeploymentLeaseInSeconds]) >= 0 + end + tests("#get_network_config_section_vapp(#{@vapp_id})").returns(Hash) do pending if Fog.mocking? @service.get_network_config_section_vapp(@vapp_id).body.class diff --git a/tests/vcloud_director/requests/compute/vm_tests.rb b/tests/vcloud_director/requests/compute/vm_tests.rb index ba511b235..c432de757 100644 --- a/tests/vcloud_director/requests/compute/vm_tests.rb +++ b/tests/vcloud_director/requests/compute/vm_tests.rb @@ -19,6 +19,18 @@ Shindo.tests('Compute::VcloudDirector | vm requests', ['vclouddirector']) do vapp[:Children][:Vm].each do |vm| vm_id = vm[:href].split('/').last + tests("#get_vapp(#{vm_id}).body").returns(Hash) do + @service.get_vapp(vm_id).body.class + end + + tests("#get_vapp(#{vm_id}).body[:name]").returns(String) do + @service.get_vapp(vm_id).body[:name].class + end + + tests("#get_vapp(#{vm_id}).body[:href]").returns(vm[:href]) do + @service.get_vapp(vm_id).body[:href] + end + tests("#get_guest_customization_system_section_vapp(#{vm_id})").data_matches_schema(VcloudDirector::Compute::Schema::GUEST_CUSTOMIZATION_SECTION_TYPE) do pending if Fog.mocking? @service.get_guest_customization_system_section_vapp(vm_id).body