1
0
Fork 0
mirror of https://github.com/fog/fog-aws.git synced 2022-11-09 13:50:52 -05:00
fog--fog-aws/tests/requests/elb/policy_tests.rb
2015-01-02 09:42:20 -08:00

132 lines
6.3 KiB
Ruby

Shindo.tests('AWS::ELB | policy_tests', ['aws', 'elb']) do
@load_balancer_id = 'fog-test-policies'
tests('success') do
listeners = [{'LoadBalancerPort' => 80, 'InstancePort' => 80, 'Protocol' => 'HTTP'}]
Fog::AWS[:elb].create_load_balancer(['us-east-1a'], @load_balancer_id, listeners)
tests("#describe_load_balancer_policy_types").formats(AWS::ELB::Formats::DESCRIBE_LOAD_BALANCER_POLICY_TYPES) do
@policy_types = Fog::AWS[:elb].describe_load_balancer_policy_types.body
end
tests("#create_app_cookie_stickiness_policy").formats(AWS::ELB::Formats::BASIC) do
cookie, policy = 'fog-app-cookie', 'fog-app-policy'
Fog::AWS[:elb].create_app_cookie_stickiness_policy(@load_balancer_id, policy, cookie).body
end
tests("#create_lb_cookie_stickiness_policy with expiry").formats(AWS::ELB::Formats::BASIC) do
policy = 'fog-lb-expiry'
expiry = 300
Fog::AWS[:elb].create_lb_cookie_stickiness_policy(@load_balancer_id, policy, expiry).body
end
tests("#create_lb_cookie_stickiness_policy without expiry").formats(AWS::ELB::Formats::BASIC) do
policy = 'fog-lb-no-expiry'
Fog::AWS[:elb].create_lb_cookie_stickiness_policy(@load_balancer_id, policy).body
end
tests("#create_load_balancer_policy").formats(AWS::ELB::Formats::BASIC) do
policy = 'fog-policy'
Fog::AWS[:elb].create_load_balancer_policy(@load_balancer_id, policy, 'PublicKeyPolicyType', {'PublicKey' => AWS::IAM::SERVER_CERT_PUBLIC_KEY}).body
end
tests("#describe_load_balancer_policies") do
body = Fog::AWS[:elb].describe_load_balancer_policies(@load_balancer_id).body
formats(AWS::ELB::Formats::DESCRIBE_LOAD_BALANCER_POLICIES) { body }
# Check the result of each policy by name
returns({
"PolicyAttributeDescriptions"=>[{
"AttributeName"=>"CookieName",
"AttributeValue"=>"fog-app-cookie"
}],
"PolicyName"=>"fog-app-policy",
"PolicyTypeName"=>"AppCookieStickinessPolicyType"
}) do
body["DescribeLoadBalancerPoliciesResult"]["PolicyDescriptions"].find{|e| e['PolicyName'] == 'fog-app-policy' }
end
returns({
"PolicyAttributeDescriptions"=>[{
"AttributeName"=>"CookieExpirationPeriod",
"AttributeValue"=>"300"
}],
"PolicyName"=>"fog-lb-expiry",
"PolicyTypeName"=>"LBCookieStickinessPolicyType"
}) do
body["DescribeLoadBalancerPoliciesResult"]["PolicyDescriptions"].find{|e| e['PolicyName'] == 'fog-lb-expiry' }
end
returns({
"PolicyAttributeDescriptions"=>[{
"AttributeName"=>"CookieExpirationPeriod",
"AttributeValue"=>"0"
}],
"PolicyName"=>"fog-lb-no-expiry",
"PolicyTypeName"=>"LBCookieStickinessPolicyType"
}) do
body["DescribeLoadBalancerPoliciesResult"]["PolicyDescriptions"].find{|e| e['PolicyName'] == 'fog-lb-no-expiry' }
end
returns({
"PolicyAttributeDescriptions"=>[{
"AttributeName"=>"PublicKey",
"AttributeValue"=> AWS::IAM::SERVER_CERT_PUBLIC_KEY
}],
"PolicyName"=>"fog-policy",
"PolicyTypeName"=>"PublicKeyPolicyType"
}) do
body["DescribeLoadBalancerPoliciesResult"]["PolicyDescriptions"].find{|e| e['PolicyName'] == 'fog-policy' }
end
end
tests("#describe_load_balancer includes all policies") do
lb = Fog::AWS[:elb].describe_load_balancers("LoadBalancerNames" => [@load_balancer_id]).body["DescribeLoadBalancersResult"]["LoadBalancerDescriptions"].first
returns([
{"PolicyName"=>"fog-app-policy", "CookieName"=>"fog-app-cookie"}
]) { lb["Policies"]["AppCookieStickinessPolicies"] }
returns([
{"PolicyName"=>"fog-lb-expiry", "CookieExpirationPeriod"=> 300}
]) { lb["Policies"]["LBCookieStickinessPolicies"].select{|e| e["PolicyName"] == "fog-lb-expiry"} }
returns([
{"PolicyName" => "fog-lb-no-expiry"}
]) { lb["Policies"]["LBCookieStickinessPolicies"].select{|e| e["PolicyName"] == "fog-lb-no-expiry"} }
returns([
"fog-policy"
]) { lb["Policies"]["OtherPolicies"] }
end
tests("#delete_load_balancer_policy").formats(AWS::ELB::Formats::BASIC) do
policy = 'fog-lb-no-expiry'
Fog::AWS[:elb].delete_load_balancer_policy(@load_balancer_id, policy).body
end
tests("#set_load_balancer_policies_of_listener adds policy").formats(AWS::ELB::Formats::BASIC) do
port, policies = 80, ['fog-lb-expiry']
Fog::AWS[:elb].set_load_balancer_policies_of_listener(@load_balancer_id, port, policies).body
end
tests("#set_load_balancer_policies_of_listener removes policy").formats(AWS::ELB::Formats::BASIC) do
port = 80
Fog::AWS[:elb].set_load_balancer_policies_of_listener(@load_balancer_id, port, []).body
end
proxy_policy = "EnableProxyProtocol"
Fog::AWS[:elb].create_load_balancer_policy(@load_balancer_id, proxy_policy, 'ProxyProtocolPolicyType', { "ProxyProtocol" => true })
tests("#set_load_balancer_policies_for_backend_server replaces policies on port").formats(AWS::ELB::Formats::BASIC) do
Fog::AWS[:elb].set_load_balancer_policies_for_backend_server(@load_balancer_id, 80, [proxy_policy]).body
end
tests("#describe_load_balancers has other policies") do
Fog::AWS[:elb].set_load_balancer_policies_for_backend_server(@load_balancer_id, 80, [proxy_policy]).body
description = Fog::AWS[:elb].describe_load_balancers("LoadBalancerNames" => [@load_balancer_id]).body["DescribeLoadBalancersResult"]["LoadBalancerDescriptions"].first
returns(true) { description["Policies"]["OtherPolicies"].include?(proxy_policy) }
end
Fog::AWS[:elb].delete_load_balancer(@load_balancer_id)
end
end