From b410b2b1e4041526b11085e270a63f2a19887aa4 Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Sep 26 2017 14:47:58 +0000 Subject: Fallback to message['headers']['message-id'] if msg_id not defined. --- diff --git a/freshmaker/consumer.py b/freshmaker/consumer.py index c3ffca3..5c73173 100644 --- a/freshmaker/consumer.py +++ b/freshmaker/consumer.py @@ -110,6 +110,17 @@ class FreshmakerConsumer(fedmsg.consumers.FedmsgConsumer): raise ValueError( 'The messaging format "{}" is not supported'.format(conf.messaging)) + # Fallback to message['headers']['message-id'] if msg_id not defined. + if ('msg_id' not in message and + 'headers' in message and + "message-id" in message['headers']): + message['msg_id'] = message['headers']['message-id'] + + if 'msg_id' not in message: + raise ValueError( + 'Received message does not contain "msg_id" or "message-id": ' + '%r' % (message)) + return events.BaseEvent.from_fedmsg(message['topic'], message) def process_event(self, msg): diff --git a/tests/test_consumer.py b/tests/test_consumer.py index 9692a40..0903793 100644 --- a/tests/test_consumer.py +++ b/tests/test_consumer.py @@ -103,6 +103,50 @@ class ParseBrewSignRPMEventTest(ConsumerBaseTest): self.assertEqual('fake-msg-id', msg.msg_id) self.assertEqual('openshift-ansible-3.3.1.32-1.git.0.3b74dea.el7', msg.nvr) + @mock.patch('freshmaker.events.conf.parsers', + new=['freshmaker.parsers.brew.sign_rpm:BrewSignRpmParser']) + @mock.patch("freshmaker.consumer.get_global_consumer") + def test_get_internal_event_parser_no_msg_id_fallback( + self, get_global_consumer): + consumer = self._create_consumer() + get_global_consumer.return_value = consumer + + msg = { + 'topic': '/topic/VirtualTopic.eng.brew.sign.rpm', + 'msg': { + 'build': { + 'id': 562101, + 'nvr': 'openshift-ansible-3.3.1.32-1.git.0.3b74dea.el7', + } + }, + 'headers': { + 'message-id': 'fake-msg-id', + } + } + msg = consumer.get_abstracted_msg(msg) + self.assertIsInstance(msg, BrewSignRPMEvent) + self.assertEqual('fake-msg-id', msg.msg_id) + self.assertEqual('openshift-ansible-3.3.1.32-1.git.0.3b74dea.el7', msg.nvr) + + @mock.patch('freshmaker.events.conf.parsers', + new=['freshmaker.parsers.brew.sign_rpm:BrewSignRpmParser']) + @mock.patch("freshmaker.consumer.get_global_consumer") + def test_get_internal_event_parser_no_msg( + self, get_global_consumer): + consumer = self._create_consumer() + get_global_consumer.return_value = consumer + + msg = { + 'topic': '/topic/VirtualTopic.eng.brew.sign.rpm', + 'msg': { + 'build': { + 'id': 562101, + 'nvr': 'openshift-ansible-3.3.1.32-1.git.0.3b74dea.el7', + } + } + } + + self.assertRaises(ValueError, consumer.get_abstracted_msg, msg) if __name__ == '__main__': unittest.main()