예제 #1
0
    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])
예제 #2
0
 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)
예제 #3
0
 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)
예제 #4
0
    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'])
예제 #5
0
 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))
예제 #6
0
    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])
예제 #7
0
    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'])
예제 #8
0
 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')
예제 #9
0
    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)
예제 #10
0
    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'))
예제 #11
0
    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)
예제 #12
0
 def test_create_capsule(self):
     utils.create_test_capsule(context=self.context)
예제 #13
0
 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)
예제 #14
0
 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)
예제 #15
0
 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': ''})
예제 #16
0
 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': ''})
예제 #17
0
 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)
예제 #18
0
 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)
예제 #19
0
 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)