inspec/test/unit/resources/aws_config_delivery_channel_test.rb
Ryan Davis 82c9aa6ed6 Got the rest of the tests to pass.
Signed-off-by: Ryan Davis <zenspider@chef.io>
2019-05-29 17:58:02 -07:00

132 lines
4.6 KiB
Ruby

require 'helper'
require 'inspec/resource'
require 'resources/aws/aws_config_delivery_channel'
require 'resource_support/aws'
require 'resources/aws/aws_config_delivery_channel'
# MDCSB = MockDeliveryChannelSingleBackend
# Abbreviation not used outside this file
#=============================================================================#
# Constructor Tests
#=============================================================================#
class AwsConfigDeliveryChannelConstructorTest < Minitest::Test
def setup
AwsConfigDeliveryChannel::BackendFactory.select(AwsMDCSB::Basic)
end
def test_constructor_when_no_params_provided
AwsConfigDeliveryChannel.new
end
def test_constructor_expected_well_formed_args_scalar
AwsConfigDeliveryChannel.new('default')
end
def test_constructor_expected_well_formed_args_hash
AwsConfigDeliveryChannel.new(channel_name: 'default')
end
def test_constructor_reject_unknown_resource_params
assert_raises(ArgumentError) { AwsConfigDeliveryChannel.new(bla: 'blabla') }
end
end
#=============================================================================#
# Recall
#=============================================================================#
class AwsConfigDeliveryChannelRecallTest < Minitest::Test
def setup
AwsConfigDeliveryChannel::BackendFactory.select(AwsMDCSB::Basic)
end
def test_search_hit_by_default
assert AwsConfigDeliveryChannel.new.exists?
end
def test_search_hit_via_scalar
assert AwsConfigDeliveryChannel.new('default').exists?
end
def test_search_hit_via_hash
assert AwsConfigDeliveryChannel.new(channel_name: 'default').exists?
end
def test_search_miss_is_not_an_exception
refute AwsConfigDeliveryChannel.new(channel_name: 'NonExistentDeliveryChannel').exists?
end
end
#=============================================================================#
# properties
#=============================================================================#
class AwsConfigDeliveryChannelPropertiesTest < Minitest::Test
def setup
AwsConfigDeliveryChannel::BackendFactory.select(AwsMDCSB::Basic)
end
def test_property_channel_name
assert_equal('default', AwsConfigDeliveryChannel.new('default').channel_name)
assert_equal('default', AwsConfigDeliveryChannel.new.channel_name)
assert_equal('NonExistentDeliveryChannel',AwsConfigDeliveryChannel.new('NonExistentDeliveryChannel').channel_name)
end
def test_property_delivery_frequency_in_hours
assert_equal(3, AwsConfigDeliveryChannel.new('default').delivery_frequency_in_hours)
assert_nil(AwsConfigDeliveryChannel.new('NonExistentDeliveryChannel').delivery_frequency_in_hours)
end
def test_property_s3_bucket_name
assert_equal('my-bucket', AwsConfigDeliveryChannel.new('default').s3_bucket_name)
assert_nil(AwsConfigDeliveryChannel.new('NonExistentDeliveryChannel').s3_bucket_name)
end
def test_property_s3_key_prefix
assert_equal('config-logs/', AwsConfigDeliveryChannel.new('default').s3_key_prefix)
assert_nil(AwsConfigDeliveryChannel.new('NonExistentDeliveryChannel').s3_key_prefix)
end
def test_property_sns_topic_arn
assert_equal('arn:aws:sns:::my-topic-name', AwsConfigDeliveryChannel.new('default').sns_topic_arn)
assert_nil(AwsConfigDeliveryChannel.new('NonExistentDeliveryChannel').sns_topic_arn)
end
end
#=============================================================================#
# Test Matchers
#=============================================================================#
# None
#=============================================================================#
# Test Fixtures
#=============================================================================#
module AwsMDCSB
class Basic < AwsBackendBase
def describe_delivery_channels(query = {})
fixtures = {
'default' => Aws::ConfigService::Types::DescribeDeliveryChannelsResponse.new(
:delivery_channels => [
{
name: "default",
s3_bucket_name: 'my-bucket',
s3_key_prefix: 'config-logs/',
sns_topic_arn: 'arn:aws:sns:::my-topic-name',
config_snapshot_delivery_properties: {
delivery_frequency: 'Three_Hours'
},
},
]
),
}
return fixtures['default'] if query.empty?
return fixtures[query[:delivery_channel_names][0]] unless fixtures[query[:delivery_channel_names][0]].nil?
raise Aws::ConfigService::Errors::NoSuchDeliveryChannelException.new(nil, nil)
end
end
end