require 'helper' # MVSSB = MockVpcSubnetSingleBackend # Abbreviation not used outside this file #=============================================================================# # Constructor Tests #=============================================================================# class AwsSubnetConstructorTest < Minitest::Test def setup AwsSubnet::BackendFactory.select(AwsMVSSB::Basic) end def test_constructor_no_args_raises assert_raises(ArgumentError) { AwsSubnet.new } end def test_constructor_expected_well_formed_args AwsSubnet.new(subnet_id: 'subnet-12345678') end def test_constructor_reject_unknown_resource_params assert_raises(ArgumentError) { AwsSubnet.new(bla: 'blabla') } end end #=============================================================================# # Recall #=============================================================================# class AwsSubnetRecallTest < Minitest::Test def setup AwsSubnet::BackendFactory.select(AwsMVSSB::Basic) end def test_search_hit_via_hash_with_vpc_id_and_subnet_id_works assert AwsSubnet.new(subnet_id: 'subnet-12345678').exists? end def test_search_miss_is_not_an_exception refute AwsSubnet.new(subnet_id: 'subnet-00000000').exists? end end #=============================================================================# # properties #=============================================================================# class AwsSubnetPropertiesTest < Minitest::Test def setup AwsSubnet::BackendFactory.select(AwsMVSSB::Basic) end def test_property_subnet_id assert_equal('subnet-12345678', AwsSubnet.new(subnet_id: 'subnet-12345678').subnet_id) end def test_property_vpc_id assert_equal('vpc-12345678', AwsSubnet.new(subnet_id: 'subnet-12345678').vpc_id) end def test_property_cidr_block assert_equal('10.0.1.0/24', AwsSubnet.new(subnet_id: 'subnet-12345678').cidr_block) assert_nil(AwsSubnet.new(subnet_id: 'subnet-00000000').cidr_block) end def test_property_availability_zone assert_equal('us-east-1', AwsSubnet.new(subnet_id: 'subnet-12345678').availability_zone) assert_nil(AwsSubnet.new(subnet_id: 'subnet-00000000').availability_zone) end def test_property_available_ip_address_count assert_equal(251, AwsSubnet.new(subnet_id: 'subnet-12345678').available_ip_address_count) assert_nil(AwsSubnet.new(subnet_id: 'subnet-00000000').available_ip_address_count) end def test_property_ipv_6_cidr_block_association_set assert_equal([], AwsSubnet.new(subnet_id: 'subnet-12345678').ipv_6_cidr_block_association_set) assert_nil(AwsSubnet.new(subnet_id: 'subnet-00000000').ipv_6_cidr_block_association_set) end end #=============================================================================# # Test Matchers #=============================================================================# class AwsSubnetPropertiesTest < Minitest::Test def test_matcher_assign_ipv_6_address_on_creation assert AwsSubnet.new(subnet_id: 'subnet-12345678').assigning_ipv_6_address_on_creation refute AwsSubnet.new(subnet_id: 'subnet-87654321').assigning_ipv_6_address_on_creation end def test_matcher_available assert AwsSubnet.new(subnet_id: 'subnet-12345678').available? refute AwsSubnet.new(subnet_id: 'subnet-87654321').available? end def test_matcher_default_for_az assert AwsSubnet.new(subnet_id: 'subnet-12345678').default_for_az? refute AwsSubnet.new(subnet_id: 'subnet-87654321').default_for_az? end def test_matcher_map_public_ip_on_launch assert AwsSubnet.new(subnet_id: 'subnet-12345678').mapping_public_ip_on_launch refute AwsSubnet.new(subnet_id: 'subnet-87654321').mapping_public_ip_on_launch end end #=============================================================================# # Test Fixtures #=============================================================================# module AwsMVSSB class Basic < AwsBackendBase def describe_subnets(query) subnets = { 'subnet-12345678' => OpenStruct.new({ :subnets => [ OpenStruct.new({ availability_zone: "us-east-1", available_ip_address_count: 251, cidr_block: "10.0.1.0/24", default_for_az: true, map_public_ip_on_launch: true, state: "available", subnet_id: "subnet-12345678", vpc_id: "vpc-12345678", ipv_6_cidr_block_association_set: [], assign_ipv_6_address_on_creation: true, }), ] }), 'subnet-87654321' => OpenStruct.new({ :subnets => [ OpenStruct.new({ availability_zone: "us-east-1", available_ip_address_count: 251, cidr_block: "10.0.1.0/24", default_for_az: false, map_public_ip_on_launch: false, state: "pending", subnet_id: "subnet-87654321", vpc_id: "vpc-87654321", ipv_6_cidr_block_association_set: [], assign_ipv_6_address_on_creation: false, }), ] }), 'empty' => OpenStruct.new({ :subnets => [] }) } return subnets[query[:filters][0][:values][0]] unless subnets[query[:filters][0][:values][0]].nil? subnets['empty'] end end end