mirror of
https://github.com/fog/fog-aws.git
synced 2022-11-09 13:50:52 -05:00
145 lines
5.6 KiB
Ruby
145 lines
5.6 KiB
Ruby
require 'fog/json'
|
|
|
|
Shindo.tests('AWS::ECS | task requests', ['aws', 'ecs']) do
|
|
|
|
Fog::AWS[:ecs].reset_data
|
|
|
|
tests('success') do
|
|
|
|
tests("#list_tasks").formats(AWS::ECS::Formats::LIST_TASKS) do
|
|
result = Fog::AWS[:ecs].list_tasks.body
|
|
list_instances_arns = result['ListTasksResult']['taskArns']
|
|
returns(true) { list_instances_arns.empty? }
|
|
result
|
|
end
|
|
|
|
tests("#run_task").formats(AWS::ECS::Formats::RUN_TASK) do
|
|
task_def_params = Fog::JSON.decode(IO.read(AWS::ECS::Samples::TASK_DEFINITION_1))
|
|
result1 = Fog::AWS[:ecs].register_task_definition(task_def_params).body
|
|
task_def = result1['RegisterTaskDefinitionResult']['taskDefinition']
|
|
task_def_arn = task_def['taskDefinitionArn']
|
|
|
|
result2 = Fog::AWS[:ecs].run_task('taskDefinition' => task_def_arn).body
|
|
task = result2['RunTaskResult']['tasks'].first
|
|
returns(true) { task.has_key?('containerInstanceArn') }
|
|
returns(true) { task['containers'].size.eql?(2) }
|
|
returns(true) { task['desiredStatus'].eql?('RUNNING') }
|
|
returns(true) { task['taskDefinitionArn'].eql?(task_def_arn) }
|
|
result2
|
|
end
|
|
|
|
tests("#describe_tasks").formats(AWS::ECS::Formats::DESCRIBE_TASKS) do
|
|
result1 = Fog::AWS[:ecs].list_tasks.body
|
|
task_arn = result1['ListTasksResult']['taskArns'].first
|
|
|
|
result2 = Fog::AWS[:ecs].describe_tasks('tasks' => task_arn).body
|
|
task = result2['DescribeTasksResult']['tasks'].first
|
|
returns(true) { task['taskArn'].eql?(task_arn) }
|
|
returns(true) { task['containers'].size.eql?(2) }
|
|
returns(true) { task['desiredStatus'].eql?('RUNNING') }
|
|
result2
|
|
end
|
|
|
|
tests("#list_tasks").formats(AWS::ECS::Formats::LIST_TASKS) do
|
|
result = Fog::AWS[:ecs].list_tasks.body
|
|
list_instances_arns = result['ListTasksResult']['taskArns']
|
|
returns(false) { list_instances_arns.empty? }
|
|
result
|
|
end
|
|
|
|
tests("#stop_task").formats(AWS::ECS::Formats::STOP_TASK) do
|
|
result1 = Fog::AWS[:ecs].list_tasks.body
|
|
task_arn = result1['ListTasksResult']['taskArns'].first
|
|
|
|
result2 = Fog::AWS[:ecs].stop_task('task' => task_arn).body
|
|
task = result2['StopTaskResult']['task']
|
|
returns(true) { task['taskArn'].eql?(task_arn) }
|
|
returns(true) { task['containers'].size.eql?(2) }
|
|
returns(true) { task['desiredStatus'].eql?('STOPPED') }
|
|
result2
|
|
end
|
|
|
|
tests("#start_task").formats(AWS::ECS::Formats::START_TASK) do
|
|
owner_id = Fog::AWS::Mock.owner_id
|
|
container_instance_path = "container-instance/#{Fog::UUID.uuid}"
|
|
region = "us-east-1"
|
|
container_instance_arn = Fog::AWS::Mock.arn('ecs', owner_id, container_instance_path, region)
|
|
|
|
task_def_params = Fog::JSON.decode(IO.read(AWS::ECS::Samples::TASK_DEFINITION_1))
|
|
result1 = Fog::AWS[:ecs].register_task_definition(task_def_params).body
|
|
task_def = result1['RegisterTaskDefinitionResult']['taskDefinition']
|
|
task_def_arn = task_def['taskDefinitionArn']
|
|
|
|
result2 = Fog::AWS[:ecs].start_task(
|
|
'taskDefinition' => task_def_arn,
|
|
'containerInstances' => container_instance_arn
|
|
).body
|
|
task = result2['StartTaskResult']['tasks'].first
|
|
|
|
returns(true) { task['containerInstanceArn'].eql?(container_instance_arn) }
|
|
returns(true) { task['containers'].size.eql?(2) }
|
|
returns(true) { task['desiredStatus'].eql?('RUNNING') }
|
|
returns(true) { task['taskDefinitionArn'].eql?(task_def_arn) }
|
|
|
|
result2
|
|
end
|
|
|
|
tests("#list_tasks").formats(AWS::ECS::Formats::LIST_TASKS) do
|
|
result = Fog::AWS[:ecs].list_tasks.body
|
|
list_instances_arns = result['ListTasksResult']['taskArns']
|
|
returns(false) { list_instances_arns.empty? }
|
|
result
|
|
end
|
|
|
|
end
|
|
|
|
tests('failures') do
|
|
|
|
tests("#describe_tasks nonexistent") do
|
|
task_arn = "arn:aws:ecs:us-west-2:938269302734:task/6893440f-2165-47aa-8cfa-b2f413a26f00"
|
|
result = Fog::AWS[:ecs].describe_tasks('tasks' => task_arn).body
|
|
end
|
|
|
|
tests('describe_tasks without params').raises(Fog::AWS::ECS::Error) do
|
|
response = Fog::AWS[:ecs].describe_tasks.body
|
|
end
|
|
|
|
tests('#run_task without params').raises(Fog::AWS::ECS::Error) do
|
|
response = Fog::AWS[:ecs].run_task.body
|
|
end
|
|
|
|
tests('#run_task nonexistent').raises(Fog::AWS::ECS::Error) do
|
|
task_def_arn = "arn:aws:ecs:us-west-2:539573770077:task-definition/foo-xanadu-app-static:33"
|
|
response = Fog::AWS[:ecs].run_task('taskDefinition' => task_def_arn).body
|
|
end
|
|
|
|
tests('#start_task without params').raises(Fog::AWS::ECS::Error) do
|
|
response = Fog::AWS[:ecs].start_task.body
|
|
end
|
|
|
|
tests('#start_task with missing params').raises(Fog::AWS::ECS::Error) do
|
|
task_def_arn = "arn:aws:ecs:us-west-2:539573770077:task-definition/foo-xanadu-app-static:33"
|
|
response = Fog::AWS[:ecs].start_task('taskDefinition' => task_def_arn).body
|
|
end
|
|
|
|
tests('#start_task nonexistent').raises(Fog::AWS::ECS::Error) do
|
|
task_def_arn = "arn:aws:ecs:us-west-2:539573770077:task-definition/foo-xanadu-app-static:33"
|
|
container_instance_arn = "arn:aws:ecs:us-west-2:938269302734:container-instance/6893440f-2165-47aa-8cfa-b2f413a26f00"
|
|
response = Fog::AWS[:ecs].start_task(
|
|
'taskDefinition' => task_def_arn,
|
|
'containerInstances' => container_instance_arn
|
|
).body
|
|
end
|
|
|
|
tests('#stop_task without params').raises(Fog::AWS::ECS::Error) do
|
|
response = Fog::AWS[:ecs].stop_task.body
|
|
end
|
|
|
|
tests('#stop_task nonexistent params').raises(Fog::AWS::ECS::Error) do
|
|
task_arn = "arn:aws:ecs:us-west-2:938269302734:task/6893440f-2165-47aa-8cfa-b2f413a26f00"
|
|
response = Fog::AWS[:ecs].stop_task('task' => task_arn).body
|
|
end
|
|
|
|
end
|
|
|
|
end
|