diff --git a/lpmqtt/daemon.py b/lpmqtt/daemon.py index 1043fa7..f009da0 100644 --- a/lpmqtt/daemon.py +++ b/lpmqtt/daemon.py @@ -49,7 +49,7 @@ def process_event(event, base_topic): pieces = [base_topic] if 'project' in event: pieces.append(event['project']) - if 'event_type' in event: + if 'event-type' in event: pieces.append(event['event-type']) if 'bug-number' in event: pieces.append(event['bug-number']) diff --git a/lpmqtt/tests/base.py b/lpmqtt/tests/base.py new file mode 100644 index 0000000..a346f8d --- /dev/null +++ b/lpmqtt/tests/base.py @@ -0,0 +1,36 @@ +# Copyright (c) 2016 Hewlett-Packard Development Company, L.P. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os + +import fixtures +import testtools + + +class TestCase(testtools.TestCase): + true = ('True', 'true', '1', 'yes') + + def setUp(self): + super(TestCase, self).setUp() + if os.environ.get('OS_STDOUT_CAPTURE') in self.true: + stdout = self.useFixture(fixtures.StringStream('stdout')).stream + self.useFixture(fixtures.MonkeyPatch('sys.stdout', stdout)) + if os.environ.get('OS_STDERR_CAPTURE') in self.true: + stderr = self.useFixture(fixtures.StringStream('stderr')).stream + self.useFixture(fixtures.MonkeyPatch('sys.stderr', stderr)) + if (os.environ.get('OS_LOG_CAPTURE') != 'False' and + os.environ.get('OS_LOG_CAPTURE') != '0'): + self.useFixture(fixtures.LoggerFixture(nuke_handlers=False, + level=None)) diff --git a/lpmqtt/tests/test_daemon.py b/lpmqtt/tests/test_daemon.py new file mode 100644 index 0000000..13f8f07 --- /dev/null +++ b/lpmqtt/tests/test_daemon.py @@ -0,0 +1,63 @@ +# Copyright (c) 2016 Hewlett-Packard Development Company, L.P. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import json + +from lpmqtt import daemon +from lpmqtt.tests import base + + +class TestDaemonHelpers(base.TestCase): + + def test_process_event_full_topic(self): + fake_event = { + 'project': 'tempest', + 'event-type': 'bug', + 'bug-number': '124321', + 'body': 'I am a email body', + } + msg, topic = daemon.process_event(fake_event, 'launchpad') + self.assertEqual(json.dumps(fake_event), msg) + self.assertEqual('launchpad/tempest/bug/124321', topic) + + def test_process_event_up_to_bug_number_no_event_type(self): + fake_event = { + 'project': 'tempest', + 'bug-number': '124321', + 'body': 'I am a email body', + } + msg, topic = daemon.process_event(fake_event, 'launchpad') + self.assertEqual(json.dumps(fake_event), msg) + self.assertEqual('launchpad/tempest', topic) + + def test_process_event_no_bug_number(self): + fake_event = { + 'project': 'tempest', + 'body': 'I am a email body', + 'event-type': 'bug', + } + msg, topic = daemon.process_event(fake_event, 'launchpad') + self.assertEqual(json.dumps(fake_event), msg) + self.assertEqual('launchpad/tempest/bug', topic) + + def test_process_event_no_project(self): + fake_event = { + 'body': 'I am a email body', + 'event-type': 'bug', + 'bug-number': '124321', + } + msg, topic = daemon.process_event(fake_event, 'launchpad') + self.assertEqual(json.dumps(fake_event), msg) + self.assertEqual('launchpad', topic)