From 96a428e4659ba26682997fcfa612f4e8f4142e7b Mon Sep 17 00:00:00 2001 From: Dan Abel Date: Wed, 30 Oct 2013 16:49:52 +0000 Subject: [PATCH] [vcloud_director] test should fail fast, and use a clearly test id and description --- .../requests/compute/edge_gateway_tests.rb | 92 ++++++++++--------- 1 file changed, 48 insertions(+), 44 deletions(-) diff --git a/tests/vcloud_director/requests/compute/edge_gateway_tests.rb b/tests/vcloud_director/requests/compute/edge_gateway_tests.rb index 753b6ab64..b228a1831 100644 --- a/tests/vcloud_director/requests/compute/edge_gateway_tests.rb +++ b/tests/vcloud_director/requests/compute/edge_gateway_tests.rb @@ -1,5 +1,36 @@ Shindo.tests('Compute::VcloudDirector | edge gateway requests', ['vclouddirector']) do + FIREWALL_RULE_ID = '9999' + + @new_edge_gateway_configuration = { + :FirewallService => + { + :IsEnabled => "true", + :DefaultAction => "allow", + :LogDefaultAction => "false", + :FirewallRule => [ + { + :IsEnabled => "false", + :MatchOnTranslate => "false", + :Id => FIREWALL_RULE_ID, + :Policy => "drop", + :Description => "generated from edge_gateway_tests", + :Protocols => { + :Tcp => "true" + }, + :Port => "3412", + :DestinationPortRange => "3412", + :DestinationIp => "internal", + :SourcePort => "3412", + :SourceIp => "internal", + :SourcePortRange => "3412", + :EnableLogging => "false" + } + ] + } + } + + @service = Fog::Compute::VcloudDirector.new @org = VcloudDirector::Compute::Helper.current_org(@service) @@ -26,57 +57,30 @@ Shindo.tests('Compute::VcloudDirector | edge gateway requests', ['vclouddirector tests('#get_edge_gateway').data_matches_schema(VcloudDirector::Compute::Schema::GATEWAY_TYPE) do @edge_gateway_id = @edge_gateways[:EdgeGatewayRecord].first[:href].split('/').last - @edge_gateway_configuration = @service.get_edge_gateway(@edge_gateway_id).body + @orginal_gateway_conf = @service.get_edge_gateway(@edge_gateway_id).body end - tests('#post_configure_edge_gateway_services') do - @new_edge_gateway_configuration = { - :FirewallService => - { - :IsEnabled => "true", - :DefaultAction => "allow", - :LogDefaultAction => "false", - :FirewallRule => [ - { - :IsEnabled => "false", - :MatchOnTranslate => "false", - :Id => "1000", - :Policy => "drop", - :Description => "description", - :Protocols => { - :Tcp => "true" - }, - :Port => "3412", - :DestinationPortRange => "3412", - :DestinationIp => "internal", - :SourcePort => "3412", - :SourceIp => "internal", - :SourcePortRange => "3412", - :EnableLogging => "false" - } - ] - } - } + tests('#configure_edge_gateway_services') do + + rule = @orginal_gateway_conf[:Configuration][:EdgeGatewayServiceConfiguration][:FirewallService][:FirewallRule].find { |rule| rule[:Id] == FIREWALL_RULE_ID } + raise('fail fast if our test firewall rule already exists - its likely left over from a broken test run') if rule response = @service.post_configure_edge_gateway_services(@edge_gateway_id, @new_edge_gateway_configuration) @service.process_task(response.body) unless Fog.mocking? - end - tests('#check for new firewall rule').returns(@new_edge_gateway_configuration[:FirewallService][:FirewallRule]) do - edge_gateway = @service.get_edge_gateway(@edge_gateway_id).body + tests('#check for new firewall rule').returns(@new_edge_gateway_configuration[:FirewallService][:FirewallRule]) do + edge_gateway = @service.get_edge_gateway(@edge_gateway_id).body + edge_gateway[:Configuration][:EdgeGatewayServiceConfiguration][:FirewallService][:FirewallRule] + end - edge_gateway[:Configuration][:EdgeGatewayServiceConfiguration][:FirewallService][:FirewallRule] - end - - tests('#remove the firewall rule added by test').returns(nil) do - response = @service.post_configure_edge_gateway_services(@edge_gateway_id, - @edge_gateway_configuration[:Configuration][:EdgeGatewayServiceConfiguration]) - - @service.process_task(response.body) unless Fog.mocking? - - edge_gateway = @service.get_edge_gateway(@edge_gateway_id).body - edge_gateway[:Configuration][:EdgeGatewayServiceConfiguration][:FirewallService][:FirewallRule].find { |rule| rule[:Id] == '1000' } - end + tests('#remove the firewall rule added by test').returns(nil) do + response = @service.post_configure_edge_gateway_services(@edge_gateway_id, + @orginal_gateway_conf[:Configuration][:EdgeGatewayServiceConfiguration]) + @service.process_task(response.body) unless Fog.mocking? + edge_gateway = @service.get_edge_gateway(@edge_gateway_id).body + edge_gateway[:Configuration][:EdgeGatewayServiceConfiguration][:FirewallService][:FirewallRule].find { |rule| rule[:Id] == FIREWALL_RULE_ID } + end +end tests('Retrieve non-existent edge gateway').raises(Fog::Compute::VcloudDirector::Forbidden) do begin