inspec/test/unit/resources/aws_ecs_cluster_test.rb
Ryan Davis adaf2bc364 Removed aws resource requiring from test/helper and inspec/resource.
This speeds up parallel unit test runs from a very consistent 2:49 to
a very consistent 1:53, or a 33% reduction.

Signed-off-by: Ryan Davis <zenspider@chef.io>
2019-05-29 17:58:02 -07:00

188 lines
5.5 KiB
Ruby

require 'helper'
require 'resource_support/aws'
require 'resources/aws/aws_ecs_cluster'
# MAECSB = MockAwsEcsClusterSingularBackend
# Abbreviation not used outside this file
#=============================================================================#
# Constructor Tests
#=============================================================================#
class AwsEcsClusterConstructorTest < Minitest::Test
def setup
AwsEcsCluster::BackendFactory.select(MAECSB::Basic)
end
def test_empty_default_cluster
AwsEcsCluster.new
end
def test_string_accepted
AwsEcsCluster.new 'my-cluster'
end
def test_hash_accepted
AwsEcsCluster.new cluster_name: 'my-cluster'
end
def test_rejects_unrecognized_params
assert_raises(ArgumentError) { AwsEcsCluster.new(shoe_size: 9) }
end
end
#=============================================================================#
# Search / Recall
#=============================================================================#
class AwsEcsClusterFilterCriteriaTest < Minitest::Test
def setup
AwsEcsCluster::BackendFactory.select(MAECSB::Basic)
end
def test_default
cluster = AwsEcsCluster.new
assert cluster.exists?
assert_equal('default', cluster.cluster_name)
end
def test_search_miss
refute AwsEcsCluster.new('nonesuch').exists?
end
def test_accepts_cluster_name_as_string
cluster = AwsEcsCluster.new 'kangaroo'
assert cluster.exists?
assert_equal('kangaroo', cluster.cluster_name)
end
def test_accepts_cluster_name_as_hash
cluster = AwsEcsCluster.new cluster_name: 'kangaroo'
assert cluster.exists?
assert_equal('kangaroo', cluster.cluster_name)
end
end
#=============================================================================#
# Properties
#=============================================================================#
class AwsEcsClusterProperties < Minitest::Test
def setup
AwsEcsCluster::BackendFactory.select(MAECSB::Basic)
@default = AwsEcsCluster.new
@roo = AwsEcsCluster.new('kangaroo')
@miss = AwsEcsCluster.new('nonesuch')
end
def test_property_with_cluster_arn
assert_equal('arn:aws:ecs:ab-region-1:123456789:cluster/default', @default.cluster_arn)
assert_equal('arn:aws:ecs:ab-region-1:123456789:cluster/kangaroo', @roo.cluster_arn)
assert_empty(@miss.cluster_arn)
end
def test_property_with_cluster_name
assert_equal('default', @default.cluster_name)
assert_equal('kangaroo', @roo.cluster_name)
assert_empty(@miss.cluster_name)
end
def test_property_with_status
assert_equal('ACTIVE', @default.status)
assert_equal('ACTIVE', @roo.status)
assert_empty(@miss.status)
end
def test_property_with_registered_container_instances_count
assert_equal(0, @default.registered_container_instances_count)
assert_equal(3, @roo.registered_container_instances_count)
assert_equal(0, @miss.registered_container_instances_count)
end
def test_property_with_running_tasks_count
assert_equal(0, @default.running_tasks_count)
assert_equal(10, @roo.running_tasks_count)
assert_equal(0, @miss.running_tasks_count)
end
def test_property_with_pending_tasks_count
assert_equal(0, @default.pending_tasks_count)
assert_equal(2, @roo.pending_tasks_count)
assert_equal(0, @miss.pending_tasks_count)
end
def test_property_with_active_services_count
assert_equal(0, @default.active_services_count)
assert_equal(4, @roo.active_services_count)
assert_equal(0, @miss.active_services_count)
end
def test_property_with_statistics
assert_empty(@default.statistics)
assert_empty(@roo.statistics)
assert_empty(@miss.statistics)
end
end
#=============================================================================#
# Test Fixtures
#=============================================================================#
module MAECSB
class Basic < AwsBackendBase
def describe_clusters(query = {})
clusters = {
'default' => Aws::ECS::Types::Cluster.new(
cluster_arn: 'arn:aws:ecs:ab-region-1:123456789:cluster/default',
cluster_name: 'default',
status: 'ACTIVE',
registered_container_instances_count: 0,
running_tasks_count: 0,
pending_tasks_count: 0,
active_services_count: 0,
statistics: []
),
'kangaroo' => Aws::ECS::Types::Cluster.new(
cluster_arn: 'arn:aws:ecs:ab-region-1:123456789:cluster/kangaroo',
cluster_name: 'kangaroo',
status: 'ACTIVE',
registered_container_instances_count: 3,
running_tasks_count: 10,
pending_tasks_count: 2,
active_services_count: 4,
statistics: []
)
}
if query[:clusters]
clstrs = []
failures = []
query[:clusters].each do |cluster_name|
if clusters.key?(cluster_name)
clstrs.push(clusters[cluster_name])
else
failures.push(Aws::ECS::Types::Failure.new(
arn: "arn:aws:ecs:ab-region-1:123456789:cluster/#{cluster_name}",
reason: "MISSING"
))
end
end
Aws::ECS::Types::DescribeClustersResponse.new(
clusters: clstrs,
failures: failures,
)
else
Aws::ECS::Types::DescribeClustersResponse.new(
clusters: [
clusters['default']
],
failures: [],
)
end
end
end
end