mirror of
https://github.com/inspec/inspec
synced 2024-12-18 00:53:22 +00:00
145 lines
6.3 KiB
Ruby
145 lines
6.3 KiB
Ruby
|
require 'helper'
|
||
|
|
||
|
# MASSSB = MockAwsSNSSubscriptionSingularBackend
|
||
|
# Abbreviation not used outside this file
|
||
|
|
||
|
#=============================================================================#
|
||
|
# Constructor Tests
|
||
|
#=============================================================================#
|
||
|
class AwsSnsSubscriptionConstructorTest < Minitest::Test
|
||
|
|
||
|
def setup
|
||
|
AwsSnsSubscription::BackendFactory.select(AwsMASSSB::Basic)
|
||
|
end
|
||
|
|
||
|
def test_empty_params_not_ok
|
||
|
assert_raises(ArgumentError) { AwsSnsSubscription.new }
|
||
|
end
|
||
|
|
||
|
def test_accepts_subscription_arn_as_scalar
|
||
|
AwsSnsSubscription.new('arn:aws:sns:us-west-2:0123456789012:my-topic2:8a21d249-4329-4871-acc6-7be709c6ea7f')
|
||
|
end
|
||
|
|
||
|
def test_accepts_subscription_arn_as_hash
|
||
|
AwsSnsSubscription.new(subscription_arn: 'arn:aws:sns:us-west-2:0123456789012:my-topic2:8a21d249-4329-4871-acc6-7be709c6ea7f')
|
||
|
end
|
||
|
end
|
||
|
|
||
|
|
||
|
#=============================================================================#
|
||
|
# Search / Recall
|
||
|
#=============================================================================#
|
||
|
class AwsSnsSubscriptionRecallTest < Minitest::Test
|
||
|
|
||
|
def setup
|
||
|
AwsSnsSubscription::BackendFactory.select(AwsMASSSB::Basic)
|
||
|
end
|
||
|
|
||
|
def test_search_hit_via_scalar_works
|
||
|
assert AwsSnsSubscription.new('arn:aws:sns:us-west-2:0123456789012:my-topic2:8a21d249-4329-4871-acc6-7be709c6ea7f').exists?
|
||
|
end
|
||
|
|
||
|
def test_search_hit_via_hash_works
|
||
|
assert AwsSnsSubscription.new(subscription_arn: 'arn:aws:sns:us-west-2:0123456789012:my-topic2:8a21d249-4329-4871-acc6-7be709c6ea7f').exists?
|
||
|
end
|
||
|
|
||
|
def test_search_miss_is_not_an_exception
|
||
|
refute AwsSnsSubscription.new(subscription_arn: 'arn:aws:sns:us-west-2:0123456789012:my-topic_non_existent:8a21d249-4329-4871-00000-00000000').exists?
|
||
|
end
|
||
|
end
|
||
|
|
||
|
#=============================================================================#
|
||
|
# Properties
|
||
|
#=============================================================================#
|
||
|
class AwsSnsSubscriptionPropertiesTest < Minitest::Test
|
||
|
|
||
|
def setup
|
||
|
AwsSnsSubscription::BackendFactory.select(AwsMASSSB::Basic)
|
||
|
end
|
||
|
|
||
|
def test_property_topic_arn
|
||
|
assert_equal('arn:aws:sns:us-west-2:0123456789012:my-topic2', AwsSnsSubscription.new('arn:aws:sns:us-west-2:0123456789012:my-topic2:8a21d249-4329-4871-acc6-7be709c6ea7f').topic_arn)
|
||
|
assert_nil(AwsSnsSubscription.new('arn:aws:sns:us-west-2:0123456789012:my-topic2:00000-0000-0000-0000-000000').topic_arn)
|
||
|
end
|
||
|
|
||
|
def test_property_endpoint
|
||
|
assert_equal('my-email2@example.com', AwsSnsSubscription.new('arn:aws:sns:us-west-2:0123456789012:my-topic2:8a21d249-4329-4871-acc6-7be709c6ea7f').endpoint)
|
||
|
assert_nil(AwsSnsSubscription.new('arn:aws:sns:us-west-2:0123456789012:my-topic2:00000-0000-0000-0000-000000').endpoint)
|
||
|
end
|
||
|
|
||
|
def test_property_protocol
|
||
|
assert_equal('https', AwsSnsSubscription.new('arn:aws:sns:us-west-2:0123456789012:my-topic2:8a21d249-4329-4871-acc6-7be709c6ea7f').protocol)
|
||
|
assert_equal('email', AwsSnsSubscription.new('arn:aws:sns:us-west-2:0123456789012:my-topic:8a21d249-4329-4871-acc6-7be709c6ea7f').protocol)
|
||
|
assert_nil(AwsSnsSubscription.new('arn:aws:sns:us-west-2:0123456789012:my-topic2:00000-0000-0000-0000-000000').protocol)
|
||
|
end
|
||
|
|
||
|
def test_property_owner
|
||
|
assert_equal('0123456789012', AwsSnsSubscription.new('arn:aws:sns:us-west-2:0123456789012:my-topic2:8a21d249-4329-4871-acc6-7be709c6ea7f').owner)
|
||
|
assert_nil(AwsSnsSubscription.new('arn:aws:sns:us-west-2:0123456789012:my-topic2:00000-0000-0000-0000-000000').owner)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
|
||
|
#=============================================================================#
|
||
|
# Matchers
|
||
|
#=============================================================================#
|
||
|
class AwsSnsSubscriptionMatchersTest < Minitest::Test
|
||
|
|
||
|
def setup
|
||
|
AwsSnsSubscription::BackendFactory.select(AwsMASSSB::Basic)
|
||
|
end
|
||
|
|
||
|
def test_matcher_raw_message_delivery_positive
|
||
|
assert AwsSnsSubscription.new('arn:aws:sns:us-west-2:0123456789012:my-topic2:8a21d249-4329-4871-acc6-7be709c6ea7f').raw_message_delivery?
|
||
|
end
|
||
|
|
||
|
def test_matcher_raw_message_delivery_negative
|
||
|
refute AwsSnsSubscription.new('arn:aws:sns:us-west-2:0123456789012:my-topic:8a21d249-4329-4871-acc6-7be709c6ea7f').raw_message_delivery?
|
||
|
end
|
||
|
|
||
|
def test_matcher_confirmation_authenticated_positive
|
||
|
assert AwsSnsSubscription.new('arn:aws:sns:us-west-2:0123456789012:my-topic2:8a21d249-4329-4871-acc6-7be709c6ea7f').confirmation_authenticated?
|
||
|
end
|
||
|
|
||
|
def test_matcher_confirmation_authenticated_negative
|
||
|
refute AwsSnsSubscription.new('arn:aws:sns:us-west-2:0123456789012:my-topic:8a21d249-4329-4871-acc6-7be709c6ea7f').confirmation_authenticated?
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
#=============================================================================#
|
||
|
# Test Fixtures
|
||
|
#=============================================================================#
|
||
|
module AwsMASSSB
|
||
|
class Basic < AwsBackendBase
|
||
|
def get_subscription_attributes(query)
|
||
|
fixtures = OpenStruct.new({
|
||
|
'arn:aws:sns:us-west-2:0123456789012:my-topic:8a21d249-4329-4871-acc6-7be709c6ea7f' => OpenStruct.new({
|
||
|
"attributes" => OpenStruct.new({
|
||
|
"Endpoint": "my-email@example.com",
|
||
|
"Protocol": "email",
|
||
|
"RawMessageDelivery": "false",
|
||
|
"ConfirmationWasAuthenticated": "false",
|
||
|
"Owner": "0123456789012",
|
||
|
"SubscriptionArn": "arn:aws:sns:us-west-2:0123456789012:my-topic:8a21d249-4329-4871-acc6-7be709c6ea7f",
|
||
|
"TopicArn": "arn:aws:sns:us-west-2:0123456789012:my-topic"
|
||
|
}),
|
||
|
}),
|
||
|
'arn:aws:sns:us-west-2:0123456789012:my-topic2:8a21d249-4329-4871-acc6-7be709c6ea7f' => OpenStruct.new({
|
||
|
"attributes" => OpenStruct.new({
|
||
|
"Endpoint": "my-email2@example.com",
|
||
|
"Protocol": "https",
|
||
|
"RawMessageDelivery": "true",
|
||
|
"ConfirmationWasAuthenticated": "true",
|
||
|
"Owner": "0123456789012",
|
||
|
"SubscriptionArn": "arn:aws:sns:us-west-2:0123456789012:my-topic2:8a21d249-4329-4871-acc6-7be709c6ea7f",
|
||
|
"TopicArn": "arn:aws:sns:us-west-2:0123456789012:my-topic2"
|
||
|
}),
|
||
|
}),
|
||
|
})
|
||
|
return OpenStruct.new(fixtures[query[:subscription_arn]] ) unless fixtures[query[:subscription_arn]].nil?
|
||
|
raise Aws::SNS::Errors::NotFound.new(Seahorse::Client::Http::Request, "Key does not exist")
|
||
|
end
|
||
|
end
|
||
|
end
|