def test_list_category(self): names = ["cat1", "cat2"] for name in names: db_catalog_api.category_add(name) self._set_policy_rules({"get_category": "@"}) self.expect_policy_check("get_category") req = self._get("/catalog/categories") result = req.get_response(self.api) self.assertEqual(200, result.status_code) result_categories = json.loads(result.body)["categories"] self.assertEqual(2, len(result_categories)) self.assertEqual(names, [c["name"] for c in result_categories]) params = {"sort_keys": "created, id"} req = self._get("/catalog/categories", params) self.expect_policy_check("get_category") result = req.get_response(self.api) self.assertEqual(200, result.status_code) result_categories = json.loads(result.body)["categories"] self.assertEqual(names, [c["name"] for c in result_categories]) names.reverse() params = {"sort_dir": "desc"} req = self._get("/catalog/categories", params) self.expect_policy_check("get_category") result = req.get_response(self.api) self.assertEqual(200, result.status_code) result_categories = json.loads(result.body)["categories"] self.assertEqual(names, [c["name"] for c in result_categories])
def test_list_category(self): names = ['cat1', 'cat2'] for name in names: db_catalog_api.category_add(name) self._set_policy_rules({'get_category': '@'}) self.expect_policy_check('get_category') req = self._get('/catalog/categories') result = req.get_response(self.api) self.assertEqual(200, result.status_code) result_categories = json.loads(result.body)['categories'] self.assertEqual(2, len(result_categories)) self.assertEqual(names, [c['name'] for c in result_categories]) params = {'sort_keys': 'created, id'} req = self._get('/catalog/categories', params) self.expect_policy_check('get_category') result = req.get_response(self.api) self.assertEqual(200, result.status_code) result_categories = json.loads(result.body)['categories'] self.assertEqual(names, [c['name'] for c in result_categories]) names.reverse() params = {'sort_dir': 'desc'} req = self._get('/catalog/categories', params) self.expect_policy_check('get_category') result = req.get_response(self.api) self.assertEqual(200, result.status_code) result_categories = json.loads(result.body)['categories'] self.assertEqual(names, [c['name'] for c in result_categories])
def do_add_category(): category_name = CONF.command.category_name try: db_catalog_api.category_add(category_name) print(">> Successfully added category {0}".format(category_name)) except db_exception.DBDuplicateEntry: print(">> ERROR: Category '{0}' already exists".format(category_name))
def test_do_add_category_except_duplicate_error(self, mock_stdout): manage.CONF = mock.MagicMock() manage.CONF.command.category_name = 'test_category_name' expected_output = ">> ERROR: Category \'test_category_name\' already "\ "exists" db_catalog_api.category_add('test_category_name') manage.do_add_category() self.assertEqual(expected_output, mock_stdout.getvalue().replace('\n', ''))
def test_packages_filter_by_in_category(self): """Test that packages are filtered by in:cat1,cat2,cat3 GET /catalog/packages with parameter "category=in:cat1,cat2,cat3" returns packages filtered by category. """ names = ['cat1', 'cat2', 'cat3', 'cat4'] for name in names: db_catalog_api.category_add(name) self._set_policy_rules({ 'get_package': '', 'manage_public_package': '' }) _, package1_data = self._test_package() _, package2_data = self._test_package() _, package3_data = self._test_package() package1_data['fully_qualified_name'] += '_1' package1_data['name'] += '_1' package1_data['class_definitions'] = (u'test.mpl.v1.app.Thing1', ) package1_data['categories'] = ('cat1', 'cat2') package2_data['fully_qualified_name'] += '_2' package2_data['name'] += '_2' package2_data['class_definitions'] = (u'test.mpl.v1.app.Thing2', ) package2_data['categories'] = ('cat2', 'cat3') package3_data['fully_qualified_name'] += '_3' package3_data['name'] += '_3' package3_data['class_definitions'] = (u'test.mpl.v1.app.Thing3', ) package3_data['categories'] = ('cat2', 'cat4') expected_packages = [ db_catalog_api.package_upload(package1_data, ''), db_catalog_api.package_upload(package2_data, '') ] db_catalog_api.package_upload(package3_data, '') categories_in = "in:cat1,cat3" req = self._get('/catalog/packages', params={'category': categories_in}) self.expect_policy_check('get_package') self.expect_policy_check('manage_public_package') res = req.get_response(self.api) self.assertEqual(200, res.status_code) self.assertEqual(2, len(res.json['packages'])) found_packages = res.json['packages'] self.assertEqual([pack.id for pack in expected_packages], [pack['id'] for pack in found_packages])
def test_packages_filter_by_in_category(self): """Test that packages are filtered by in:cat1,cat2,cat3 GET /catalog/packages with parameter "category=in:cat1,cat2,cat3" returns packages filtered by category. """ names = ['cat1', 'cat2', 'cat3', 'cat4'] for name in names: db_catalog_api.category_add(name) self._set_policy_rules( {'get_package': '', 'manage_public_package': ''} ) _, package1_data = self._test_package() _, package2_data = self._test_package() _, package3_data = self._test_package() package1_data['fully_qualified_name'] += '_1' package1_data['name'] += '_1' package1_data['class_definitions'] = (u'test.mpl.v1.app.Thing1',) package1_data['categories'] = ('cat1', 'cat2') package2_data['fully_qualified_name'] += '_2' package2_data['name'] += '_2' package2_data['class_definitions'] = (u'test.mpl.v1.app.Thing2',) package2_data['categories'] = ('cat2', 'cat3') package3_data['fully_qualified_name'] += '_3' package3_data['name'] += '_3' package3_data['class_definitions'] = (u'test.mpl.v1.app.Thing3',) package3_data['categories'] = ('cat2', 'cat4') expected_packages = [db_catalog_api.package_upload(package1_data, ''), db_catalog_api.package_upload(package2_data, '')] db_catalog_api.package_upload(package3_data, '') categories_in = "in:cat1,cat3" req = self._get('/catalog/packages', params={'category': categories_in}) self.expect_policy_check('get_package') self.expect_policy_check('manage_public_package') res = req.get_response(self.api) self.assertEqual(200, res.status_code) self.assertEqual(2, len(res.json['packages'])) found_packages = res.json['packages'] self.assertEqual([pack.id for pack in expected_packages], [pack['id'] for pack in found_packages])
def add_category(self, req, body=None): policy.check("add_category", req.context) if not body.get('name'): raise exc.HTTPBadRequest( explanation='Please, specify a name of the category to create') try: category = db_api.category_add(body['name']) except db_exc.DBDuplicateEntry: msg = _('Category with specified name is already exist') LOG.error(msg) raise exc.HTTPConflict(explanation=msg) return category.to_dict()
def add_category(self, req, body=None): policy.check("add_category", req.context) category_name = body.get('name') if not category_name: raise exc.HTTPBadRequest( explanation='Please, specify a name of the category to create') if len(category_name) > 80: msg = _('Category name should be 80 characters maximum') LOG.error(msg) raise exc.HTTPBadRequest(explanation=msg) try: category = db_api.category_add(category_name) except db_exc.DBDuplicateEntry: msg = _('Category with specified name is already exist') LOG.error(msg) raise exc.HTTPConflict(explanation=msg) return category.to_dict()
def test_category_paginate(self): """Paginate through a list of categories using limit and marker""" category_names = ['cat1', 'cat2', 'cat3', 'cat4', 'cat5'] categories = [] for name in category_names: categories.append(api.category_add(name)) uuids = [c.id for c in categories] page = api.categories_list(limit=2) self.assertEqual(category_names[:2], [c.name for c in page]) last = page[-1].id page = api.categories_list(limit=3, marker=last) self.assertEqual(category_names[2:5], [c.name for c in page]) page = api.categories_list(marker=uuids[-1]) self.assertEqual([], page) category_names.reverse() page = api.categories_list({'sort_dir': 'desc'}) self.assertEqual(category_names, [c.name for c in page])
def _create_categories(self): api.category_add('cat1') api.category_add('cat2')
def _create_categories(self): api.category_add("cat1") api.category_add("cat2")