From 38b573b1d41c45ea9d2211d5c5cfe570eb082916 Mon Sep 17 00:00:00 2001 From: Chi Lo Date: Thu, 23 May 2019 14:09:15 -0700 Subject: [PATCH] Added tempest test case for assign role to group region Change-Id: I2ba95a10fab43fd15fec0ab3cd7177fec52d0dea --- .../schemas/group_schema.py | 6 ++- .../services/grp_client.py | 6 +++ .../tests/api/test_groups.py | 44 +++++++++++++++++-- 3 files changed, 50 insertions(+), 6 deletions(-) diff --git a/ranger-tempest-plugin/ranger_tempest_plugin/schemas/group_schema.py b/ranger-tempest-plugin/ranger_tempest_plugin/schemas/group_schema.py index ff4b703b..5ae13638 100644 --- a/ranger-tempest-plugin/ranger_tempest_plugin/schemas/group_schema.py +++ b/ranger-tempest-plugin/ranger_tempest_plugin/schemas/group_schema.py @@ -162,12 +162,14 @@ unassign_group_role = _delete list_group_roles = { 'status_code': [200], 'response_body': { - 'type': 'object', + 'type': 'array', 'properties': { 'roles': { 'type': 'array', 'items': {'type': 'string'} - } + }, + 'customer': {'type': 'string'}, + 'domain': {'type': 'string'} }, 'required': ['roles'] } diff --git a/ranger-tempest-plugin/ranger_tempest_plugin/services/grp_client.py b/ranger-tempest-plugin/ranger_tempest_plugin/services/grp_client.py index 110670a1..6e090ce0 100755 --- a/ranger-tempest-plugin/ranger_tempest_plugin/services/grp_client.py +++ b/ranger-tempest-plugin/ranger_tempest_plugin/services/grp_client.py @@ -67,6 +67,12 @@ class GrpClient(base_client.RangerClientBase): post_body = json.dumps(args) return self.post_request(uri, post_body, schema.assign_group_roles) + def assign_group_region_roles(self, group_id, region_id, *args): + uri = '%s/%s/orm/groups/%s/regions/%s/roles' % ( + self.cms_url, self.version, group_id, region_id) + post_body = json.dumps(args) + return self.post_request(uri, post_body, schema.assign_group_roles) + def unassign_group_role( self, group_id, role, assignmenet_type, assignment_value): uri = '%s/%s/orm/groups/%s/roles/%s/%s/%s' % (self.cms_url, diff --git a/ranger-tempest-plugin/ranger_tempest_plugin/tests/api/test_groups.py b/ranger-tempest-plugin/ranger_tempest_plugin/tests/api/test_groups.py index c8ced321..07c7ea68 100755 --- a/ranger-tempest-plugin/ranger_tempest_plugin/tests/api/test_groups.py +++ b/ranger-tempest-plugin/ranger_tempest_plugin/tests/api/test_groups.py @@ -134,7 +134,7 @@ class TestTempestGrp(grp_base.GrpBaseOrmTest): CONF.ranger.domain) _, body = self.grp_client.list_group_roles(self.setup_group_id, list_filter) - self.assertEqual(body['roles'], role['roles']) + self.assertEqual(body[0]['roles'], role['roles']) # unassign role _, body = self.grp_client.unassign_group_role(self.setup_group_id, @@ -145,7 +145,7 @@ class TestTempestGrp(grp_base.GrpBaseOrmTest): self._wait_for_group_status(self.setup_group_id, 'Success') _, body = self.grp_client.list_group_roles(self.setup_group_id, list_filter) - self.assertEqual(body['roles'], []) + self.assertEqual(body[0]['roles'], []) @decorators.idempotent_id('67f5e46e-9267-4cbb-84d6-ee8521370e23') def test_assign_unassign_list_role_to_group_on_customer(self): @@ -169,7 +169,8 @@ class TestTempestGrp(grp_base.GrpBaseOrmTest): self.setup_customer_id) _, body = self.grp_client.list_group_roles(self.setup_group_id, list_filter) - self.assertEqual(body['roles'], role['roles']) + + self.assertEqual(body[0]['roles'], role['roles']) # unassign role _, body = self.grp_client.unassign_group_role(self.setup_group_id, @@ -180,7 +181,42 @@ class TestTempestGrp(grp_base.GrpBaseOrmTest): self._wait_for_group_status(self.setup_group_id, 'Success') _, body = self.grp_client.list_group_roles(self.setup_group_id, list_filter) - self.assertEqual(body['roles'], []) + self.assertEqual(body[0]['roles'], []) + + @decorators.idempotent_id('282de091-84f5-47a1-9c43-4d8a94981ae4') + def test_assign_unassign_list_role_to_group_region_on_customer(self): + role = { + 'roles': ["admin"], + 'customer': self.setup_customer_id + } + region_name = [ + region['name'] for region in self.setup_group['regions']] + + # assign role + post_body = [role] + _, body = self.grp_client.assign_group_region_roles( + self.setup_group_id, region_name[0], *post_body) + + self._wait_for_group_status(self.setup_group_id, 'Success') + self.assertEqual(body['roles'][0]['customer'], role['customer']) + self.assertEqual(body['roles'][0]['roles'][0], role['roles'][0]) + + # list roles by region + list_filter = "?region=%s" % (region_name[0]) + _, body = self.grp_client.list_group_roles(self.setup_group_id, + list_filter) + self.assertEqual(body[0]['roles'], role['roles']) + + # unassign role + _, body = self.grp_client.unassign_group_role(self.setup_group_id, + role['roles'][0], + 'customer', + role['customer']) + + self._wait_for_group_status(self.setup_group_id, 'Success') + _, body = self.grp_client.list_group_roles(self.setup_group_id, + list_filter) + self.assertEqual(body, []) @decorators.idempotent_id('880f614f-6317-4973-a244-f2e44443f551') def test_add_delete_group_regions(self):