def test_put(self, mock_update, mock_rpc_client): client = mock.Mock() mock_rpc_client.return_value = client UPDATED_TRIGGER = models.EventTrigger() UPDATED_TRIGGER.update(trigger_values) UPDATED_TRIGGER.update({'name': 'new_name'}) mock_update.return_value = UPDATED_TRIGGER resp = self.app.put_json( '/v2/event_triggers/09cc56a9-d15e-4494-a6e2-c4ec8bdaacae', {'name': 'new_name'}) self.assertEqual(200, resp.status_int) self.assertEqual(1, client.update_event_trigger.call_count) self.assertDictEqual(UPDATED_TRIGGER.to_dict(), client.update_event_trigger.call_args[0][0])
def create_event_trigger(values, session=None): event_trigger = models.EventTrigger() event_trigger.update(values) try: event_trigger.save(session=session) except db_exc.DBDuplicateEntry as e: raise exc.DBDuplicateEntryError( "Duplicate entry for event trigger %s: %s" % (event_trigger.id, e.columns)) # TODO(nmakhotkin): Remove this 'except' after fixing # https://bugs.launchpad.net/oslo.db/+bug/1458583. except db_exc.DBError as e: raise exc.DBDuplicateEntryError( "Duplicate entry for event trigger: %s" % e) return event_trigger
def test_delete(self, mock_delete, mock_rpc_client): client = mock.Mock() mock_rpc_client.return_value = client DELETE_TRIGGER = models.EventTrigger() DELETE_TRIGGER.update(trigger_values) DELETE_TRIGGER.update( {'trust_id': 'c30e50e8-ee7d-4f8a-9515-f0530d9dc54b'}) mock_delete.return_value = DELETE_TRIGGER resp = self.app.delete( '/v2/event_triggers/09cc56a9-d15e-4494-a6e2-c4ec8bdaacae') self.assertEqual(204, resp.status_int) self.assertEqual(1, client.delete_event_trigger.call_count) self.assertDictEqual(DELETE_TRIGGER.to_dict(), client.delete_event_trigger.call_args[0][0]) self.assertListEqual([], client.delete_event_trigger.call_args[0][1])
def create_event_trigger(values, session=None): event_trigger = models.EventTrigger() event_trigger.update(values) try: event_trigger.save(session=session) except db_exc.DBDuplicateEntry: raise exc.DBDuplicateEntryError( "Duplicate entry for EventTrigger ['exchange', 'topic'," " 'event', 'workflow_id', 'project_id']:" " {}, {}, {}, {}, {}".format(event_trigger.exchange, event_trigger.topic, event_trigger.event, event_trigger.workflow_id, event_trigger.project_id)) # TODO(nmakhotkin): Remove this 'except' after fixing # https://bugs.launchpad.net/oslo.db/+bug/1458583. except db_exc.DBError as e: raise exc.DBDuplicateEntryError( "Duplicate entry for event trigger: %s" % e) return event_trigger
'name': 'my_event_trigger', 'workflow_id': '123e4567-e89b-12d3-a456-426655440000', 'workflow_input': '{}', 'workflow_params': '{}', 'scope': 'private', 'exchange': 'openstack', 'topic': 'notification', 'event': 'compute.instance.create.start' } trigger_values = copy.deepcopy(TRIGGER) trigger_values['workflow_input'] = json.loads(trigger_values['workflow_input']) trigger_values['workflow_params'] = json.loads( trigger_values['workflow_params']) TRIGGER_DB = models.EventTrigger() TRIGGER_DB.update(trigger_values) MOCK_WF = mock.MagicMock(return_value=WF) MOCK_TRIGGER = mock.MagicMock(return_value=TRIGGER_DB) MOCK_TRIGGERS = mock.MagicMock(return_value=[TRIGGER_DB]) MOCK_NONE = mock.MagicMock(return_value=None) MOCK_NOT_FOUND = mock.MagicMock(side_effect=exc.DBEntityNotFoundError()) class TestEventTriggerController(base.APITest): @mock.patch.object(db_api, "get_event_trigger", MOCK_TRIGGER) def test_get(self): resp = self.app.get( '/v2/event_triggers/09cc56a9-d15e-4494-a6e2-c4ec8bdaacae')