def test_do_fire(self): # Setup notifiers.NOTIFIER_FUNCTIONS.clear() notifier_1 = mock.Mock() notifier_2 = mock.Mock() notifier_3 = mock.Mock() notifiers.NOTIFIER_FUNCTIONS['notifier_1'] = notifier_1.fire notifiers.NOTIFIER_FUNCTIONS['notifier_2'] = notifier_2.fire notifiers.NOTIFIER_FUNCTIONS['notifier_3'] = notifier_3.fire self.event_manager.create('notifier_1', {'1': '1'}, [event_data.TYPE_REPO_SYNC_STARTED]) self.event_manager.create('notifier_2', {'2': '2'}, [ event_data.TYPE_REPO_SYNC_STARTED, event_data.TYPE_REPO_SYNC_FINISHED ]) self.event_manager.create('notifier_3', {'3': '3'}, [event_data.TYPE_REPO_SYNC_FINISHED]) # Test event = event_data.Event(event_data.TYPE_REPO_SYNC_STARTED, 'payload') self.manager._do_fire(event) # Verify self.assertEqual(1, notifier_1.fire.call_count) self.assertEqual(1, notifier_2.fire.call_count) self.assertEqual(0, notifier_3.fire.call_count) self.assertEqual({'1': '1'}, notifier_1.fire.call_args[0][0]) self.assertEqual(event, notifier_1.fire.call_args[0][1]) self.assertEqual({'2': '2'}, notifier_2.fire.call_args[0][0]) self.assertEqual(event, notifier_2.fire.call_args[0][1])
def fire_repo_publish_started(self, repo_id, distributor_id): """ Fires an event indicating the given repository's distributor has started a publish. """ payload = {'repo_id': repo_id, 'distributor_id': distributor_id} self._do_fire(e.Event(e.TYPE_REPO_PUBLISH_STARTED, payload))
def test_do_fire_with_exception(self): # Setup notifiers.NOTIFIER_FUNCTIONS.clear() notifier_1 = mock.Mock() notifier_2 = mock.Mock() notifiers.NOTIFIER_FUNCTIONS['notifier_1'] = notifier_1.fire notifiers.NOTIFIER_FUNCTIONS['notifier_2'] = notifier_2.fire notifier_1.fire.side_effect = Exception('Exception from notifier fire') self.event_manager.create('notifier_1', {'1': '1'}, [event_data.TYPE_REPO_SYNC_STARTED]) self.event_manager.create('notifier_2', {'2': '2'}, [event_data.TYPE_REPO_SYNC_STARTED]) # Test event = event_data.Event(event_data.TYPE_REPO_SYNC_STARTED, 'payload') self.manager._do_fire(event) # Verify # The main purpose of the test is that an exception was not raised. # We should also double-check that the second notifier was still invoked. self.assertEqual(1, notifier_1.fire.call_count) self.assertEqual(1, notifier_2.fire.call_count) self.assertEqual({'1': '1'}, notifier_1.fire.call_args[0][0]) self.assertEqual(event, notifier_1.fire.call_args[0][1]) self.assertEqual({'2': '2'}, notifier_2.fire.call_args[0][0]) self.assertEqual(event, notifier_2.fire.call_args[0][1])
def test_event_instantiation(self, mock_find): event_type = 'test_type' payload = 'test_payload' try: event = event_data.Event(event_type, payload) except Exception, e: self.fail(e.message)
def fire_repo_publish_finished(self, publish_result): """ Fires an event indicating the given repository has completed a publish. The success/failure of the publish, timestamp information, and publish report provided by the distributor are all included in the publish_result. """ publish_result.pop('_id', None) self._do_fire(e.Event(e.TYPE_REPO_PUBLISH_FINISHED, publish_result))
def test_fire(self, mock_get_collection, mock_getbool, mock_smtp, mock_publish, mock_task_ser): # verify that the event system will trigger listeners of this type mock_get_collection.return_value.find.return_value = [self.event_doc] mock_task_ser.return_value = 'serialized task' event = data.Event(data.TYPE_REPO_SYNC_FINISHED, 'stuff') factory.initialize() factory.event_fire_manager()._do_fire(event) # verify that the mail event handler was called and processed something self.assertEqual(mock_smtp.return_value.sendmail.call_count, 2)
def fire_repo_sync_finished(self, sync_result): """ Fires an event indicating the given repository has completed a sync. The success/failure of the sync, timestamp information, and sync report provided by the importer are all included in the sync_result. @param sync_result: DB object describing the sync result @type sync_result: dict """ sync_result.pop('_id', None) self._do_fire(e.Event(e.TYPE_REPO_SYNC_FINISHED, sync_result))
def test_event_instantiation(self, mock_find, mock_current_task): mock_current_task.request.id = 'fake_id' fake_task_status = TaskStatus('fake_id', 'fake_queue') mock_find.return_value = dict(fake_task_status) event_type = 'test_type' payload = 'test_payload' try: event = event_data.Event(event_type, payload) except Exception, e: self.fail(e.message)
def test_event_instantiation(self, mock_current_task): mock_current_task.request.id = 'fake_id' fake_task_status = TaskStatus('fake_id') fake_task_status.save() event_type = 'test_type' payload = 'test_payload' try: event = event_data.Event(event_type, payload) except Exception, e: self.fail(e.message)
def test_data_call(self, mock_current_task): mock_current_task.request.id = 'fake_id' fake_task_status = TaskStatus('fake_id') fake_task_status.save() data = { 'event_type': 'test_type', 'payload': 'test_payload', 'call_report': fake_task_status } event = event_data.Event(data['event_type'], data['payload']) self.assertEqual(data, event.data())
def test_data_call(self, mock_find, mock_current_task): mock_current_task.request.id = 'fake_id' fake_task_status = TaskStatus('fake_id') mock_find.return_value = dict(fake_task_status) data = { 'event_type': 'test_type', 'payload': 'test_payload', 'call_report': dict(fake_task_status) } event = event_data.Event(data['event_type'], data['payload']) self.assertEqual(data, event.data())
def test_data_call(self, mock_current_task, mock_task_serializer): mock_current_task.request.id = 'fake_id' fake_task_status = TaskStatus('fake_id') fake_task_status.save() data = { 'event_type': 'test_type', 'payload': 'test_payload', 'call_report': fake_task_status } event = event_data.Event(data['event_type'], data['payload']) data['call_report'] = mock_task_serializer.return_value self.assertDictEqual(data, event.data()) mock_task_serializer.assert_called_once_with(fake_task_status)
def test_do_fire_with_star(self): # Setup notifiers.NOTIFIER_FUNCTIONS.clear() notifier_1 = mock.Mock() notifiers.NOTIFIER_FUNCTIONS['notifier_1'] = notifier_1.fire self.event_manager.create('notifier_1', {}, ['*']) # Test event = event_data.Event(event_data.TYPE_REPO_SYNC_STARTED, 'payload') self.manager._do_fire(event) # Verify self.assertEqual(1, notifier_1.fire.call_count)
def test_email_serialize_objid(self, mock_smtp, mock_getbool, mock_task_ser): event_with_id = data.Event('test-1', {'foo': _test_objid()}) mock_task_ser.return_value = 'serialized task' # no TypeError = success mail.handle_event(self.notifier_config, event_with_id)
def test_data_call(self, mock_find): data = {'event_type': 'test_type', 'payload': 'test_payload', 'call_report': _test_call_report.serialize()} event = event_data.Event(data['event_type'], data['payload']) self.assertEqual(data, event.data())
def fire_repo_sync_started(self, repo_id): """ Fires an event indicating the given repository has started a sync. """ payload = {'repo_id': repo_id} self._do_fire(e.Event(e.TYPE_REPO_SYNC_STARTED, payload))
def test_no_current_task(self): event = event_data.Event('fake_type', {}) self.assertTrue(event.call_report is None)
def test_email_serialize_objid(self, mock_smtp, mock_getbool): event_with_id = data.Event('test-1', {'foo': _test_objid()}) # no TypeError = success mail.handle_event(self.notifier_config, event_with_id)