From 6827b639d4e25b193d18ba3ec5398a115d963481 Mon Sep 17 00:00:00 2001 From: Vojtech Polasek Date: Tue, 20 Dec 2022 13:47:58 +0100 Subject: [PATCH 1/2] raise anexception if invalid argument to templated platform is supplied and list available arguments --- ssg/build_cpe.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ssg/build_cpe.py b/ssg/build_cpe.py index 4da730050d7..c771cbc9b84 100644 --- a/ssg/build_cpe.py +++ b/ssg/build_cpe.py @@ -210,7 +210,13 @@ def create_resolved_cpe_item_for_fact_ref(self, fact_ref): if not self.versioned: raise ValueError("CPE entity '{0}' does not support version specifiers: " "{1}".format(self.id_, fact_ref.cpe_name)) - resolved_parameters = self.args[fact_ref.arg] + try: + resolved_parameters = self.args[fact_ref.arg] + except KeyError: + raise KeyError( + "The {0} CPE item does not support the argument {1}. " + "Following arguments are supported: {2}".format( + self.id_, fact_ref.arg, [a for a in self.args.keys()])) resolved_parameters.update(fact_ref.as_dict()) cpe_item_as_dict = self.represent_as_dict() cpe_item_as_dict["args"] = None From a6492cf2c8539dba50bb0791a94ae7633c4ff55a Mon Sep 17 00:00:00 2001 From: Vojtech Polasek Date: Tue, 20 Dec 2022 14:07:04 +0100 Subject: [PATCH 2/2] test platform with invalid argument --- tests/unit/ssg-module/test_build_yaml.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/unit/ssg-module/test_build_yaml.py b/tests/unit/ssg-module/test_build_yaml.py index 12af3c1ee68..e62079ef100 100644 --- a/tests/unit/ssg-module/test_build_yaml.py +++ b/tests/unit/ssg-module/test_build_yaml.py @@ -379,6 +379,10 @@ def test_parametrized_platform(product_cpes): assert cpe_item.title == "Package ntp is installed" assert cpe_item.check_id == "installed_env_has_ntp_package" +def test_parametrized_platform_with_invalid_argument(product_cpes): + with pytest.raises(KeyError): + platform = ssg.build_yaml.Platform.from_text("package[nonexisting_argument]", product_cpes) + def test_derive_id_from_file_name(): assert ssg.entities.common.derive_id_from_file_name("rule.yml") == "rule"