inspec/test/unit/resources/aws_elb_test.rb

268 lines
8.5 KiB
Ruby
Raw Normal View History

require "helper"
require "inspec/resource"
require "resources/aws/aws_elb"
require "resource_support/aws"
require "resources/aws/aws_elb"
# MAESB = MockAwsElbSingularBackend
# Abbreviation not used outside this file
#=============================================================================#
# Constructor Tests
#=============================================================================#
class AwsElbConstructorTest < Minitest::Test
def setup
AwsElb::BackendFactory.select(MAESB::Empty)
end
def test_empty_params_rejected
assert_raises(ArgumentError) { AwsElb.new }
end
def test_string_accepted
AwsElb.new "my-elb"
end
def test_hash_accepted
AwsElb.new elb_name: "my-elb"
end
def test_rejects_unrecognized_params
assert_raises(ArgumentError) { AwsElb.new(shoe_size: 9) }
end
end
#=============================================================================#
# Search / Recall
#=============================================================================#
class AwsElbFilterCriteriaTest < Minitest::Test
def setup
AwsElb::BackendFactory.select(MAESB::Basic)
end
def test_search_miss
refute AwsElb.new("nonesuch").exists?
end
def test_recall_when_provided_a_string
elb = AwsElb.new "kangaroo"
assert elb.exists?
assert_equal("kangaroo", elb.elb_name)
end
def test_recall_when_provided_a_symbol
elb = AwsElb.new elb_name: "kang-the-alien"
assert elb.exists?
assert_equal("kang-the-alien", elb.elb_name)
end
end
#=============================================================================#
# Properties
#=============================================================================#
class AwsElbProperties < Minitest::Test
def setup
AwsElb::BackendFactory.select(MAESB::Basic)
@roo = AwsElb.new("kangaroo")
@kang = AwsElb.new("kang-the-alien")
@gamma = AwsElb.new("gamma")
@miss = AwsElb.new("nonesuch")
end
def test_property_with_availability_zones
assert_includes(@roo.availability_zones, "us-east-1b")
assert_includes(@roo.availability_zones, "us-east-1c")
assert_equal(2, @roo.availability_zones.count)
refute_includes(@roo.availability_zones, nil)
assert_kind_of(Array, @miss.availability_zones)
assert_empty(@miss.availability_zones)
end
def test_property_with_dns_name
assert_equal(@gamma.dns_name, "999999.us-east-1.aws.amazon.com")
assert_equal(@roo.dns_name, "12345678.us-east-2.aws.amazon.com")
end
def test_property_with_external_ports
assert_includes(@kang.external_ports, 80)
assert_includes(@gamma.external_ports, 631)
assert_equal(1, @roo.external_ports.count)
refute_includes(@roo.external_ports, nil)
assert_kind_of(Array, @miss.external_ports)
assert_empty(@miss.external_ports)
end
def test_property_with_instance_ids
assert_includes(@roo.instance_ids, "i-87654321")
assert_includes(@kang.instance_ids, "i-12345678")
assert_equal(2, @kang.instance_ids.count)
assert_equal(0, @gamma.instance_ids.count)
refute_includes(@kang.instance_ids, nil)
assert_kind_of(Array, @miss.instance_ids)
assert_empty(@miss.instance_ids)
end
def test_property_with_internal_ports
assert_includes(@gamma.internal_ports, 80)
assert_includes(@roo.internal_ports, 1001)
assert_equal(1, @roo.internal_ports.count)
refute_includes(@roo.internal_ports, nil)
assert_kind_of(Array, @miss.internal_ports)
assert_empty(@miss.internal_ports)
end
def test_property_with_security_group_ids
assert_includes(@kang.security_group_ids, "sg-12345678")
assert_includes(@kang.security_group_ids, "sg-99998888")
assert_equal(3, @kang.security_group_ids.count)
refute_includes(@kang.security_group_ids, nil)
assert_kind_of(Array, @miss.security_group_ids)
assert_empty(@miss.security_group_ids)
end
def test_property_with_subnet_ids
assert_includes(@gamma.subnet_ids, "subnet-ccccdddd")
assert_includes(@kang.subnet_ids, "subnet-12345678")
assert_equal(2, @gamma.subnet_ids.count)
refute_includes(@gamma.subnet_ids, nil)
assert_kind_of(Array, @miss.subnet_ids)
assert_empty(@miss.subnet_ids)
end
def test_property_vpc_id
assert_equal(@gamma.vpc_id, "vpc-87654321")
end
end
#=============================================================================#
# Test Fixtures
#=============================================================================#
module MAESB
class Empty < AwsBackendBase
def describe_load_balancers(query = {})
raise Aws::ElasticLoadBalancing::Errors::LoadBalancerNotFound.new(nil, nil)
end
end
class Basic < AwsBackendBase
def describe_load_balancers(query = {})
data = Aws::ElasticLoadBalancing::Types::DescribeAccessPointsOutput.new(
load_balancer_descriptions: [
Aws::ElasticLoadBalancing::Types::LoadBalancerDescription.new(
availability_zones: %w{
us-east-1a
us-east-1c
},
dns_name: "12345678.us-east-1.aws.amazon.com",
load_balancer_name: "kang-the-alien",
listener_descriptions: [
Aws::ElasticLoadBalancing::Types::ListenerDescription.new(
listener: Aws::ElasticLoadBalancing::Types::Listener.new(
protocol: "http",
load_balancer_port: 80,
instance_protocol: "http",
instance_port: 80
)
),
],
instances: [
Aws::ElasticLoadBalancing::Types::Instance.new(instance_id: "i-12345678"),
Aws::ElasticLoadBalancing::Types::Instance.new(instance_id: "i-aaaabbbb"),
],
security_groups: %w{
sg-12345678
sg-aaaabbbb
sg-99998888
},
subnets: %w{
subnet-12345678
subnet-aaaabbbb
},
vpc_id: "vpc-12345678"
),
Aws::ElasticLoadBalancing::Types::LoadBalancerDescription.new(
availability_zones: %w{
us-east-1b
us-east-1c
},
dns_name: "12345678.us-east-2.aws.amazon.com",
load_balancer_name: "kangaroo",
listener_descriptions: [
Aws::ElasticLoadBalancing::Types::ListenerDescription.new(
listener: Aws::ElasticLoadBalancing::Types::Listener.new(
protocol: "tcp",
load_balancer_port: 1001,
instance_protocol: "tcp",
instance_port: 1001
)
),
],
instances: [
Aws::ElasticLoadBalancing::Types::Instance.new(instance_id: "i-87654321"),
],
security_groups: %w{
sg-12345678
sg-99998888
},
subnets: %w{
subnet-12345678
subnet-aaaabbbb
},
vpc_id: "vpc-12345678"
),
Aws::ElasticLoadBalancing::Types::LoadBalancerDescription.new(
availability_zones: %w{
us-east-1a
us-east-1e
},
dns_name: "999999.us-east-1.aws.amazon.com",
load_balancer_name: "gamma",
listener_descriptions: [
Aws::ElasticLoadBalancing::Types::ListenerDescription.new(
listener: Aws::ElasticLoadBalancing::Types::Listener.new(
protocol: "http",
load_balancer_port: 631,
instance_protocol: "http",
instance_port: 80
)
),
],
instances: [
],
security_groups: %w{
sg-12345678
sg-99998888
sg-01010101
},
subnets: %w{
subnet-ccccdddd
subnet-aaaabbbb
},
vpc_id: "vpc-87654321"
),
]
)
if query[:load_balancer_names]
result = data.load_balancer_descriptions.select do |lbd|
query[:load_balancer_names].include? lbd.load_balancer_name
end
if result.empty?
raise Aws::ElasticLoadBalancing::Errors::LoadBalancerNotFound.new(nil, nil)
else
Aws::ElasticLoadBalancing::Types::DescribeAccessPointsOutput.new(
load_balancer_descriptions: result
)
end
else
data
end
end
end
end