From 98500137c1625317b6ef8e5abacc3e3ffa9d320d Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Sep 27 2017 10:37:18 +0000 Subject: Allow whitelisting/blacklisting certain artifacts globally for all handlers. --- diff --git a/freshmaker/handlers/__init__.py b/freshmaker/handlers/__init__.py index 2887860..1f614a6 100644 --- a/freshmaker/handlers/__init__.py +++ b/freshmaker/handlers/__init__.py @@ -134,9 +134,14 @@ class BaseHandler(object): in_whitelist = True in_blacklist = False + # Global rules + whitelist_rules = conf.handler_build_whitelist.get("global", {}) + blacklist_rules = conf.handler_build_blacklist.get("global", {}) + + # This handler rules handler_name = self.name - whitelist_rules = conf.handler_build_whitelist.get(handler_name, {}) - blacklist_rules = conf.handler_build_blacklist.get(handler_name, {}) + whitelist_rules.update(conf.handler_build_whitelist.get(handler_name, {})) + blacklist_rules.update(conf.handler_build_blacklist.get(handler_name, {})) def match_rule(kwargs, rule): for key, value in kwargs.items(): diff --git a/tests/test_brew_sign_rpm_handler.py b/tests/test_brew_sign_rpm_handler.py index 9815afa..d3ae333 100644 --- a/tests/test_brew_sign_rpm_handler.py +++ b/tests/test_brew_sign_rpm_handler.py @@ -58,6 +58,48 @@ class TestBrewSignHandler(unittest.TestCase): @patch('freshmaker.errata.Errata.builds_signed') @patch("freshmaker.config.Config.handler_build_whitelist", new_callable=PropertyMock, return_value={ + "global": {"image": [{"advisory_name": "RHSA-.*"}]}}) + def test_allow_build_false_global(self, handler_build_whitelist, + builds_signed, advisories_from_event): + """ + Tests that allow_build filters out advisories based on advisory_name. + """ + advisories_from_event.return_value = [ + ErrataAdvisory(123, "RHBA-2017", "REL_PREP")] + builds_signed.return_value = False + + event = MagicMock() + handler = BrewSignRPMHandler() + ret = handler.handle(event) + + self.assertTrue(not ret) + builds_signed.assert_not_called() + + @patch('freshmaker.errata.Errata.advisories_from_event') + @patch('freshmaker.errata.Errata.builds_signed') + @patch("freshmaker.config.Config.handler_build_whitelist", + new_callable=PropertyMock, return_value={ + "global": {"image": [{"advisory_name": "RHSA-.*"}]}}) + def test_allow_build_true_global(self, handler_build_whitelist, + builds_signed, advisories_from_event): + """ + Tests that allow_build does not filter out advisories based on + advisory_name. + """ + advisories_from_event.return_value = [ + ErrataAdvisory(123, "RHSA-2017", "REL_PREP")] + builds_signed.return_value = False + + event = MagicMock() + handler = BrewSignRPMHandler() + handler.handle(event) + + builds_signed.assert_called_once() + + @patch('freshmaker.errata.Errata.advisories_from_event') + @patch('freshmaker.errata.Errata.builds_signed') + @patch("freshmaker.config.Config.handler_build_whitelist", + new_callable=PropertyMock, return_value={ "BrewSignRPMHandler": {"image": [{"advisory_name": "RHSA-.*"}]}}) def test_allow_build_false(self, handler_build_whitelist, builds_signed, advisories_from_event):