Removal of re-switching of rbac-role from tearDown

Currently, for every test case class, we need to add
re-switching rbac role in tearDown method. Thus for
every testcase using the tearDown method becomes
mandatory.

This patch removes tearDown dependency for re-switching
rbac-role.

Co-Authored-By: Mh Raies <mh.raies@ericsson.com>
Co-Authored-By: Felipe Monteiro <felipe.monteiro@att.com>

Implements: blueprint refactor-teardown-switch-roles
Change-Id: I3f0026533255c87b8128f2bf3a4aa488382a2523
This commit is contained in:
raiesmh08 2017-03-14 18:06:52 +05:30 committed by Felipe Monteiro
parent 3642309e96
commit 8590c0c628
85 changed files with 26 additions and 368 deletions

View File

@ -17,6 +17,7 @@ import logging
from tempest import config
from tempest.lib import exceptions
from tempest import test
from patrole_tempest_plugin import rbac_auth
from patrole_tempest_plugin import rbac_exceptions
@ -29,13 +30,17 @@ def action(service, rule):
def decorator(func):
def wrapper(*args, **kwargs):
try:
tenant_id = args[0].auth_provider.credentials.tenant_id
user_id = args[0].auth_provider.credentials.user_id
except (IndexError, AttributeError) as e:
caller_ref = None
if args and isinstance(args[0], test.BaseTestCase):
caller_ref = args[0]
tenant_id = caller_ref.auth_provider.credentials.tenant_id
user_id = caller_ref.auth_provider.credentials.user_id
except AttributeError as e:
msg = ("{0}: tenant_id/user_id not found in "
"cls.auth_provider.credentials".format(e))
LOG.error(msg)
raise rbac_exceptions.RbacResourceSetupFailed(msg)
authority = rbac_auth.RbacAuthority(tenant_id, user_id, service)
allowed = authority.get_permission(rule, CONF.rbac.rbac_test_role)
@ -70,5 +75,8 @@ def action(service, rule):
raise rbac_exceptions.RbacOverPermission(
"OverPermission: Role %s was allowed to perform %s" %
(CONF.rbac.rbac_test_role, rule))
finally:
caller_ref.rbac_utils.switch_role(caller_ref,
switchToRbacRole=False)
return wrapper
return decorator

View File

@ -28,10 +28,6 @@ CONF = config.CONF
class PasswordAdminRbacTest(rbac_base.BaseV2ComputeAdminRbacTest):
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(PasswordAdminRbacTest, self).tearDown()
@classmethod
def setup_clients(cls):
super(PasswordAdminRbacTest, cls).setup_clients()

View File

@ -25,10 +25,6 @@ CONF = config.CONF
class ServersAdminRbacTest(rbac_base.BaseV2ComputeAdminRbacTest):
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(ServersAdminRbacTest, self).tearDown()
@classmethod
def setup_clients(cls):
super(ServersAdminRbacTest, cls).setup_clients()

View File

@ -24,10 +24,6 @@ CONF = config.CONF
class AgentsRbacTest(rbac_base.BaseV2ComputeRbacTest):
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(AgentsRbacTest, self).tearDown()
@classmethod
def skip_checks(cls):
super(AgentsRbacTest, cls).skip_checks()

View File

@ -26,10 +26,6 @@ CONF = config.CONF
class AggregatesRbacTest(rbac_base.BaseV2ComputeRbacTest):
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(AggregatesRbacTest, self).tearDown()
@classmethod
def skip_checks(cls):
super(AggregatesRbacTest, cls).skip_checks()

View File

@ -32,11 +32,6 @@ class AssistedVolumeSnapshotRbacTest(rbac_base.BaseV2ComputeRbacTest):
super(AssistedVolumeSnapshotRbacTest, cls).setup_clients()
cls.client = cls.servers_client
def tearDown(self):
"""Cleanup and reset RBAC role."""
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(AssistedVolumeSnapshotRbacTest, self).tearDown()
def _create_and_attach(self):
self.server = self.create_test_server(wait_until='ACTIVE')
self.volume = self.create_volume()

View File

@ -55,10 +55,6 @@ class AttachInterfacesRbacTest(rbac_base.BaseV2ComputeRbacTest):
super(AttachInterfacesRbacTest, cls).resource_setup()
cls.server = cls.create_test_server(wait_until='ACTIVE')
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(AttachInterfacesRbacTest, self).tearDown()
def _attach_interface_to_server(self):
interface = self.client.create_interface(
self.server['id'])['interfaceAttachment']

View File

@ -22,10 +22,6 @@ CONF = config.CONF
class NovaAvailabilityZoneRbacTest(rbac_base.BaseV2ComputeRbacTest):
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(NovaAvailabilityZoneRbacTest, self).tearDown()
@classmethod
def skip_checks(cls):
super(NovaAvailabilityZoneRbacTest, cls).skip_checks()

View File

