예제 #1
0
    def test_commit_aborted(self, mock_fedmsg_publish):
        """Assert that when commits are aborted, messages aren't sent."""
        session = Session()
        session.add(models.Package(name=u'ejabberd'))
        session.commit()

        session.add(models.Package(name=u'ejabberd'))
        notifications.publish('demo.topic', {'new': 'package'})
        self.assertRaises(exc.IntegrityError, session.commit)
        self.assertEqual(0, mock_fedmsg_publish.call_count)
예제 #2
0
    def test_no_fedmsgs(self, mock_fedmsg_publish):
        """Assert nothing happens if messages are not explicitly published."""
        session = Session()
        session.add(models.Package(name=u'ejabberd'))
        session.commit()

        self.assertEqual(0, mock_fedmsg_publish.call_count)
예제 #3
0
 def test_single_topic_one_message(self, mock_fedmsg_publish):
     """Assert a single message for a single topic is published."""
     session = Session()
     session.add(models.Package(name=u'ejabberd'))
     notifications.publish('demo.topic', {'new': 'package'})
     session.commit()
     mock_fedmsg_publish.assert_called_once_with(topic='demo.topic',
                                                 msg={'new': 'package'})
예제 #4
0
    def test_module_build(self):
        """ModuleBuilds don't have get_latest(), so lets verify that this is OK."""
        release = self.create_release('27M')
        build = models.ModuleBuild(
            nvr='testmodule:master:1', release=release,
            package=models.Package(name='testmodule', type=models.ContentType.module))
        update = models.Update(builds=[build], release=release)

        # This should not raise an Exception.
        t = mail.get_template(update)

        # Assemble the template for easier asserting.
        t = '\n'.join([l for l in t[0]])
        # No changelog should appear. We can just verify that there's a blank line where the
        # changelog would be.
        self.assertTrue('----\n\nThis update can be installed' in t)
예제 #5
0
 def test_publish_sqlalchemy_object(self):
     """Assert publish places the message inside the session info dict."""
     Session.remove()
     expected_msg = {
         u'some_package': {
             u'name': u'so good',
             u'type': 'base',
             u'requirements': None
         }
     }
     package = models.Package(name='so good')
     notifications.publish('demo.topic', {'some_package': package})
     session = Session()
     self.assertIn('messages', session.info)
     self.assertEqual(len(session.info['messages']), 1)
     msg = session.info['messages'][0]
     self.assertEqual(msg.body, expected_msg)
예제 #6
0
 def test_publish_sqlalchemy_object(self, mock_init):
     """Assert publish places the message inside the session info dict."""
     Session.remove()
     expected_msg = {
         u'some_package': {
             u'name': u'so good',
             u'type': 'base',
             u'requirements': None,
             u'stack': None,
             u'stack_id': None,
         }
     }
     package = models.Package(name='so good')
     notifications.publish('demo.topic', {'some_package': package})
     session = Session()
     self.assertIn('fedmsg', session.info)
     self.assertEqual(session.info['fedmsg']['demo.topic'], [expected_msg])
     mock_init.assert_called_once_with()