mirror of
https://github.com/fog/fog-aws.git
synced 2022-11-09 13:50:52 -05:00
167 lines
4.8 KiB
Ruby
167 lines
4.8 KiB
Ruby
Shindo.tests('AWS::CloudFormation | stack requests', ['aws', 'cloudformation']) do
|
|
|
|
@validate_template_format = {
|
|
'Description' => String,
|
|
'Parameters' => [
|
|
{
|
|
'DefaultValue' => Fog::Nullable::String,
|
|
'Description' => String,
|
|
'NoEcho' => Fog::Boolean,
|
|
'ParameterKey' => String,
|
|
}
|
|
],
|
|
'RequestId' => String
|
|
}
|
|
|
|
@create_stack_format = {
|
|
'RequestId' => String,
|
|
'StackId' => String
|
|
}
|
|
|
|
@update_stack_format = {
|
|
'RequestId' => String,
|
|
'StackId' => String
|
|
}
|
|
|
|
@get_template_format = {
|
|
'RequestId' => String,
|
|
'TemplateBody' => String
|
|
}
|
|
|
|
@describe_stacks_format = {
|
|
'RequestId' => String,
|
|
'Stacks' => [
|
|
{
|
|
'CreationTime' => Time,
|
|
'DisableRollback' => Fog::Boolean,
|
|
'Outputs' => [
|
|
{
|
|
'OutputKey' => String,
|
|
'OutputValue' => String
|
|
}
|
|
],
|
|
'Parameters' => [
|
|
{
|
|
'ParameterKey' => String,
|
|
'ParameterValue' => String,
|
|
}
|
|
],
|
|
'StackId' => String,
|
|
'StackName' => String,
|
|
'StackStatus' => String,
|
|
}
|
|
]
|
|
}
|
|
|
|
@describe_stack_events_format = {
|
|
'RequestId' => String,
|
|
'StackEvents' => [
|
|
{
|
|
'EventId' => String,
|
|
'LogicalResourceId' => String,
|
|
'PhysicalResourceId' => String,
|
|
'ResourceProperties' => String,
|
|
'ResourceStatus' => String,
|
|
'ResourceStatusReason' => Fog::Nullable::String,
|
|
'ResourceType' => String,
|
|
'StackId' => String,
|
|
'StackName' => String,
|
|
'Timestamp' => Time
|
|
}
|
|
]
|
|
}
|
|
|
|
@describe_stack_resources_format = {
|
|
'RequestId' => String,
|
|
'StackResources' => [
|
|
{
|
|
'LogicalResourceId' => String,
|
|
'PhysicalResourceId' => String,
|
|
'ResourceStatus' => String,
|
|
'ResourceType' => String,
|
|
'StackId' => String,
|
|
'StackName' => String,
|
|
'Timestamp' => Time
|
|
}
|
|
]
|
|
}
|
|
|
|
tests('success') do
|
|
|
|
unless Fog.mocking?
|
|
@stack_name = 'fogstack' << Time.now.to_i.to_s
|
|
@keypair = Fog::Compute[:aws].key_pairs.create(:name => 'cloudformation')
|
|
@template_url = 'https://s3.amazonaws.com/cloudformation-templates-us-east-1/EC2InstanceSample-1.0.0.template'
|
|
end
|
|
|
|
tests("validate_template('TemplateURL' => '#{@template_url}')").formats(@validate_template_format) do
|
|
pending if Fog.mocking?
|
|
Fog::AWS[:cloud_formation].validate_template('TemplateURL' => @template_url).body
|
|
end
|
|
|
|
tests("create_stack('#{@stack_name}', 'TemplateURL' => '#{@template_url}', Parameters => {'KeyName' => 'cloudformation'})").formats(@create_stack_format) do
|
|
pending if Fog.mocking?
|
|
Fog::AWS[:cloud_formation].create_stack(
|
|
@stack_name,
|
|
'TemplateURL' => @template_url,
|
|
'Parameters' => {'KeyName' => 'cloudformation'}
|
|
).body
|
|
end
|
|
|
|
tests("update_stack('#{@stack_name}', 'TemplateURL' => '#{@template_url}', Parameters => {'KeyName' => 'cloudformation'})").formats(@update_stack_format) do
|
|
pending if Fog.mocking?
|
|
Fog::AWS[:cloud_formation].update_stack(
|
|
@stack_name,
|
|
'TemplateURL' => @template_url,
|
|
'Parameters' => {'KeyName' => 'cloudformation'}
|
|
).body
|
|
end
|
|
|
|
tests("get_template('#{@stack_name})").formats(@get_template_format) do
|
|
pending if Fog.mocking?
|
|
Fog::AWS[:cloud_formation].get_template(@stack_name).body
|
|
end
|
|
|
|
tests("describe_stacks").formats(@describe_stacks_format) do
|
|
pending if Fog.mocking?
|
|
Fog::AWS[:cloud_formation].describe_stacks.body
|
|
end
|
|
|
|
sleep(1) # avoid throttling
|
|
|
|
tests("describe_stack_events('#{@stack_name}')").formats(@describe_stack_events_format) do
|
|
pending if Fog.mocking?
|
|
Fog::AWS[:cloud_formation].describe_stack_events(@stack_name).body
|
|
end
|
|
|
|
tests("describe_stack_resources('StackName' => '#{@stack_name}')").formats(@describe_stack_resources_format) do
|
|
pending if Fog.mocking?
|
|
Fog::AWS[:cloud_formation].describe_stack_resources('StackName' => @stack_name).body
|
|
end
|
|
|
|
tests("delete_stack('#{@stack_name}')").succeeds do
|
|
pending if Fog.mocking?
|
|
Fog::AWS[:cloud_formation].delete_stack(@stack_name)
|
|
end
|
|
|
|
tests("list_stacks").succeeds do
|
|
pending if Fog.mocking?
|
|
Fog::AWS[:cloud_formation].list_stacks.body
|
|
end
|
|
|
|
tests("list_stack_resources").succeeds do
|
|
pending if Fog.mocking?
|
|
Fog::AWS[:cloud_formation].list_stack_resources("StackName"=>@stack_name).body
|
|
end
|
|
|
|
unless Fog.mocking?
|
|
@keypair.destroy
|
|
end
|
|
|
|
end
|
|
|
|
tests('failure') do
|
|
|
|
end
|
|
|
|
end
|