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.
This commit is contained in:
mprahl
2020-03-04 15:28:03 -05:00
parent 841a64a757
commit d2b3eace3d
2 changed files with 10 additions and 0 deletions

View File

@@ -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(

View File

@@ -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)