diff --git a/intelmq/lib/bot_debugger.py b/intelmq/lib/bot_debugger.py index 308ab4db5..4cc8ca58a 100644 --- a/intelmq/lib/bot_debugger.py +++ b/intelmq/lib/bot_debugger.py @@ -210,7 +210,10 @@ def new_get_runtime(*args, **kwargs): if bot_id == "global": config[bot_id]["logging_level"] = logging_level else: - config[bot_id]['parameters']["logging_level"] = logging_level + parameters = config[bot_id].get('parameters') + if parameters is None: + parameters = config[bot_id]['parameters'] = {} + parameters["logging_level"] = logging_level if "global" not in config: config["global"] = {"logging_level": logging_level} return config diff --git a/intelmq/tests/lib/test_bot_debugger.py b/intelmq/tests/lib/test_bot_debugger.py new file mode 100644 index 000000000..9d5d0a31d --- /dev/null +++ b/intelmq/tests/lib/test_bot_debugger.py @@ -0,0 +1,43 @@ +# SPDX-FileCopyrightText: 2026 Mirochill +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +# -*- coding: utf-8 -*- + +import unittest +from unittest import mock + +from intelmq.lib import utils +from intelmq.lib.bot_debugger import BotDebugger + + +class TestBotDebugger(unittest.TestCase): + + def test_generate_get_runtime_adds_missing_parameters(self): + runtime = { + "collector": {"module": "intelmq.bots.collectors.http.collector_http"}, + "parser": { + "module": "intelmq.bots.parsers.generic.parser_csv", + "parameters": None, + }, + "expert": { + "module": "intelmq.bots.experts.filter.expert", + "parameters": {"field": "source.ip"}, + }, + } + debugger = BotDebugger.__new__(BotDebugger) + + with mock.patch.object(utils, "load_configuration", return_value=runtime): + config = debugger.generate_get_runtime("DEBUG")() + + self.assertEqual(config["collector"]["parameters"], {"logging_level": "DEBUG"}) + self.assertEqual(config["parser"]["parameters"], {"logging_level": "DEBUG"}) + self.assertEqual( + config["expert"]["parameters"], + {"field": "source.ip", "logging_level": "DEBUG"}, + ) + self.assertEqual(config["global"], {"logging_level": "DEBUG"}) + + +if __name__ == '__main__': # pragma: no cover + unittest.main()