require "helper" require "inspec/resource" require "resources/aws/aws_iam_groups" require "resource_support/aws" # MAIGPB = MockAwsIamGroupsPluralBackend # Abbreviation not used outside this file #=============================================================================# # Constructor Tests #=============================================================================# class AwsIamGroupsConstructorTest < Minitest::Test def setup AwsIamGroups::BackendFactory.select(MAIGPB::Empty) end def test_empty_params_ok AwsIamGroups.new end def test_rejects_unrecognized_params assert_raises(ArgumentError) { AwsIamGroups.new(shoe_size: 9) } end end #=============================================================================# # Search / Recall #=============================================================================# class AwsIamGroupsRecallEmptyTest < Minitest::Test def setup AwsIamGroups::BackendFactory.select(MAIGPB::Empty) end def test_search_miss_via_empty_groups refute AwsIamGroups.new.exist? end end class AwsIamGroupsRecallBasicTest < Minitest::Test def setup AwsIamGroups::BackendFactory.select(MAIGPB::Basic) end def test_search_hit_via_empty_query assert AwsIamGroups.new.exist? end end #=============================================================================# # Test Fixtures #=============================================================================# module MAIGPB class Empty < AwsBackendBase def list_groups(query = {}) OpenStruct.new({ groups: [] }) end end class Basic < AwsBackendBase def list_groups(query = {}) fixtures = [ OpenStruct.new({ path: "/", group_name: "Administrator", group_id: "AGPAQWERQWERQWERQWERQ", arn: "arn:aws:iam::111111111111:group/Administrator", create_date: DateTime.parse("2017-12-14 05:29:57 UTC"), }), OpenStruct.new({ path: "/", group_name: "AmazonEC2ReadOnlyAccess", group_id: "AGPAASDFASDFASDFASDFA", arn: "arn:aws:iam::111111111111:group/AmazonEC2ReadOnlyAccess", create_date: DateTime.parse("2017-12-15 17:37:14 UTC"), }), ] if query[:path_prefix].nil? selected = fixtures else selected = fixtures.select do |group| group[:path].start_with? query[:path_prefix] end end OpenStruct.new({ groups: selected }) end end end