Пример #1
0
    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])
Пример #2
0
    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])
Пример #3
0
    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])
Пример #4
0
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))
Пример #5
0
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))
Пример #6
0
    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', ''))
Пример #7
0
    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])
Пример #8
0
    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])
Пример #9
0
    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()
Пример #10
0
 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()
Пример #11
0
 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()
Пример #12
0
    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])
Пример #13
0
    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])
Пример #14
0
 def _create_categories(self):
     api.category_add('cat1')
     api.category_add('cat2')
Пример #15
0
 def _create_categories(self):
     api.category_add('cat1')
     api.category_add('cat2')
Пример #16
0
 def _create_categories(self):
     api.category_add("cat1")
     api.category_add("cat2")