def test_list_capsules_with_filters(self): capsule1 = utils.create_test_capsule(name='capsule1', uuid=uuidutils.generate_uuid(), context=self.context) capsule2 = utils.create_test_capsule(name='capsule2', uuid=uuidutils.generate_uuid(), context=self.context) res = dbapi.list_capsules(self.context, filters={'uuid': capsule1.uuid}) self.assertEqual([capsule1.id], [r.id for r in res]) res = dbapi.list_capsules(self.context, filters={'uuid': capsule2.uuid}) self.assertEqual([capsule2.id], [r.id for r in res]) res = dbapi.list_capsules(self.context, filters={'uuid': 'unknow-uuid'}) self.assertEqual([], [r.id for r in res])
def test_list_capsules_sorted_with_valid_sort_key(self): uuids = [] for i in range(1, 6): capsule = utils.create_test_capsule(uuid=uuidutils.generate_uuid(), context=self.context, name='capsule' + str(i)) uuids.append(six.text_type(capsule['uuid'])) res = dbapi.list_capsules(self.context, sort_key='uuid') res_uuids = [r.uuid for r in res] self.assertEqual(sorted(uuids), res_uuids)
def test_get_capsule_by_meta_name(self, mock_db_inst, mock_write, mock_read): mock_db_inst.return_value = etcdapi.get_backend() mock_read.side_effect = etcd.EtcdKeyNotFound capsule = utils.create_test_capsule(context=self.context) mock_read.side_effect = lambda *args: FakeEtcdMultipleResult( [capsule.as_dict()]) res = dbapi.get_capsule_by_meta_name(self.context, capsule.meta_name) self.assertEqual(capsule.id, res.id) self.assertEqual(capsule.uuid, res.uuid)
def test_update_capsule(self, mock_update, mock_write, mock_read): mock_read.side_effect = etcd.EtcdKeyNotFound capsule = utils.create_test_capsule(context=self.context) new_meta_name = 'new_meta_name' mock_read.side_effect = lambda *args: FakeEtcdResult(capsule.as_dict()) dbapi.update_capsule(self.context, capsule.uuid, {'meta_name': new_meta_name}) self.assertEqual( new_meta_name, json.loads(mock_update.call_args_list[0][0][0].value.decode( 'utf-8'))['meta_name'])
def test_list_capsules(self, mock_write, mock_read): uuids = [] capsules = [] mock_read.side_effect = etcd.EtcdKeyNotFound for i in range(1, 6): capsule = utils.create_test_capsule(uuid=uuidutils.generate_uuid(), context=self.context, name='capsule' + str(i)) capsules.append(capsule.as_dict()) uuids.append(six.text_type(capsule['uuid'])) mock_read.side_effect = lambda *args: FakeEtcdMultipleResult(capsules) res = dbapi.list_capsules(self.context) res_uuids = [r.uuid for r in res] self.assertEqual(sorted(uuids), sorted(res_uuids))
def test_list_capsules_with_filters(self, mock_write, mock_read): mock_read.side_effect = etcd.EtcdKeyNotFound capsule1 = utils.create_test_capsule(name='capsule1', uuid=uuidutils.generate_uuid(), context=self.context) capsule2 = utils.create_test_capsule(name='capsule2', uuid=uuidutils.generate_uuid(), context=self.context) mock_read.side_effect = lambda *args: FakeEtcdMultipleResult( [capsule1.as_dict(), capsule2.as_dict()]) res = dbapi.list_capsules(self.context, filters={'uuid': capsule1.uuid}) self.assertEqual([capsule1.id], [r.id for r in res]) res = dbapi.list_capsules(self.context, filters={'uuid': capsule2.uuid}) self.assertEqual([capsule2.id], [r.id for r in res]) res = dbapi.list_capsules(self.context, filters={'uuid': 'unknow-uuid'}) self.assertEqual([], [r.id for r in res])
def test_get_one_by_uuid(self, mock_container_get_by_uuid, mock_capsule_get_by_uuid, mock_container_show): test_container = utils.get_test_container() test_container_obj = objects.Container(self.context, **test_container) mock_container_get_by_uuid.return_value = test_container_obj mock_container_show.return_value = test_container_obj test_capsule = utils.create_test_capsule(context=self.context) test_capsule_obj = objects.Capsule(self.context, **test_capsule) mock_capsule_get_by_uuid.return_value = test_capsule_obj response = self.get('/v1/capsules/%s/' % test_capsule['uuid']) context = mock_capsule_get_by_uuid.call_args[0][0] self.assertIs(False, context.all_projects) self.assertEqual(200, response.status_int) self.assertEqual(test_capsule['uuid'], response.json['uuid'])
def test_list_capsules_sorted(self, mock_db_inst, mock_write, mock_read): uuids = [] capsules = [] mock_db_inst.return_value = etcdapi.get_backend() mock_read.side_effect = etcd.EtcdKeyNotFound for i in range(1, 6): capsule = utils.create_test_capsule(uuid=uuidutils.generate_uuid(), context=self.context, name='capsule' + str(i)) capsules.append(capsule.as_dict()) uuids.append(six.text_type(capsule['uuid'])) mock_read.side_effect = lambda *args: FakeEtcdMultipleResult(capsules) res = dbapi.list_capsules(self.context, sort_key='uuid') res_uuids = [r.uuid for r in res] self.assertEqual(sorted(uuids), res_uuids) self.assertRaises(exception.InvalidParameterValue, dbapi.list_capsules, self.context, sort_key='foo')
def test_delete_capsule_by_name(self, mock_capsule_save, mock_container_get_by_name, mock_capsule_get_by_uuid, mock_capsule_delete): test_container = utils.get_test_container() test_container_obj = objects.Container(self.context, **test_container) mock_container_get_by_name.return_value = test_container_obj test_capsule = utils.create_test_capsule(context=self.context) test_capsule_obj = objects.Capsule(self.context, **test_capsule) mock_capsule_get_by_uuid.return_value = test_capsule_obj mock_capsule_save.return_value = True mock_capsule_delete.return_value = True capsule_name = test_capsule.get('meta_name') response = self.app.delete('/v1/capsules/%s/' % capsule_name) self.assertTrue(mock_capsule_delete.called) self.assertEqual(204, response.status_int) context = mock_capsule_save.call_args[0][0] self.assertIs(False, context.all_projects)
def test_get_all_capsules_with_exception(self, mock_container_get_by_uuid, mock_capsule_list): test_container = utils.get_test_container() test_container_obj = objects.Container(self.context, **test_container) mock_container_get_by_uuid.return_value = test_container_obj test_capsule = utils.create_test_capsule(context=self.context) test_capsule_obj = objects.Capsule(self.context, **test_capsule) mock_capsule_list.return_value = [test_capsule_obj] response = self.app.get('/v1/capsules/') mock_capsule_list.assert_called_once_with(mock.ANY, 1000, None, 'id', 'asc', filters=None) context = mock_capsule_list.call_args[0][0] self.assertIs(False, context.all_projects) self.assertEqual(200, response.status_int) actual_capsules = response.json['capsules'] self.assertEqual(1, len(actual_capsules)) self.assertEqual(test_capsule['uuid'], actual_capsules[0].get('uuid'))
def test_delete_capsule_by_uuid_all_projects(self, mock_capsule_save, mock_container_get_by_uuid, mock_capsule_get_by_uuid, mock_capsule_delete, mock_policy): mock_policy.return_value = True test_container = utils.get_test_container() test_container_obj = objects.Container(self.context, **test_container) mock_container_get_by_uuid.return_value = test_container_obj test_capsule = utils.create_test_capsule(context=self.context) test_capsule_obj = objects.Capsule(self.context, **test_capsule) mock_capsule_get_by_uuid.return_value = test_capsule_obj mock_capsule_save.return_value = True mock_capsule_delete.return_value = True capsule_uuid = test_capsule.get('uuid') response = self.app.delete('/v1/capsules/%s/?all_projects=1' % capsule_uuid) self.assertTrue(mock_capsule_delete.called) self.assertEqual(204, response.status_int) context = mock_capsule_save.call_args[0][0] self.assertIs(True, context.all_projects)
def test_create_capsule(self): utils.create_test_capsule(context=self.context)
def test_destroy_capsule_by_uuid(self, mock_delete, mock_write, mock_read): mock_read.side_effect = etcd.EtcdKeyNotFound capsule = utils.create_test_capsule(context=self.context) mock_read.side_effect = lambda *args: FakeEtcdResult(capsule.as_dict()) dbapi.destroy_capsule(self.context, capsule.uuid) mock_delete.assert_called_once_with('/capsules/%s' % capsule.uuid)
def test_destroy_capsule_by_uuid(self): capsule = utils.create_test_capsule(context=self.context) dbapi.destroy_capsule(self.context, capsule.uuid) self.assertRaises(exception.CapsuleNotFound, dbapi.get_capsule_by_uuid, self.context, capsule.uuid)
def test_update_capsule_uuid(self): capsule = utils.create_test_capsule(context=self.context) self.assertRaises(exception.InvalidParameterValue, dbapi.update_capsule, self.context, capsule.id, {'uuid': ''})
def test_update_capsule_uuid(self, mock_write, mock_read): mock_read.side_effect = etcd.EtcdKeyNotFound capsule = utils.create_test_capsule(context=self.context) self.assertRaises(exception.InvalidParameterValue, dbapi.update_capsule, self.context, capsule.uuid, {'uuid': ''})
def test_get_capsule_by_meta_name(self): capsule = utils.create_test_capsule(context=self.context) res = dbapi.get_capsule_by_meta_name(self.context, capsule.meta_name) self.assertEqual(capsule.id, res.id) self.assertEqual(capsule.meta_name, res.meta_name)
def test_get_capsule_by_uuid(self): capsule = utils.create_test_capsule(context=self.context) res = dbapi.get_capsule_by_uuid(self.context, capsule.uuid) self.assertEqual(capsule.id, res.id) self.assertEqual(capsule.uuid, res.uuid)
def test_create_capsule_already_exists(self): utils.create_test_capsule(context=self.context) self.assertRaises(exception.CapsuleAlreadyExists, utils.create_test_capsule, context=self.context)