@ -35,10 +35,6 @@ class ConfigDriveRbacTest(rbac_base.BaseV2ComputeRbacTest):
% cls.__name__
raise cls.skipException(msg)
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(ConfigDriveRbacTest, self).tearDown()
@decorators.idempotent_id('55c62ef7-b72b-4970-acc6-05b0a4316e5d')
@rbac_rule_validation.action(
service="nova",

View File

@ -39,10 +39,6 @@ class DeferredDeleteRbacTest(rbac_base.BaseV2ComputeRbacTest):
super(DeferredDeleteRbacTest, cls).resource_setup()
cls.server = cls.create_test_server(wait_until='ACTIVE')
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(DeferredDeleteRbacTest, self).tearDown()
@rbac_rule_validation.action(
service="nova",
rule="os_compute_api:os-deferred-delete")

View File

@ -48,10 +48,6 @@ class FlavorAccessAdminRbacTest(rbac_base.BaseV2ComputeAdminRbacTest):
cls.flavor_id = cls._create_flavor(is_public=False)['id']
cls.tenant_id = cls.auth_provider.credentials.tenant_id
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(FlavorAccessAdminRbacTest, self).tearDown()
@decorators.idempotent_id('a2bd3740-765d-4c95-ac98-9e027378c75e')
@rbac_rule_validation.action(
service="nova",

View File

@ -47,10 +47,6 @@ class FlavorExtraSpecsAdminRbacTest(rbac_base.BaseV2ComputeAdminRbacTest):
cls.client.wait_for_resource_deletion(cls.flavor['id'])
super(FlavorExtraSpecsAdminRbacTest, cls).resource_cleanup()
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(FlavorExtraSpecsAdminRbacTest, self).tearDown()
def _set_flavor_extra_spec(self):
rand_key = data_utils.rand_name('key')
rand_val = data_utils.rand_name('val')

View File

@ -43,10 +43,6 @@ class FloatingIpPoolsRbacTest(rbac_base.BaseV2ComputeRbacTest):
% cls.__name__
raise cls.skipException(msg)
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(FloatingIpPoolsRbacTest, self).tearDown()
@decorators.idempotent_id('c1a17153-b25d-4444-a721-5897d7737482')
@rbac_rule_validation.action(
service="nova",

View File

@ -43,10 +43,6 @@ class FloatingIpsBulkRbacTest(rbac_base.BaseV2ComputeRbacTest):
% cls.__name__
raise cls.skipException(msg)
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(FloatingIpsBulkRbacTest, self).tearDown()
@decorators.idempotent_id('3b5c8a02-005d-4256-8a95-6fa2f389c6cf')
@rbac_rule_validation.action(
service="nova",

View File

@ -43,10 +43,6 @@ class FloatingIpsRbacTest(rbac_base.BaseV2ComputeRbacTest):
% cls.__name__
raise cls.skipException(msg)
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(FloatingIpsRbacTest, self).tearDown()
@decorators.idempotent_id('ac1b3053-f755-4cda-85a0-30e88b88d7ba')
@rbac_rule_validation.action(
service="nova",

View File

@ -36,10 +36,6 @@ class HostsAdminRbacTest(rbac_base.BaseV2ComputeAdminRbacTest):
raise cls.skipException(
'%s skipped as no compute extensions enabled' % cls.__name__)
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(HostsAdminRbacTest, self).tearDown()
@decorators.idempotent_id('035b7935-2fae-4218-8d37-27fa83097494')
@rbac_rule_validation.action(
service="nova",

View File

@ -35,10 +35,6 @@ class HypervisorAdminRbacTest(rbac_base.BaseV2ComputeAdminRbacTest):
% cls.__name__
raise cls.skipException(msg)
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(HypervisorAdminRbacTest, self).tearDown()
@decorators.idempotent_id('17bbeb9a-e73e-445f-a771-c794448ef562')
@rbac_rule_validation.action(
service="nova",

View File

@ -40,10 +40,6 @@ class InstanceActionsRbacTest(rbac_base.BaseV2ComputeRbacTest):
cls.server = cls.create_test_server(wait_until='ACTIVE')
cls.request_id = cls.server.response['x-compute-request-id']
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(InstanceActionsRbacTest, self).tearDown()
@decorators.idempotent_id('9d1b131d-407e-4fa3-8eef-eb2c4526f1da')
@rbac_rule_validation.action(
service="nova",

View File

@ -36,10 +36,6 @@ class InstanceUsagesAuditLogAdminRbacTest(
super(InstanceUsagesAuditLogAdminRbacTest, cls).setup_clients()
cls.client = cls.instance_usages_audit_log_client
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(InstanceUsagesAuditLogAdminRbacTest, self).tearDown()
@decorators.idempotent_id('c80246c0-5c13-4ab0-97ba-91551cd53dc1')
@rbac_rule_validation.action(
service="nova", rule="os_compute_api:os-instance-usage-audit-log")

View File

@ -49,10 +49,6 @@ class IpsRbacTest(rbac_base.BaseV2ComputeRbacTest):
super(IpsRbacTest, cls).resource_setup()
cls.server = cls.create_test_server(wait_until='ACTIVE')
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(IpsRbacTest, self).tearDown()
@decorators.idempotent_id('6886d360-0d86-4760-b1a3-882d81fbebcc')
@rbac_rule_validation.action(
service="nova",

View File

@ -28,10 +28,6 @@ class KeypairsRbacTest(rbac_base.BaseV2ComputeRbacTest):
super(KeypairsRbacTest, cls).setup_clients()
cls.client = cls.keypairs_client
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(KeypairsRbacTest, self).tearDown()
def _create_keypair(self):
key_name = data_utils.rand_name('key')
keypair = self.client.create_keypair(name=key_name)

View File

@ -22,10 +22,6 @@ CONF = config.CONF
class LimitsRbacTest(rbac_base.BaseV2ComputeRbacTest):
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(LimitsRbacTest, self).tearDown()
@classmethod
def setup_clients(cls):
super(LimitsRbacTest, cls).setup_clients()

View File

@ -36,10 +36,6 @@ class MigrationsAdminRbacTest(rbac_base.BaseV2ComputeAdminRbacTest):
raise cls.skipException(
'%s skipped as no compute extensions enabled' % cls.__name__)
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(MigrationsAdminRbacTest, self).tearDown()
@decorators.idempotent_id('5795231c-3729-448c-a072-9a225db1a328')
@rbac_rule_validation.action(
service="nova",

View File

@ -41,10 +41,6 @@ class RescueRbacTest(rbac_base.BaseV2ComputeRbacTest):
super(RescueRbacTest, cls).resource_setup()
cls.server = cls.create_test_server(wait_until='ACTIVE')
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(RescueRbacTest, self).tearDown()
@rbac_rule_validation.action(
service="nova",
rule="os_compute_api:os-rescue")

View File

@ -21,10 +21,6 @@ from patrole_tempest_plugin.tests.api.compute import rbac_base
class SecurityGroupsRbacTest(rbac_base.BaseV2ComputeRbacTest):
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(SecurityGroupsRbacTest, self).tearDown()
@rbac_rule_validation.action(
service="nova",
rule="os_compute_api:os-security-groups")

View File

@ -65,10 +65,6 @@ class ServerActionsRbacTest(rbac_base.BaseV2ComputeRbacTest):
self.__class__.server_id = self.rebuild_server(
self.server_id, validatable=True)
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(ServerActionsRbacTest, self).tearDown()
def _test_start_server(self):
self.client.start_server(self.server_id)
waiters.wait_for_server_status(self.client, self.server_id,

View File

@ -41,10 +41,6 @@ class ServerDiagnosticsRbacTest(rbac_base.BaseV2ComputeRbacTest):
super(ServerDiagnosticsRbacTest, cls).resource_setup()
cls.server = cls.create_test_server(wait_until='ACTIVE')
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(ServerDiagnosticsRbacTest, self).tearDown()
@rbac_rule_validation.action(
service="nova",
rule="os_compute_api:os-server-diagnostics")

View File

@ -41,10 +41,6 @@ class ServerGroupsRbacTest(rbac_base.BaseV2ComputeRbacTest):
super(ServerGroupsRbacTest, cls).resource_setup()
cls.server = cls.create_test_server(wait_until='ACTIVE')
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(ServerGroupsRbacTest, self).tearDown()
@rbac_rule_validation.action(
service="nova",
rule="os_compute_api:os-server-groups:create")

View File

@ -40,10 +40,6 @@ class ServerPasswordRbacTest(rbac_base.BaseV2ComputeRbacTest):
super(ServerPasswordRbacTest, cls).resource_setup()
cls.server = cls.create_test_server()
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(ServerPasswordRbacTest, self).tearDown()
@decorators.idempotent_id('43ad7995-2f12-41cd-8ef1-bae9ffc36818')
@rbac_rule_validation.action(
service="nova",

View File

@ -43,10 +43,6 @@ class ServerTagsRbacTest(rbac_base.BaseV2ComputeRbacTest):
super(ServerTagsRbacTest, cls).resource_setup()
cls.server = cls.create_test_server(wait_until='ACTIVE')
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(ServerTagsRbacTest, self).tearDown()
def _add_tag_to_server(self):
tag_name = data_utils.rand_name('tag')
self.client.update_tag(self.server['id'], tag_name)

View File

@ -41,10 +41,6 @@ class ServerUsageRbacTest(rbac_base.BaseV2ComputeRbacTest):
super(ServerUsageRbacTest, cls).resource_setup()
cls.server = cls.create_test_server(wait_until='ACTIVE')
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(ServerUsageRbacTest, self).tearDown()
@rbac_rule_validation.action(
service="nova",
rule="os_compute_api:os-server-usage")

View File

@ -46,10 +46,6 @@ class ServerVolumeAttachmentRbacTest(rbac_base.BaseV2ComputeRbacTest):
cls.server = cls.create_test_server(wait_until='ACTIVE')
cls.volume = cls.create_volume()
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(ServerVolumeAttachmentRbacTest, self).tearDown()
@rbac_rule_validation.action(
service="nova",
rule="os_compute_api:os-volumes-attachments:index")

View File

@ -36,10 +36,6 @@ class ServicesAdminRbacTest(rbac_base.BaseV2ComputeAdminRbacTest):
raise cls.skipException(
'%s skipped as no compute extensions enabled' % cls.__name__)
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(ServicesAdminRbacTest, self).tearDown()
@rbac_rule_validation.action(
service="nova",
rule="os_compute_api:os-services")

View File

@ -24,10 +24,6 @@ CONF = config.CONF
class SimpleTenantUsageRbacTest(rbac_base.BaseV2ComputeRbacTest):
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(SimpleTenantUsageRbacTest, self).tearDown()
@classmethod
def setup_clients(cls):
super(SimpleTenantUsageRbacTest, cls).setup_clients()

View File

@ -44,8 +44,6 @@ class SuspendServerRbacTest(rbac_base.BaseV2ComputeRbacTest):
cls.server = cls.create_test_server(wait_until='ACTIVE')
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
# Guarantee that the server is active during each test run.
vm_state = self.client.show_server(self.server['id'])['server'][
'OS-EXT-STS:vm_state'].upper()

View File

@ -51,10 +51,6 @@ class TenantNetworksRbacTest(rbac_base.BaseV2ComputeRbacTest):
cls.set_network_resources(network=True)
super(TenantNetworksRbacTest, cls).setup_credentials()
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(TenantNetworksRbacTest, self).tearDown()
@decorators.idempotent_id('42b39ba1-14aa-4799-9518-34367d0da67a')
@rbac_rule_validation.action(
service="nova",

View File

@ -39,10 +39,6 @@ class IdentityEndpointsV2AdminRbacTest(rbac_base.BaseIdentityV2AdminRbacTest):
cls.admin_url = data_utils.rand_url()
cls.internal_url = data_utils.rand_url()
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(IdentityEndpointsV2AdminRbacTest, self).tearDown()
def _create_endpoint(self):
self._create_service()
endpoint = self.endpoints_client.create_endpoint(

View File

@ -24,10 +24,6 @@ CONF = config.CONF
class IdentityProjectV2AdminRbacTest(rbac_base.BaseIdentityV2AdminRbacTest):
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(IdentityProjectV2AdminRbacTest, self).tearDown()
@rbac_rule_validation.action(service="keystone",
rule="identity:create_project")
@decorators.idempotent_id('0f148510-63bf-11e6-b348-080044d0d904')

View File

@ -26,10 +26,6 @@ CONF = config.CONF
class IdentityRoleV2AdminRbacTest(rbac_base.BaseIdentityV2AdminRbacTest):
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(IdentityRoleV2AdminRbacTest, self).tearDown()
@classmethod
def setup_clients(cls):
super(IdentityRoleV2AdminRbacTest, cls).setup_clients()

View File

@ -24,10 +24,6 @@ CONF = config.CONF
class IdentityServicesV2AdminRbacTest(rbac_base.BaseIdentityV2AdminRbacTest):
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(IdentityServicesV2AdminRbacTest, self).tearDown()
@classmethod
def setup_clients(cls):
super(IdentityServicesV2AdminRbacTest, cls).setup_clients()

View File

@ -22,10 +22,6 @@ from patrole_tempest_plugin.tests.api.identity.v2 import rbac_base
class IdentityUserV2AdminRbacTest(rbac_base.BaseIdentityV2AdminRbacTest):
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(IdentityUserV2AdminRbacTest, self).tearDown()
@rbac_rule_validation.action(service="keystone",
rule="identity:create_user")
@decorators.idempotent_id('0f148510-63bf-11e6-1342-080044d0d904')

View File

@ -24,11 +24,6 @@ from patrole_tempest_plugin.tests.api.identity.v3 import rbac_base
class IdentityCredentialsV3AdminRbacTest(
rbac_base.BaseIdentityV3RbacAdminTest):
def tearDown(self):
"""Reverts user back to admin for cleanup."""
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(IdentityCredentialsV3AdminRbacTest, self).tearDown()
def _create_credential(self):
"""Creates a user, project, and credential for test."""
user = self.setup_test_user()

View File

@ -40,11 +40,6 @@ class IdentityEndpointsV3AdminRbacTest(
self.endpoints_client.delete_endpoint, endpoint['id'])
return (service, endpoint)
def tearDown(self):
"""Reverts user back to admin for cleanup."""
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(IdentityEndpointsV3AdminRbacTest, self).tearDown()
@rbac_rule_validation.action(service="keystone",
rule="identity:create_endpoint")
@decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd127')

View File

@ -26,11 +26,6 @@ CONF = config.CONF
class IdentityGroupsV3AdminRbacTest(rbac_base.BaseIdentityV3RbacAdminTest):
def tearDown(self):
"""Reverts user back to admin for cleanup."""
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(IdentityGroupsV3AdminRbacTest, self).tearDown()
def _create_group(self):
"""Creates a group for test."""
name = data_utils.rand_name('group')

View File

@ -26,11 +26,6 @@ CONF = config.CONF
class IdentityPoliciesV3AdminRbacTest(rbac_base.BaseIdentityV3RbacAdminTest):
def tearDown(self):
"""Reverts user back to admin for cleanup."""
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(IdentityPoliciesV3AdminRbacTest, self).tearDown()
def _create_policy(self):
"""Creates a policy for test."""
blob = data_utils.rand_name('BlobName')

View File

@ -26,11 +26,6 @@ CONF = config.CONF
class IdentityProjectV3AdminRbacTest(
rbac_base.BaseIdentityV3RbacAdminTest):
def tearDown(self):
"""Reverts user back to admin for cleanup."""
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(IdentityProjectV3AdminRbacTest, self).tearDown()
@rbac_rule_validation.action(service="keystone",
rule="identity:create_project")
@decorators.idempotent_id('0f148510-63bf-11e6-1564-080044d0d904')

View File

@ -25,11 +25,6 @@ CONF = config.CONF
class IdentitySericesV3AdminRbacTest(rbac_base.BaseIdentityV3RbacAdminTest):
def tearDown(self):
"""Reverts user back to admin for cleanup."""
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(IdentitySericesV3AdminRbacTest, self).tearDown()
@rbac_rule_validation.action(service="keystone",
rule="identity:create_service")
@decorators.idempotent_id('9a4bb317-f0bb-4005-8df0-4b672885b7c8')

View File

@ -26,11 +26,6 @@ CONF = config.CONF
class IdentityUserV3AdminRbacTest(
rbac_base.BaseIdentityV3RbacAdminTest):
def tearDown(self):
"""Reverts user back to admin for cleanup."""
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(IdentityUserV3AdminRbacTest, self).tearDown()
@rbac_rule_validation.action(service="keystone",
rule="identity:create_user")
@decorators.idempotent_id('0f148510-63bf-11e6-4522-080044d0d904')

View File

@ -37,10 +37,6 @@ class ImagesMemberRbacTest(base.BaseV1ImageRbacTest):
super(ImagesMemberRbacTest, cls).resource_setup()
cls.alt_tenant_id = cls.alt_image_member_client.tenant_id
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(ImagesMemberRbacTest, self).tearDown()
@rbac_rule_validation.action(service="glance", rule="add_member")
@decorators.idempotent_id('bda2bb78-e6ec-4b87-ba6d-1eaf1b28fa8b')
def test_add_image_member(self):

View File

@ -27,10 +27,6 @@ CONF = config.CONF
class BasicOperationsImagesRbacTest(rbac_base.BaseV1ImageRbacTest):
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(BasicOperationsImagesRbacTest, self).tearDown()
@rbac_rule_validation.action(service="glance", rule="add_image")
@decorators.idempotent_id('33248a04-6527-11e6-be0f-080027d0d606')
def test_create_image(self):

View File

@ -26,10 +26,6 @@ CONF = config.CONF
class ImageNamespacesObjectsRbacTest(rbac_base.BaseV2ImageRbacTest):
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(ImageNamespacesObjectsRbacTest, self).tearDown()
@rbac_rule_validation.action(service="glance",
rule="add_metadef_object")
@decorators.idempotent_id("772156f2-e33d-432e-8521-12385746c2f0")

View File

@ -31,10 +31,6 @@ class NamespacesPropertyRbacTest(rbac_base.BaseV2ImageRbacTest):
body = cls.resource_types_client.list_resource_types()
cls.resource_name = body['resource_types'][0]['name']
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(NamespacesPropertyRbacTest, self).tearDown()
@rbac_rule_validation.action(service="glance",
rule="add_metadef_property")
@decorators.idempotent_id('383555ca-677b-43e9-b809-acc2b5a0176c')

View File

@ -26,10 +26,6 @@ CONF = config.CONF
class ImageNamespacesRbacTest(rbac_base.BaseV2ImageRbacTest):
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(ImageNamespacesRbacTest, self).tearDown()
@rbac_rule_validation.action(service="glance",
rule="add_metadef_namespace")
@decorators.idempotent_id('e0730ead-b824-4ffc-b774-9469df0e4da6')

View File

@ -26,10 +26,6 @@ CONF = config.CONF
class ImageNamespacesResourceTypeRbacTest(rbac_base.BaseV2ImageRbacTest):
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(ImageNamespacesResourceTypeRbacTest, self).tearDown()
@rbac_rule_validation.action(service="glance",
rule="list_metadef_resource_types")
@decorators.idempotent_id('0416fc4d-cfdc-447b-88b6-d9f1dd0382f7')

View File

@ -44,10 +44,6 @@ class ImagesMemberRbacTest(base.BaseV2ImageRbacTest):
cls.image_member_client = cls.os.image_member_client_v2
cls.alt_image_member_client = cls.os_alt.image_member_client_v2
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(ImagesMemberRbacTest, self).tearDown()
def setUp(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(ImagesMemberRbacTest, self).setUp()

View File

@ -34,10 +34,6 @@ class BasicOperationsImagesRbacTest(rbac_base.BaseV2ImageRbacTest):
super(BasicOperationsImagesRbacTest, cls).setup_clients()
cls.client = cls.os.image_client_v2
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(BasicOperationsImagesRbacTest, self).tearDown()
@rbac_rule_validation.action(service="glance",
rule="add_image")
@decorators.idempotent_id('0f148510-63bf-11e6-b348-080027d0d606')

View File

@ -69,10 +69,6 @@ class FloatingIpsRbacTest(base.BaseNetworkRbacTest):
return floating_ip
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(FloatingIpsRbacTest, self).tearDown()
@rbac_rule_validation.action(service="neutron",
rule="create_floatingip")
@decorators.idempotent_id('f8f7474c-b8a5-4174-af84-73097d6ced38')

View File

@ -44,10 +44,6 @@ class MeteringLabelRulesRbacTest(base.BaseNetworkRbacTest):
cls.metering_labels_client = cls.os.metering_labels_client
cls.metering_label_rules_client = cls.os.metering_label_rules_client
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(MeteringLabelRulesRbacTest, self).tearDown()
@classmethod
def resource_setup(cls):
super(MeteringLabelRulesRbacTest, cls).resource_setup()

View File

@ -41,10 +41,6 @@ class MeteringLabelsRbacTest(base.BaseNetworkRbacTest):
super(MeteringLabelsRbacTest, cls).setup_clients()
cls.metering_labels_client = cls.os.metering_labels_client
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(MeteringLabelsRbacTest, self).tearDown()
def _create_metering_label(self):
body = self.metering_labels_client.create_metering_label(
name=data_utils.rand_name(self.__class__.__name__))

View File

@ -35,10 +35,6 @@ class NetworksMultiProviderRbacTest(base.BaseNetworkRbacTest):
msg = "multi-provider extension not enabled."
raise cls.skipException(msg)
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(NetworksMultiProviderRbacTest, self).tearDown()
def _create_network_segments(self):
segments = [{"provider:network_type": "gre"},
{"provider:network_type": "gre"}]

View File

@ -127,10 +127,6 @@ class RbacNetworksTest(base.BaseNetworkRbacTest):
updated_network = body['network']
return updated_network
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(RbacNetworksTest, self).tearDown()
@rbac_rule_validation.action(service="neutron",
rule="create_network")
@decorators.idempotent_id('95b9baab-1ece-4e2b-89c8-8d671d974e54')

View File

@ -68,10 +68,6 @@ class PortsRbacTest(base.BaseNetworkRbacTest):
return port
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(PortsRbacTest, self).tearDown()
@rbac_rule_validation.action(service="neutron",
rule="create_port")
@decorators.idempotent_id('0ec8c551-625c-4864-8a52-85baa7c40f22')

View File

@ -52,10 +52,6 @@ class RouterRbacTest(base.BaseNetworkRbacTest):
cls.admin_subnet['allocation_pools'][0]['end'])
cls.admin_router = cls.create_router()
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(RouterRbacTest, self).tearDown()
@rbac_rule_validation.action(service="neutron",
rule="create_router")
@decorators.idempotent_id('acc5005c-bdb6-4192-bc9f-ece9035bb488')

View File

@ -29,10 +29,6 @@ LOG = log.getLogger(__name__)
class SecGroupRbacTest(base.BaseNetworkRbacTest):
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(SecGroupRbacTest, self).tearDown()
@classmethod
def resource_setup(cls):
super(SecGroupRbacTest, cls).resource_setup()

View File

@ -38,10 +38,6 @@ class SubnetPoolsRbacTest(base.BaseNetworkRbacTest):
msg = "subnet_allocation extension not enabled."
raise cls.skipException(msg)
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(SubnetPoolsRbacTest, self).tearDown()
def _create_subnetpool(self, shared=None):
post_body = {'name': data_utils.rand_name(self.__class__.__name__),
'min_prefixlen': 24,

View File

@ -36,7 +36,3 @@ class BaseOrchestrationRbacTest(heat_base.BaseOrchestrationTest):
cls.auth_provider = cls.os.auth_provider
cls.rbac_utils = rbac_utils()
cls.rbac_utils.switch_role(cls, switchToRbacRole=False)
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(BaseOrchestrationRbacTest, self).tearDown()

View File

@ -31,10 +31,6 @@ class VolumeQOSRbacTest(rbac_base.BaseVolumeAdminRbacTest):
cls.auth_provider = cls.os.auth_provider
cls.client = cls.admin_volume_qos_client
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(VolumeQOSRbacTest, self).tearDown()
@rbac_rule_validation.action(
service="cinder", rule="volume_extension:qos_specs_manage:create")
@decorators.idempotent_id('4f9f45f0-b379-4577-a279-cec3e917cbec')

View File

@ -39,10 +39,6 @@ class VolumeQuotasAdminRbacTest(rbac_base.BaseVolumeAdminRbacTest):
super(VolumeQuotasAdminRbacTest, cls).setup_clients()
cls.client = cls.os.volume_quotas_client
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(VolumeQuotasAdminRbacTest, self).tearDown()
@rbac_rule_validation.action(service="cinder",
rule="volume_extension:quotas:show")
@decorators.idempotent_id('b3c7177e-b6b1-4d0f-810a-fc95606964dd')

View File

@ -31,10 +31,6 @@ class VolumesBackupsAdminRbacTest(rbac_base.BaseVolumeAdminRbacTest):
if not CONF.volume_feature_enabled.backup:
raise cls.skipException("Cinder backup feature disabled")
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(VolumesBackupsAdminRbacTest, self).tearDown()
@classmethod
def resource_setup(cls):
super(VolumesBackupsAdminRbacTest, cls).resource_setup()

View File

@ -29,10 +29,6 @@ class AvailabilityZoneRbacTest(rbac_base.BaseVolumeRbacTest):
super(AvailabilityZoneRbacTest, cls).setup_clients()
cls.client = cls.availability_zone_client
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(AvailabilityZoneRbacTest, self).tearDown()
@rbac_rule_validation.action(service="cinder",
rule="volume:availability_zone_list")
@decorators.idempotent_id('8cfd920c-4b6c-402d-b6e2-ede86bedc702')

View File

@ -24,10 +24,6 @@ CONF = config.CONF
class ExtensionsRbacTest(rbac_base.BaseVolumeRbacTest):
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(ExtensionsRbacTest, self).tearDown()
@rbac_rule_validation.action(service="cinder",
rule="volume:list_extensions")
@decorators.idempotent_id('7f2dcc41-e850-493f-a400-82db4e2b50c0')

View File

@ -38,10 +38,6 @@ class SnapshotsActionsRbacTest(rbac_base.BaseVolumeRbacTest):
super(SnapshotsActionsRbacTest, cls).setup_clients()
cls.client = cls.os.snapshots_client
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(SnapshotsActionsRbacTest, self).tearDown()
@classmethod
def resource_setup(cls):
super(SnapshotsActionsRbacTest, cls).resource_setup()

View File

@ -30,10 +30,6 @@ class SnapshotMetadataRbacTest(rbac_base.BaseVolumeRbacTest):
if not CONF.volume_feature_enabled.snapshot:
raise cls.skipException("Cinder snapshot feature disabled")
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(SnapshotMetadataRbacTest, self).tearDown()
@classmethod
def resource_setup(cls):
super(SnapshotMetadataRbacTest, cls).resource_setup()

View File

@ -45,10 +45,6 @@ class VolumesActionsRbacTest(rbac_base.BaseVolumeRbacTest):
cls.client = cls.os.volumes_client
cls.image_client = cls.os.image_client
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(VolumesActionsRbacTest, self).tearDown()
@classmethod
def resource_setup(cls):
super(VolumesActionsRbacTest, cls).resource_setup()

View File

@ -29,10 +29,6 @@ LOG = logging.getLogger(__name__)
class CreateDeleteVolumeRbacTest(rbac_base.BaseVolumeRbacTest):
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(CreateDeleteVolumeRbacTest, self).tearDown()
def _create_volume(self):
# create_volume waits for volume status to be
# "available" before returning and automatically

View File

@ -21,10 +21,6 @@ from patrole_tempest_plugin.tests.api.volume import rbac_base
class VolumeHostsAdminRbacTest(rbac_base.BaseVolumeAdminRbacTest):
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(VolumeHostsAdminRbacTest, self).tearDown()
@rbac_rule_validation.action(service="cinder",
rule="volume_extension:hosts")
@decorators.idempotent_id('64e837f5-5452-4e26-b934-c721ea7a8644')

View File

@ -31,10 +31,6 @@ class VolumeMetadataRbacTest(rbac_base.BaseVolumeRbacTest):
super(VolumeMetadataRbacTest, cls).setup_clients()
cls.client = cls.os.volumes_client
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(VolumeMetadataRbacTest, self).tearDown()
def _add_metadata(self, volume):
# Create metadata for the volume
metadata = {"key1": "value1",

View File

@ -35,10 +35,6 @@ class VolumesTransfersRbacTest(rbac_base.BaseVolumeRbacTest):
cls.alt_client = cls.os_alt.volumes_client
cls.alt_tenant_id = cls.alt_client.tenant_id
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(VolumesTransfersRbacTest, self).tearDown()
@classmethod
def resource_setup(cls):
super(VolumesTransfersRbacTest, cls).resource_setup()

View File

@ -24,10 +24,6 @@ CONF = config.CONF
class VolumeTypesExtraSpecsAdminRbacTest(rbac_base.BaseVolumeAdminRbacTest):
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(VolumeTypesExtraSpecsAdminRbacTest, self).tearDown()
@rbac_rule_validation.action(service="cinder",
rule="volume_extension:types_extra_specs")
@decorators.idempotent_id('eea40251-990b-49b0-99ae-10e4585b479b')

View File

@ -32,10 +32,6 @@ class VolumesBackupsRbacTest(rbac_base.BaseVolumeRbacTest):
if not CONF.volume_feature_enabled.backup:
raise cls.skipException("Cinder backup feature disabled")
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(VolumesBackupsRbacTest, self).tearDown()
def create_backup(self, volume_id):
backup_name = data_utils.rand_name(
self.__class__.__name__ + '-Backup')

View File

@ -25,10 +25,6 @@ CONF = config.CONF
class VolumesExtendRbacTest(rbac_base.BaseVolumeRbacTest):
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(VolumesExtendRbacTest, self).tearDown()
@classmethod
def resource_setup(cls):
super(VolumesExtendRbacTest, cls).resource_setup()

View File

@ -29,10 +29,6 @@ class VolumesListRbacTest(rbac_base.BaseVolumeRbacTest):
super(VolumesListRbacTest, cls).setup_clients()
cls.client = cls.os.volumes_client
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(VolumesListRbacTest, self).tearDown()
@rbac_rule_validation.action(service="cinder",
rule="volume:get_all")
@decorators.idempotent_id('e3ab7906-b04b-4c45-aa11-1104d302f940')

View File

@ -32,10 +32,6 @@ class VolumesRbacTest(rbac_base.BaseVolumeRbacTest):
super(VolumesRbacTest, cls).setup_clients()
cls.client = cls.volumes_client
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(VolumesRbacTest, self).tearDown()
@rbac_rule_validation.action(
service="cinder",
rule="volume_extension:volume_admin_actions:reset_status")

View File

@ -29,10 +29,6 @@ class VolumesSnapshotRbacTest(rbac_base.BaseVolumeRbacTest):
super(VolumesSnapshotRbacTest, cls).setup_clients()
cls.client = cls.snapshots_client
def tearDown(self):
self.rbac_utils.switch_role(self, switchToRbacRole=False)
super(VolumesSnapshotRbacTest, self).tearDown()
@classmethod
def skip_checks(cls):
super(VolumesSnapshotRbacTest, cls).skip_checks()

View File

@ -18,20 +18,25 @@ from patrole_tempest_plugin import rbac_exceptions
from patrole_tempest_plugin import rbac_rule_validation as rbac_rv
from tempest.lib import exceptions
from tempest import test
from tempest.tests import base
class RBACRuleValidationTest(base.TestCase):
def setUp(self):
super(RBACRuleValidationTest, self).setUp()
self.mock_args = mock.Mock(spec=test.BaseTestCase)
self.mock_args.auth_provider = mock.Mock()
self.mock_args.rbac_utils = mock.Mock()
self.mock_args.auth_provider.credentials.tenant_id = 'tenant_id'
@mock.patch('patrole_tempest_plugin.rbac_auth.RbacAuthority')
def test_RBAC_rv_happy_path(self, mock_auth):
decorator = rbac_rv.action("", "")
mock_function = mock.Mock()
mock_args = mock.MagicMock(**{
'auth_provider.credentials.tenant_id': 'tenant_id'
})
wrapper = decorator(mock_function)
wrapper((mock_args))
wrapper((self.mock_args))
self.assertTrue(mock_function.called)
@mock.patch('patrole_tempest_plugin.rbac_auth.RbacAuthority')
@ -40,23 +45,17 @@ class RBACRuleValidationTest(base.TestCase):
mock_function = mock.Mock()
mock_function.side_effect = exceptions.Forbidden
wrapper = decorator(mock_function)
mock_args = mock.MagicMock(**{
'auth_provider.credentials.tenant_id': 'tenant_id'
})
self.assertRaises(exceptions.Forbidden, wrapper, mock_args)
self.assertRaises(exceptions.Forbidden, wrapper, self.mock_args)
@mock.patch('patrole_tempest_plugin.rbac_auth.RbacAuthority')
def test_RBAC_rv_rbac_action_failed(self, mock_auth):
decorator = rbac_rv.action("", "")
mock_function = mock.Mock()
mock_function.side_effect = rbac_exceptions.RbacActionFailed
mock_args = mock.MagicMock(**{
'auth_provider.credentials.tenant_id': 'tenant_id'
})
wrapper = decorator(mock_function)
self.assertRaises(exceptions.Forbidden, wrapper, mock_args)
self.assertRaises(exceptions.Forbidden, wrapper, self.mock_args)
@mock.patch('patrole_tempest_plugin.rbac_auth.RbacAuthority')
def test_RBAC_rv_not_allowed(self, mock_auth):
@ -69,12 +68,8 @@ class RBACRuleValidationTest(base.TestCase):
mock_permission.get_permission.return_value = False
mock_auth.return_value = mock_permission
mock_args = mock.MagicMock(**{
'auth_provider.credentials.tenant_id': 'tenant_id'
})
self.assertRaises(rbac_exceptions.RbacOverPermission, wrapper,
mock_args)
self.mock_args)
@mock.patch('patrole_tempest_plugin.rbac_auth.RbacAuthority')
def test_RBAC_rv_forbidden_not_allowed(self, mock_auth):
@ -82,16 +77,13 @@ class RBACRuleValidationTest(base.TestCase):
mock_function = mock.Mock()
mock_function.side_effect = exceptions.Forbidden
mock_args = mock.MagicMock(**{
'auth_provider.credentials.tenant_id': 'tenant_id'
})
wrapper = decorator(mock_function)
mock_permission = mock.Mock()
mock_permission.get_permission.return_value = False
mock_auth.return_value = mock_permission
self.assertIsNone(wrapper(mock_args))
self.assertIsNone(wrapper(self.mock_args))
@mock.patch('patrole_tempest_plugin.rbac_auth.RbacAuthority')
def test_RBAC_rv_rbac_action_failed_not_allowed(self, mock_auth):
@ -105,8 +97,4 @@ class RBACRuleValidationTest(base.TestCase):
mock_permission.get_permission.return_value = False
mock_auth.return_value = mock_permission
mock_args = mock.MagicMock(**{
'auth_provider.credentials.tenant_id': 'tenant_id'
})
self.assertIsNone(wrapper(mock_args))
self.assertIsNone(wrapper(self.mock_args))