inspec/test/unit/resources/aws_config_delivery_channel_test.rb
Clinton Wolfe 8934352935 Make names for AWS Config service objects optional (#2928)
* Update tests and docs to assume one recorder per region
* Config recorder supports singleton fetch
* Docs and tests for singleton mode delivery_channel
* Implementation for singleton delivery channel, and some other code cleanup
* Implement some feedback, and fix a bug in traversing the struct in looking for empty results

Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>
2018-04-19 13:08:16 -04:00

128 lines
4.5 KiB
Ruby

# encoding: utf-8
require 'helper'
# 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