mirror of
https://github.com/fog/fog-aws.git
synced 2022-11-09 13:50:52 -05:00
124 lines
5.4 KiB
Ruby
124 lines
5.4 KiB
Ruby
Shindo.tests('AWS::AutoScaling | notification configuration requests', ['aws', 'auto_scaling']) do
|
|
|
|
image_id = { # Ubuntu 12.04 LTS 64-bit EBS
|
|
'ap-northeast-1' => 'ami-60c77761',
|
|
'ap-southeast-1' => 'ami-a4ca8df6',
|
|
'ap-southeast-2' => 'ami-fb8611c1',
|
|
'eu-west-1' => 'ami-e1e8d395',
|
|
'sa-east-1' => 'ami-8cd80691',
|
|
'us-east-1' => 'ami-a29943cb',
|
|
'us-west-1' => 'ami-87712ac2',
|
|
'us-west-2' => 'ami-20800c10'
|
|
}
|
|
|
|
now = Time.now.utc.to_i
|
|
lc_name = "fog-test-#{now}"
|
|
asg_name = "fog-test-#{now}"
|
|
|
|
topic_name = "fog-test-#{now}"
|
|
begin
|
|
topic = Fog::AWS[:sns].create_topic(topic_name).body
|
|
topic_arn = topic['TopicArn']
|
|
rescue Fog::Errors::MockNotImplemented
|
|
topic_arn = Fog::AWS::Mock.arn('sns', Fog::AWS[:auto_scaling].data[:owner_id], "fog-test-#{now}", Fog::AWS[:auto_scaling].region)
|
|
end
|
|
|
|
lc = Fog::AWS[:auto_scaling].create_launch_configuration(image_id[Fog::AWS[:auto_scaling].region], 't1.micro', lc_name)
|
|
asg = Fog::AWS[:auto_scaling].create_auto_scaling_group(asg_name, "#{Fog::AWS[:auto_scaling].region}a", lc_name, 0, 0)
|
|
|
|
tests('raises') do
|
|
tests("#put_notification_configuration(non-existent-group)").raises(Fog::AWS::AutoScaling::ValidationError) do
|
|
Fog::AWS[:auto_scaling].put_notification_configuration('fog-test-nonexistent-group', 'autoscaling:TEST_NOTIFICATION', topic_arn)
|
|
end
|
|
|
|
tests("#put_notification_configuration(null-types)").raises(Fog::AWS::AutoScaling::ValidationError) do
|
|
Fog::AWS[:auto_scaling].put_notification_configuration(asg_name, [], topic_arn)
|
|
end
|
|
end
|
|
|
|
tests('success') do
|
|
tests("#put_notification_configuration(string)").formats(AWS::AutoScaling::Formats::BASIC) do
|
|
pending if Fog.mocking?
|
|
Fog::AWS[:auto_scaling].put_notification_configuration(asg_name, 'autoscaling:TEST_NOTIFICATION', topic_arn).body
|
|
end
|
|
|
|
tests("#describe_notification_configurations").formats(AWS::AutoScaling::Formats::DESCRIBE_NOTIFICATION_CONFIGURATIONS) do
|
|
pending if Fog.mocking?
|
|
body = Fog::AWS[:auto_scaling].describe_notification_configurations('AutoScalingGroupNames' => asg_name).body
|
|
notification_configurations = body['DescribeNotificationConfigurationsResult']['NotificationConfigurations']
|
|
returns(true, 'exactly 1 configurations') do
|
|
notification_configurations.size == 1
|
|
end
|
|
returns(true) do
|
|
config = notification_configurations.first
|
|
config['AutoScalingGroupName'] == asg_name && config['TopicARN'] == topic_arn && config['NotificationType'] == 'autoscaling:TEST_NOTIFICATION'
|
|
end
|
|
body
|
|
end
|
|
|
|
tests("#put_notification_configuration(array)").formats(AWS::AutoScaling::Formats::BASIC) do
|
|
pending if Fog.mocking?
|
|
Fog::AWS[:auto_scaling].put_notification_configuration(asg_name, ['autoscaling:EC2_INSTANCE_LAUNCH', 'autoscaling:EC2_INSTANCE_TERMINATE'], topic_arn).body
|
|
end
|
|
|
|
tests("#describe_notification_configurations").formats(AWS::AutoScaling::Formats::DESCRIBE_NOTIFICATION_CONFIGURATIONS) do
|
|
pending if Fog.mocking?
|
|
body = Fog::AWS[:auto_scaling].describe_notification_configurations('AutoScalingGroupName' => asg_name).body
|
|
notification_configurations = body['DescribeNotificationConfigurationsResult']['NotificationConfigurations']
|
|
returns(true, 'exactly 2 configurations') do
|
|
notification_configurations.size == 2
|
|
end
|
|
[ 'autoscaling:EC2_INSTANCE_LAUNCH', 'autoscaling:EC2_INSTANCE_TERMINATE'].each do |type|
|
|
returns(true) do
|
|
notification_configurations.any? do |config|
|
|
config['AutoScalingGroupName'] == asg_name && config['TopicARN'] == topic_arn && config['NotificationType'] == type
|
|
end
|
|
end
|
|
end
|
|
body
|
|
end
|
|
|
|
tests("#describe_notification_configurations(all)").formats(AWS::AutoScaling::Formats::DESCRIBE_NOTIFICATION_CONFIGURATIONS) do
|
|
pending if Fog.mocking?
|
|
body = Fog::AWS[:auto_scaling].describe_notification_configurations().body
|
|
notification_configurations = body['DescribeNotificationConfigurationsResult']['NotificationConfigurations']
|
|
returns(true, 'at least 2 configurations') do
|
|
notification_configurations.size >= 2
|
|
end
|
|
[ 'autoscaling:EC2_INSTANCE_LAUNCH', 'autoscaling:EC2_INSTANCE_TERMINATE'].each do |type|
|
|
returns(true) do
|
|
notification_configurations.any? do |config|
|
|
config['AutoScalingGroupName'] == asg_name && config['TopicARN'] == topic_arn && config['NotificationType'] == type
|
|
end
|
|
end
|
|
end
|
|
|
|
body
|
|
end
|
|
|
|
tests("#delete_notification_configuration").formats(AWS::AutoScaling::Formats::BASIC) do
|
|
pending if Fog.mocking?
|
|
Fog::AWS[:auto_scaling].delete_notification_configuration(asg_name, topic_arn).body
|
|
end
|
|
|
|
tests("#describe_notification_configurations").formats(AWS::AutoScaling::Formats::DESCRIBE_NOTIFICATION_CONFIGURATIONS) do
|
|
pending if Fog.mocking?
|
|
body = Fog::AWS[:auto_scaling].describe_notification_configurations('AutoScalingGroupNames' => asg_name).body
|
|
returns(true) do
|
|
body['DescribeNotificationConfigurationsResult']['NotificationConfigurations'].empty?
|
|
end
|
|
body
|
|
end
|
|
end
|
|
|
|
Fog::AWS[:auto_scaling].delete_auto_scaling_group(asg_name)
|
|
Fog::AWS[:auto_scaling].delete_launch_configuration(lc_name)
|
|
|
|
if topic
|
|
begin
|
|
Fog::AWS[:sns].delete_topic(topic_arn)
|
|
rescue Fog::Errors::MockNotImplemented
|
|
end
|
|
end
|
|
|
|
end
|