1
0
Fork 0
mirror of https://github.com/fog/fog-aws.git synced 2022-11-09 13:50:52 -05:00
fog--fog-aws/tests/requests/cloud_formation/stack_tests.rb
2015-01-02 09:42:20 -08:00

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