# Copyright (c) 2019 AT&T Intellectual Property. All other rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from patrole_tempest_plugin import rbac_rule_validation from patrole_tempest_plugin import rbac_utils from tempest.lib import decorators from tempest.lib.common.utils import data_utils from ranger_tempest_plugin import data_utils as orm_data_utils from ranger_tempest_plugin.tests.api import rms_base class TestRegion(rbac_utils.RbacUtilsMixin, rms_base.RmsBaseOrmTest): @classmethod def setup_clients(cls): super(TestRegion, cls).setup_clients() cls.client = cls.os_primary.rms_rbac_client @rbac_rule_validation.action(service='ranger', rules=['region:get_all'], expected_error_codes=[403]) @decorators.idempotent_id('f8be1f6b-7e3f-40ea-b099-1fd57e4124a1') def test_list_regions(self): with self.override_role(): self.client.list_regions() @rbac_rule_validation.action(service='ranger', rules=['region:get_one'], expected_error_codes=[403]) @decorators.idempotent_id('0a97dd58-d4b0-448b-b7f4-9fdbc99efce3') def test_get_region(self): filter = {'regionname': self.region_1['name']} with self.override_role(): self.client.list_regions(filter) @rbac_rule_validation.action(service='ranger', rules=['region:create'], expected_error_codes=[403]) @decorators.idempotent_id('3d5895cf-ec8b-44f4-8d52-183baf2ff062') def test_create_region(self): region_id = None with self.override_role(): _, region = self.client.create_region(data_utils.rand_name()) region_id = region['id'] self.client.delete_region(region_id) @rbac_rule_validation.action(service='ranger', rules=['region:update'], expected_error_codes=[403]) @decorators.idempotent_id('cbb32c8f-f183-42c4-a9d9-61e93d066c5f') def test_update_region(self): id = self.setup_ids[-1] region = orm_data_utils.rand_region(id) with self.override_role(): self.client.update_region(id, **region) @rbac_rule_validation.action(service='ranger', rules=['region:delete'], expected_error_codes=[403]) @decorators.idempotent_id('62596380-c8a8-4832-8b3a-c665d2ecf18f') def test_delete_region(self): _, region = self.client.create_region(data_utils.rand_name()) region_id = region['id'] with self.override_role(): self.client.delete_region(region_id) @rbac_rule_validation.action(service='ranger', rules=['metadata:get'], expected_error_codes=[403]) @decorators.idempotent_id('96dbb841-52b6-4366-b62b-cdbb820c9c24') def test_get_region_metadata(self): with self.override_role(): self.client.get_region_metadata(self.region_1['id']) @rbac_rule_validation.action(service='ranger', rules=['metadata:create'], expected_error_codes=[403]) @decorators.idempotent_id('4fa6d3ff-8a77-462c-a856-7f65d0579400') def test_add_region_metadata(self): metadata = {} metadata['metadata'] = orm_data_utils.rand_region_metadata() with self.override_role(): self.client.add_region_metadata(self.region_1['id'], **metadata) @rbac_rule_validation.action(service='ranger', rules=['metadata:update'], expected_error_codes=[403]) @decorators.idempotent_id('01c592b1-6357-4daa-8150-9476c5644d8b') def test_update_region_metadata(self): metadata = {} metadata['metadata'] = orm_data_utils.rand_region_metadata() with self.override_role(): self.client.update_region_metadata(self.region_1['id'], metadata) @rbac_rule_validation.action(service='ranger', rules=['metadata:delete'], expected_error_codes=[403]) @decorators.idempotent_id('25b5d305-586f-4ef5-9774-e46362a69b4c') def test_delete_region_metadata(self): metadata = {} metadata['metadata'] = orm_data_utils.rand_region_metadata() key = list(metadata['metadata'].keys())[0] self.client.add_region_metadata(self.region_1['id'], **metadata) with self.override_role(): self.client.delete_region_metadata(self.region_1['id'], key) @rbac_rule_validation.action(service='ranger', rules=['status:put'], expected_error_codes=[403]) @decorators.idempotent_id('57a73d35-0e40-4fd1-b2ea-2fd6ac8364d5') def test_update_region_status(self): status = {} status['status'] = orm_data_utils.rand_region_status( [self.region_1['status']]) with self.override_role(): self.client.update_region_status(self.region_1['id'], status)