From d2b3eace3d2a800cf47221f79963661996b25598 Mon Sep 17 00:00:00 2001 From: mprahl Date: Wed, 4 Mar 2020 15:28:03 -0500 Subject: [PATCH] Handle when a message parser returns None mbs-messaging-umb is such a parser that returns None if a message does not match the schema it is validating against. --- module_build_service/scheduler/consumer.py | 2 ++ tests/test_scheduler/test_consumer.py | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/module_build_service/scheduler/consumer.py b/module_build_service/scheduler/consumer.py index c242666f..49b88baa 100644 --- a/module_build_service/scheduler/consumer.py +++ b/module_build_service/scheduler/consumer.py @@ -128,6 +128,8 @@ class MBSConsumer(fedmsg.consumers.FedmsgConsumer): super(MBSConsumer, self).validate(message) def validate_event(self, event): + if event is None: + raise IgnoreMessage("Ignoring the message since it is null") # task_id is required for koji_build_change event if event["event"] == "koji_build_change" and event["task_id"] is None: raise IgnoreMessage( diff --git a/tests/test_scheduler/test_consumer.py b/tests/test_scheduler/test_consumer.py index f7405c59..afd0fc60 100644 --- a/tests/test_scheduler/test_consumer.py +++ b/tests/test_scheduler/test_consumer.py @@ -3,7 +3,9 @@ from __future__ import absolute_import from mock import patch, MagicMock +import pytest +from module_build_service.common.errors import IgnoreMessage from module_build_service.scheduler import events from module_build_service.scheduler.consumer import MBSConsumer @@ -102,3 +104,9 @@ class TestConsumer: consumer.get_abstracted_event_info.return_value = event consumer.consume({}) assert process_message.call_count == 0 + + def test_validate_event_none_msg(self): + hub = MagicMock(config={}) + consumer = MBSConsumer(hub) + with pytest.raises(IgnoreMessage): + consumer.validate_event(None)