From 00064da17e8aa38bacbc1b88c57b4a04ddb375af Mon Sep 17 00:00:00 2001 From: Kevin DeJong Date: Thu, 7 Nov 2024 11:48:22 -0800 Subject: [PATCH 1/2] Fix issue with resource types when condition is t/f --- src/cfnlint/rules/resources/ResourceType.py | 2 +- test/unit/rules/resources/test_type.py | 28 +++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/cfnlint/rules/resources/ResourceType.py b/src/cfnlint/rules/resources/ResourceType.py index 8696202476..2861d9ffe3 100644 --- a/src/cfnlint/rules/resources/ResourceType.py +++ b/src/cfnlint/rules/resources/ResourceType.py @@ -38,7 +38,7 @@ def validate(self, validator: Validator, keywords: Any, instance: Any, schema: A if validator.is_type(resource_condition, "string"): if validator.cfn is None: continue - if False in validator.cfn.conditions.build_scenerios_on_region( + if [False] == validator.cfn.conditions.build_scenerios_on_region( resource_condition, region ): continue diff --git a/test/unit/rules/resources/test_type.py b/test/unit/rules/resources/test_type.py index 1415d244a2..ed220ae5a5 100644 --- a/test/unit/rules/resources/test_type.py +++ b/test/unit/rules/resources/test_type.py @@ -76,3 +76,31 @@ def test_types_with_conditions_false(self, cfn): ) self.assertListEqual(errors, [], errors) + + @patch("cfnlint.template.Template", autospec=True) + def test_types_with_conditions_false_and_true(self, cfn): + cfn = Mock() + cfn.conditions = Mock() + cfn.conditions.build_scenerios_on_region.return_value = [True, False] + validator = CfnTemplateValidator({}).evolve(cfn=cfn) + errors = list( + self.rule.validate( + validator, + "cfnResources", + {"Type": "Foo::Bar::Type", "Condition": "IsUsEast1"}, + {}, + ) + ) + + self.assertListEqual( + errors, + [ + ValidationError( + "Resource type 'Foo::Bar::Type' does not exist in 'us-east-1'", + path=deque(["Type"]), + schema_path=deque([]), + rule=ResourceType(), + ), + ], + errors, + ) From 452073cfe82dc1217d2bc57ade28c88fc683021c Mon Sep 17 00:00:00 2001 From: Kevin DeJong Date: Thu, 7 Nov 2024 11:53:56 -0800 Subject: [PATCH 2/2] Update to logic --- src/cfnlint/rules/resources/ResourceType.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cfnlint/rules/resources/ResourceType.py b/src/cfnlint/rules/resources/ResourceType.py index 2861d9ffe3..bb38f06c0c 100644 --- a/src/cfnlint/rules/resources/ResourceType.py +++ b/src/cfnlint/rules/resources/ResourceType.py @@ -38,7 +38,7 @@ def validate(self, validator: Validator, keywords: Any, instance: Any, schema: A if validator.is_type(resource_condition, "string"): if validator.cfn is None: continue - if [False] == validator.cfn.conditions.build_scenerios_on_region( + if True not in validator.cfn.conditions.build_scenerios_on_region( resource_condition, region ): continue