From e5735efc76f144f8b1d0ac4cadad573266d4941f Mon Sep 17 00:00:00 2001 From: Valerij Maljulin Date: Aug 07 2019 12:17:39 +0000 Subject: Skip prefix validation for modules in allowed_privileged_module_names and base_module_names Signed-off-by: Valerij Maljulin --- diff --git a/module_build_service/utils/general.py b/module_build_service/utils/general.py index 71823d5..dfafba3 100644 --- a/module_build_service/utils/general.py +++ b/module_build_service/utils/general.py @@ -230,6 +230,16 @@ def validate_koji_tag(tag_arg_names, pre="", post="-", dict_key="name"): def wrapper(*args, **kwargs): call_args = inspect.getcallargs(function, *args, **kwargs) + # if module name is in allowed_privileged_module_names or base_module_names lists + # we don't have to validate it since they could use an arbitrary Koji tag + try: + if call_args['self'].module_str in \ + conf.allowed_privileged_module_names + conf.base_module_names: + # skip validation + return function(*args, **kwargs) + except (AttributeError, KeyError): + pass + for tag_arg_name in tag_arg_names: err_subject = "Koji tag validation:" diff --git a/tests/test_utils/test_utils.py b/tests/test_utils/test_utils.py index 7897afe..fd11623 100644 --- a/tests/test_utils/test_utils.py +++ b/tests/test_utils/test_utils.py @@ -759,6 +759,20 @@ class TestUtils: validate_koji_tag_is_None(None) assert str(cm.value).endswith(" No value provided.") is True + @patch( + "module_build_service.config.Config.allowed_privileged_module_names", + new_callable=mock.PropertyMock, + return_value=["testmodule"], + ) + def test_validate_koji_tag_previleged_module_name(self, conf_apmn): + @module_build_service.utils.validate_koji_tag("tag_arg") + def validate_koji_tag_priv_mod_name(self, tag_arg): + pass + + builder = mock.MagicMock() + builder.module_str = 'testmodule' + validate_koji_tag_priv_mod_name(builder, "abc") + @patch("module_build_service.scm.SCM") def test_record_component_builds_duplicate_components(self, mocked_scm, db_session): clean_database()