def test_process_event_queue(self, mock_start): db_api.create_event_trigger(EVENT_TRIGGER) e_engine = event_engine.EventEngine() self.addCleanup(e_engine.handler_tg.stop) event = { 'event_type': EVENT_TYPE, 'payload': {}, 'publisher': 'fake_publisher', 'timestamp': '', 'context': { 'project_id': 'fake_project', 'user_id': 'fake_user' }, } with mock.patch.object(e_engine, 'engine_client') as client_mock: e_engine.event_queue.put(event) time.sleep(1) self.assertEqual(1, client_mock.start_workflow.call_count) args, kwargs = client_mock.start_workflow.call_args self.assertEqual((EVENT_TRIGGER['workflow_id'], {}), args) self.assertDictEqual( { 'service': 'fake_publisher', 'project_id': 'fake_project', 'user_id': 'fake_user', 'timestamp': '' }, kwargs['event_params'])
def test_process_event_queue(self, mock_start): db_api.create_event_trigger(EVENT_TRIGGER) e_engine = event_engine.EventEngine() self.addCleanup(e_engine.handler_tg.stop) event = { 'event_type': EVENT_TYPE, 'payload': {}, 'publisher': 'fake_publisher', 'timestamp': '', 'context': {'project_id': 'fake_project', 'user_id': 'fake_user'}, } with mock.patch.object(e_engine, 'engine_client') as client_mock: e_engine.event_queue.put(event) time.sleep(1) self.assertEqual(1, client_mock.start_workflow.call_count) args, kwargs = client_mock.start_workflow.call_args self.assertEqual((EVENT_TRIGGER['workflow_id'], {}), args) self.assertDictEqual( { 'service': 'fake_publisher', 'project_id': 'fake_project', 'user_id': 'fake_user', 'timestamp': '' }, kwargs['event_params'] )
def test_process_event_queue(self, mock_start): trigger = db_api.create_event_trigger(EVENT_TRIGGER) client = mock.MagicMock() e_engine = event_engine.EventEngine(client) self.addCleanup(e_engine.handler_tg.stop) event = { event_engine.EVENT_CONTEXT: {}, event_engine.EVENT_TYPE: EVENT, event_engine.EVENT_PAYLOAD: {}, event_engine.EVENT_METADATA: {} } with mock.patch.object(e_engine, 'engine_client') as client_mock: e_engine.event_queue.put(event) time.sleep(1) self.assertEqual(1, client_mock.start_workflow.call_count) args, kwargs = client_mock.start_workflow.call_args self.assertEqual((EVENT_TRIGGER['workflow_id'], {}), args) self.assertDictEqual( { 'description': 'Workflow execution created by event ' 'trigger %s.' % trigger.id, 'event_payload': {}, 'event_metadata': {} }, kwargs )
def test_event_engine_public_trigger(self, mock_start): t = copy.deepcopy(EVENT_TRIGGER) # Create public trigger as an admin self.ctx = base.get_context(default=False, admin=True) auth_context.set_ctx(self.ctx) t['scope'] = 'public' t['project_id'] = self.ctx.tenant trigger = db_api.create_event_trigger(t) # Switch to the user. self.ctx = base.get_context(default=True) auth_context.set_ctx(self.ctx) e_engine = evt_eng.DefaultEventEngine() self.addCleanup(e_engine.handler_tg.stop) event = { 'event_type': EVENT_TYPE, 'payload': {}, 'publisher': 'fake_publisher', 'timestamp': '', 'context': { 'project_id': '%s' % self.ctx.project_id, 'user_id': 'fake_user' }, } # Moreover, assert that trigger.project_id != event.project_id self.assertNotEqual( trigger.project_id, event['context']['project_id'] ) with mock.patch.object(e_engine, 'engine_client') as client_mock: e_engine.event_queue.put(event) time.sleep(1) self.assertEqual(1, client_mock.start_workflow.call_count) args, kwargs = client_mock.start_workflow.call_args self.assertEqual( (EVENT_TRIGGER['workflow_id'], '', None, {}), args ) self.assertDictEqual( { 'service': 'fake_publisher', 'project_id': '%s' % self.ctx.project_id, 'user_id': 'fake_user', 'timestamp': '' }, kwargs['event_params'] )
def test_event_engine_public_trigger(self, mock_start): t = copy.deepcopy(EVENT_TRIGGER) # Create public trigger as an admin self.ctx = base.get_context(default=False, admin=True) auth_context.set_ctx(self.ctx) t['scope'] = 'public' t['project_id'] = self.ctx.tenant trigger = db_api.create_event_trigger(t) # Switch to the user. self.ctx = base.get_context(default=True) auth_context.set_ctx(self.ctx) e_engine = evt_eng.DefaultEventEngine() self.addCleanup(e_engine.handler_tg.stop) event = { 'event_type': EVENT_TYPE, 'payload': {}, 'publisher': 'fake_publisher', 'timestamp': '', 'context': { 'project_id': '%s' % self.ctx.project_id, 'user_id': 'fake_user' }, } # Moreover, assert that trigger.project_id != event.project_id self.assertNotEqual( trigger.project_id, event['context']['project_id'] ) with mock.patch.object(e_engine, 'engine_client') as client_mock: e_engine.event_queue.put(event) time.sleep(1) self.assertEqual(1, client_mock.start_workflow.call_count) args, kwargs = client_mock.start_workflow.call_args self.assertEqual((EVENT_TRIGGER['workflow_id'], '', {}), args) self.assertDictEqual( { 'service': 'fake_publisher', 'project_id': '%s' % self.ctx.project_id, 'user_id': 'fake_user', 'timestamp': '' }, kwargs['event_params'] )
def test_event_engine_start_with_triggers(self, mock_start): trigger = db_api.create_event_trigger(EVENT_TRIGGER) e_engine = event_engine.EventEngine(mock.MagicMock()) self.addCleanup(e_engine.handler_tg.stop) self.assertEqual(1, len(e_engine.exchange_topic_events_map)) self.assertEqual( EVENT_TYPE, list(e_engine.exchange_topic_events_map[EXCHANGE_TOPIC])[0]) self.assertEqual(1, len(e_engine.event_triggers_map)) self.assertEqual(1, len(e_engine.event_triggers_map[EVENT_TYPE])) self._assert_dict_contains_subset( trigger.to_dict(), e_engine.event_triggers_map[EVENT_TYPE][0]) self.assertEqual(1, len(e_engine.exchange_topic_listener_map))
def test_event_engine_start_with_triggers(self, mock_start): trigger = db_api.create_event_trigger(EVENT_TRIGGER) e_engine = event_engine.EventEngine(mock.MagicMock()) self.addCleanup(e_engine.handler_tg.stop) self.assertEqual(1, len(e_engine.exchange_topic_events_map)) self.assertEqual( EVENT, list(e_engine.exchange_topic_events_map[EXCHANGE_TOPIC])[0] ) self.assertEqual(1, len(e_engine.event_triggers_map)) self.assertEqual(1, len(e_engine.event_triggers_map[EVENT])) self._assert_dict_contains_subset( trigger.to_dict(), e_engine.event_triggers_map[EVENT][0] ) self.assertEqual(1, len(e_engine.exchange_topic_listener_map))