refactor: Rename PluginRbacTest => ExtRbacTest

This patch set is a follow up on discussion in [0] which
concluded that Patrole should not test Neutron plugins.

The pertinent discussion from [0] is:

Patrole can test Neutron extensions but not plugins in tree
and that requires renaming the classes
(.*PluginRbacTest => .*ExtRbacTest) to make it clearer.

Having to support all the Neutron plugins in tree is out of scope
for Patrole. Clarifying documentation (which will be done in follow
up) can be added to Patrole documentation to make it clear that
it will only test "main" OpenStack projects, like Tempest.

[0] https://review.openstack.org/#/c/599869/

Change-Id: Iab029f2f875ce2268de12cc2a40e30f2f1a913fe
This commit is contained in:
Felipe Monteiro 2018-10-31 23:28:39 -04:00
parent 742b73767b
commit bbbdd9391d
17 changed files with 86 additions and 85 deletions

View File

@ -133,11 +133,14 @@
c-bak: false c-bak: false
- job: - job:
name: patrole-plugin-base name: patrole-extension-base
parent: patrole-base parent: patrole-base
description: | description: |
Patrole plugin job for admin and member roles which Patrole plugin job for admin and member roles which runs RBAC tests for
runs RBAC tests for neutron-tempest-plugin APIs (if the plugin is installed). neutron-tempest-plugin APIs (if the plugin is installed).
Covers Neutron extension functionality only. Should not be used for
supporting Neutron plugins like fwaas.
required-projects: required-projects:
- name: openstack/tempest - name: openstack/tempest
- name: openstack/patrole - name: openstack/patrole
@ -156,22 +159,22 @@
neutron-qos: true neutron-qos: true
- job: - job:
name: patrole-plugin-member name: patrole-extension-member
parent: patrole-plugin-base parent: patrole-extension-base
voting: false voting: false
vars: vars:
devstack_localrc: devstack_localrc:
RBAC_TEST_ROLES: member RBAC_TEST_ROLES: member
tempest_test_regex: (?=.*PluginRbacTest)(^patrole_tempest_plugin\.tests\.api) tempest_test_regex: (?=.*ExtRbacTest)(^patrole_tempest_plugin\.tests\.api)
- job: - job:
name: patrole-plugin-admin name: patrole-extension-admin
parent: patrole-plugin-base parent: patrole-extension-base
voting: false voting: false
vars: vars:
devstack_localrc: devstack_localrc:
RBAC_TEST_ROLES: admin RBAC_TEST_ROLES: admin
tempest_test_regex: (?=.*PluginRbacTest)(^patrole_tempest_plugin\.tests\.api) tempest_test_regex: (?=.*ExtRbacTest)(^patrole_tempest_plugin\.tests\.api)
- project: - project:
templates: templates:
@ -193,8 +196,8 @@
- patrole-py35-member - patrole-py35-member
- patrole-multinode-admin - patrole-multinode-admin
- patrole-multinode-member - patrole-multinode-member
- patrole-plugin-admin - patrole-extension-admin
- patrole-plugin-member - patrole-extension-member
gate: gate:
jobs: jobs:
- patrole-admin - patrole-admin

View File

@ -39,9 +39,9 @@ The following are Patrole's specific Commandments:
- [P102] RBAC test class names must end in 'RbacTest' - [P102] RBAC test class names must end in 'RbacTest'
- [P103] ``self.client`` must not be used as a client alias; this allows for - [P103] ``self.client`` must not be used as a client alias; this allows for
code that is more maintainable and easier to read code that is more maintainable and easier to read
- [P104] RBAC `plugin test class`_ names must end in 'PluginRbacTest' - [P104] RBAC `extension test class`_ names must end in 'ExtRbacTest'
.. _plugin test class: https://github.com/openstack/patrole/tree/master/patrole_tempest_plugin/tests/api/network#neutron-plugin-tests .. _extension test class: https://github.com/openstack/patrole/tree/master/patrole_tempest_plugin/tests/api/network#neutron-extension-rbac-tests
Role Overriding Role Overriding
--------------- ---------------

View File

@ -36,8 +36,8 @@ RBAC_CLASS_NAME_RE = re.compile(r'class .+RbacTest')
RULE_VALIDATION_DECORATOR = re.compile( RULE_VALIDATION_DECORATOR = re.compile(
r'\s*@rbac_rule_validation.action\(.*') r'\s*@rbac_rule_validation.action\(.*')
IDEMPOTENT_ID_DECORATOR = re.compile(r'\s*@decorators\.idempotent_id\((.*)\)') IDEMPOTENT_ID_DECORATOR = re.compile(r'\s*@decorators\.idempotent_id\((.*)\)')
PLUGIN_RBAC_TEST = re.compile( EXT_RBAC_TEST = re.compile(
r"class .+\(.+PluginRbacTest\)|class .+PluginRbacTest\(.+\)") r"class .+\(.+ExtRbacTest\)|class .+ExtRbacTest\(.+\)")
have_rbac_decorator = False have_rbac_decorator = False
@ -213,15 +213,15 @@ def no_client_alias_in_test_cases(logical_line, filename):
return 0, "Do not use 'self.client' as a service client alias" return 0, "Do not use 'self.client' as a service client alias"
def no_plugin_rbac_test_suffix_in_plugin_test_class_name(physical_line, def no_extension_rbac_test_suffix_in_plugin_test_class_name(physical_line,
filename): filename):
"""Check that Plugin RBAC class names end with "PluginRbacTest" """Check that Extension RBAC class names end with "ExtRbacTest"
P104 P104
""" """
suffix = "PluginRbacTest" suffix = "ExtRbacTest"
if "patrole_tempest_plugin/tests/api" in filename: if "patrole_tempest_plugin/tests/api" in filename:
if PLUGIN_RBAC_TEST.match(physical_line): if EXT_RBAC_TEST.match(physical_line):
subclass, superclass = physical_line.split('(') subclass, superclass = physical_line.split('(')
subclass = subclass.split('class')[1].strip() subclass = subclass.split('class')[1].strip()
superclass = superclass.split(')')[0].strip() superclass = superclass.split(')')[0].strip()
@ -238,16 +238,16 @@ def no_plugin_rbac_test_suffix_in_plugin_test_class_name(physical_line,
superclass.startswith("Base")): superclass.startswith("Base")):
return return
# Case 1: Subclass of "BasePluginRbacTest" must end in `suffix` # Case 1: Subclass of "BaseExtRbacTest" must end in `suffix`
# Case 2: Subclass that ends in `suffix` must inherit from base # Case 2: Subclass that ends in `suffix` must inherit from base
# class ending in `suffix`. # class ending in `suffix`.
if not subclass.endswith(suffix): if not subclass.endswith(suffix):
error = ("Plugin RBAC test subclasses must end in " error = ("Plugin RBAC test subclasses must end in "
"'PluginRbacTest'") "'ExtRbacTest'")
return len(subclass) - 1, error return len(subclass) - 1, error
elif not superclass.endswith(suffix): elif not superclass.endswith(suffix):
error = ("Plugin RBAC test subclasses must inherit from a " error = ("Plugin RBAC test subclasses must inherit from a "
"'PluginRbacTest' base class") "'ExtRbacTest' base class")
return len(superclass) - 1, error return len(superclass) - 1, error
@ -263,4 +263,4 @@ def factory(register):
register(no_rbac_rule_validation_decorator) register(no_rbac_rule_validation_decorator)
register(no_rbac_suffix_in_test_filename) register(no_rbac_suffix_in_test_filename)
register(no_rbac_test_suffix_in_test_class_name) register(no_rbac_test_suffix_in_test_class_name)
register(no_plugin_rbac_test_suffix_in_plugin_test_class_name) register(no_extension_rbac_test_suffix_in_plugin_test_class_name)

View File

@ -10,7 +10,7 @@ These tests are RBAC tests for Neutron and its associated plugins. They are
broken up into the following categories: broken up into the following categories:
* :ref:`neutron-rbac-tests` * :ref:`neutron-rbac-tests`
* :ref:`neutron-plugin-rbac-tests` * :ref:`neutron-extension-rbac-tests`
.. _neutron-rbac-tests: .. _neutron-rbac-tests:
@ -22,18 +22,16 @@ test many of the Neutron policies found in the service's `policy.json file`_.
These tests are gated in many `Zuul jobs`_ (master, n-1, n-2) against many These tests are gated in many `Zuul jobs`_ (master, n-1, n-2) against many
roles (member, admin). roles (member, admin).
.. _neutron-plugin-rbac-tests: .. _neutron-extension-rbac-tests:
Neutron plugin tests Neutron extension tests
^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^
The Neutron RBAC plugin tests focus on testing RBAC for various Neutron The Neutron RBAC plugin tests focus on testing RBAC for various Neutron
extensions and plugins, or, stated differently: extensions, or, stated differently: tests that rely on
`neutron-tempest-plugin`_.
* tests that rely on `neutron-tempest-plugin`_ These tests inherit from the base class ``BaseNetworkExtRbacTest``. If an
* external Neutron plugins
These tests inherit from the base class ``BaseNetworkPluginRbacTest``. If an
extension or plugin is not enabled in the cloud, the corresponding tests are extension or plugin is not enabled in the cloud, the corresponding tests are
gracefully skipped. gracefully skipped.

View File

@ -27,7 +27,7 @@ class BaseNetworkRbacTest(rbac_utils.RbacUtilsMixin,
cls.setup_rbac_utils() cls.setup_rbac_utils()
class BaseNetworkPluginRbacTest(BaseNetworkRbacTest): class BaseNetworkExtRbacTest(BaseNetworkRbacTest):
"""Base class to be used with tests that require neutron-tempest-plugin. """Base class to be used with tests that require neutron-tempest-plugin.
""" """
@ -35,14 +35,14 @@ class BaseNetworkPluginRbacTest(BaseNetworkRbacTest):
def get_auth_providers(cls): def get_auth_providers(cls):
"""Register auth_provider from neutron-tempest-plugin. """Register auth_provider from neutron-tempest-plugin.
""" """
providers = super(BaseNetworkPluginRbacTest, cls).get_auth_providers() providers = super(BaseNetworkExtRbacTest, cls).get_auth_providers()
if cls.is_neutron_tempest_plugin_avaliable(): if cls.is_neutron_tempest_plugin_avaliable():
providers.append(cls.ntp_client.auth_provider) providers.append(cls.ntp_client.auth_provider)
return providers return providers
@classmethod @classmethod
def skip_checks(cls): def skip_checks(cls):
super(BaseNetworkPluginRbacTest, cls).skip_checks() super(BaseNetworkExtRbacTest, cls).skip_checks()
if not cls.is_neutron_tempest_plugin_avaliable(): if not cls.is_neutron_tempest_plugin_avaliable():
msg = ("neutron-tempest-plugin not installed.") msg = ("neutron-tempest-plugin not installed.")
@ -59,7 +59,7 @@ class BaseNetworkPluginRbacTest(BaseNetworkRbacTest):
@classmethod @classmethod
def get_client_manager(cls, credential_type=None, roles=None, def get_client_manager(cls, credential_type=None, roles=None,
force_new=None): force_new=None):
manager = super(BaseNetworkPluginRbacTest, cls).get_client_manager( manager = super(BaseNetworkExtRbacTest, cls).get_client_manager(
credential_type=credential_type, credential_type=credential_type,
roles=roles, roles=roles,
force_new=force_new force_new=force_new

View File

@ -23,18 +23,18 @@ from patrole_tempest_plugin import rbac_rule_validation
from patrole_tempest_plugin.tests.api.network import rbac_base as base from patrole_tempest_plugin.tests.api.network import rbac_base as base
class AddressScopePluginRbacTest(base.BaseNetworkPluginRbacTest): class AddressScopeExtRbacTest(base.BaseNetworkExtRbacTest):
@classmethod @classmethod
def skip_checks(cls): def skip_checks(cls):
super(AddressScopePluginRbacTest, cls).skip_checks() super(AddressScopeExtRbacTest, cls).skip_checks()
if not utils.is_extension_enabled('address-scope', 'network'): if not utils.is_extension_enabled('address-scope', 'network'):
msg = "address-scope extension not enabled." msg = "address-scope extension not enabled."
raise cls.skipException(msg) raise cls.skipException(msg)
@classmethod @classmethod
def resource_setup(cls): def resource_setup(cls):
super(AddressScopePluginRbacTest, cls).resource_setup() super(AddressScopeExtRbacTest, cls).resource_setup()
cls.network = cls.create_network() cls.network = cls.create_network()
def _create_address_scope(self, name=None, **kwargs): def _create_address_scope(self, name=None, **kwargs):

View File

@ -238,18 +238,18 @@ class DHCPAgentSchedulersRbacTest(base.BaseNetworkRbacTest):
self.agent['id'], network_id=network_id) self.agent['id'], network_id=network_id)
class L3AgentsPluginRbacTest(base.BaseNetworkPluginRbacTest): class L3AgentsExtRbacTest(base.BaseNetworkExtRbacTest):
@classmethod @classmethod
def skip_checks(cls): def skip_checks(cls):
super(L3AgentsPluginRbacTest, cls).skip_checks() super(L3AgentsExtRbacTest, cls).skip_checks()
if not utils.is_extension_enabled('l3_agent_scheduler', 'network'): if not utils.is_extension_enabled('l3_agent_scheduler', 'network'):
msg = "l3_agent_scheduler extension not enabled." msg = "l3_agent_scheduler extension not enabled."
raise cls.skipException(msg) raise cls.skipException(msg)
@classmethod @classmethod
def resource_setup(cls): def resource_setup(cls):
super(L3AgentsPluginRbacTest, cls).resource_setup() super(L3AgentsExtRbacTest, cls).resource_setup()
name = data_utils.rand_name(cls.__name__ + '-Router') name = data_utils.rand_name(cls.__name__ + '-Router')
cls.router = cls.ntp_client.create_router(name)['router'] cls.router = cls.ntp_client.create_router(name)['router']

View File

@ -20,11 +20,11 @@ from patrole_tempest_plugin import rbac_rule_validation
from patrole_tempest_plugin.tests.api.network import rbac_base as base from patrole_tempest_plugin.tests.api.network import rbac_base as base
class AutoAllocationTopologyPluginRbacTest(base.BaseNetworkPluginRbacTest): class AutoAllocationTopologyExtRbacTest(base.BaseNetworkExtRbacTest):
@classmethod @classmethod
def skip_checks(cls): def skip_checks(cls):
super(AutoAllocationTopologyPluginRbacTest, cls).skip_checks() super(AutoAllocationTopologyExtRbacTest, cls).skip_checks()
if not utils.is_extension_enabled('auto-allocated-topology', if not utils.is_extension_enabled('auto-allocated-topology',
'network'): 'network'):
msg = "auto-allocated-topology extension not enabled." msg = "auto-allocated-topology extension not enabled."

View File

@ -22,18 +22,18 @@ from patrole_tempest_plugin import rbac_rule_validation
from patrole_tempest_plugin.tests.api.network import rbac_base as base from patrole_tempest_plugin.tests.api.network import rbac_base as base
class DscpMarkingRulePluginRbacTest(base.BaseNetworkPluginRbacTest): class DscpMarkingRuleExtRbacTest(base.BaseNetworkExtRbacTest):
@classmethod @classmethod
def skip_checks(cls): def skip_checks(cls):
super(DscpMarkingRulePluginRbacTest, cls).skip_checks() super(DscpMarkingRuleExtRbacTest, cls).skip_checks()
if not utils.is_extension_enabled('qos', 'network'): if not utils.is_extension_enabled('qos', 'network'):
msg = "qos extension not enabled." msg = "qos extension not enabled."
raise cls.skipException(msg) raise cls.skipException(msg)
@classmethod @classmethod
def resource_setup(cls): def resource_setup(cls):
super(DscpMarkingRulePluginRbacTest, cls).resource_setup() super(DscpMarkingRuleExtRbacTest, cls).resource_setup()
name = data_utils.rand_name(cls.__class__.__name__ + '-qos') name = data_utils.rand_name(cls.__class__.__name__ + '-qos')
cls.policy_id = cls.ntp_client.create_qos_policy( cls.policy_id = cls.ntp_client.create_qos_policy(
name=name)["policy"]["id"] name=name)["policy"]["id"]

View File

@ -23,11 +23,11 @@ from patrole_tempest_plugin import rbac_rule_validation
from patrole_tempest_plugin.tests.api.network import rbac_base as base from patrole_tempest_plugin.tests.api.network import rbac_base as base
class FlavorsPluginRbacTest(base.BaseNetworkPluginRbacTest): class FlavorsExtRbacTest(base.BaseNetworkExtRbacTest):
@classmethod @classmethod
def resource_setup(cls): def resource_setup(cls):
super(FlavorsPluginRbacTest, cls).resource_setup() super(FlavorsExtRbacTest, cls).resource_setup()
providers = cls.ntp_client.list_service_providers() providers = cls.ntp_client.list_service_providers()
if not providers["service_providers"]: if not providers["service_providers"]:
raise cls.skipException("No service_providers available.") raise cls.skipException("No service_providers available.")
@ -120,10 +120,10 @@ class FlavorsPluginRbacTest(base.BaseNetworkPluginRbacTest):
self.ntp_client.list_flavors() self.ntp_client.list_flavors()
class FlavorsServiceProfilePluginRbacTest(base.BaseNetworkPluginRbacTest): class FlavorsServiceProfileExtRbacTest(base.BaseNetworkExtRbacTest):
@classmethod @classmethod
def resource_setup(cls): def resource_setup(cls):
super(FlavorsServiceProfilePluginRbacTest, cls).resource_setup() super(FlavorsServiceProfileExtRbacTest, cls).resource_setup()
providers = cls.ntp_client.list_service_providers() providers = cls.ntp_client.list_service_providers()
if not providers["service_providers"]: if not providers["service_providers"]:
raise cls.skipException("No service_providers available.") raise cls.skipException("No service_providers available.")

View File

@ -22,18 +22,18 @@ from patrole_tempest_plugin import rbac_rule_validation
from patrole_tempest_plugin.tests.api.network import rbac_base as base from patrole_tempest_plugin.tests.api.network import rbac_base as base
class PolicyBandwidthLimitRulePluginRbacTest(base.BaseNetworkPluginRbacTest): class PolicyBandwidthLimitRuleExtRbacTest(base.BaseNetworkExtRbacTest):
@classmethod @classmethod
def skip_checks(cls): def skip_checks(cls):
super(PolicyBandwidthLimitRulePluginRbacTest, cls).skip_checks() super(PolicyBandwidthLimitRuleExtRbacTest, cls).skip_checks()
if not utils.is_extension_enabled('qos', 'network'): if not utils.is_extension_enabled('qos', 'network'):
msg = "qos extension not enabled." msg = "qos extension not enabled."
raise cls.skipException(msg) raise cls.skipException(msg)
@classmethod @classmethod
def resource_setup(cls): def resource_setup(cls):
super(PolicyBandwidthLimitRulePluginRbacTest, cls).resource_setup() super(PolicyBandwidthLimitRuleExtRbacTest, cls).resource_setup()
name = data_utils.rand_name(cls.__class__.__name__ + '-qos-policy') name = data_utils.rand_name(cls.__class__.__name__ + '-qos-policy')
cls.policy_id = cls.ntp_client.create_qos_policy( cls.policy_id = cls.ntp_client.create_qos_policy(
name=name)["policy"]["id"] name=name)["policy"]["id"]

View File

@ -22,18 +22,18 @@ from patrole_tempest_plugin import rbac_rule_validation
from patrole_tempest_plugin.tests.api.network import rbac_base as base from patrole_tempest_plugin.tests.api.network import rbac_base as base
class PolicyMinimumBandwidthRulePluginRbacTest(base.BaseNetworkPluginRbacTest): class PolicyMinimumBandwidthRuleExtRbacTest(base.BaseNetworkExtRbacTest):
@classmethod @classmethod
def skip_checks(cls): def skip_checks(cls):
super(PolicyMinimumBandwidthRulePluginRbacTest, cls).skip_checks() super(PolicyMinimumBandwidthRuleExtRbacTest, cls).skip_checks()
if not utils.is_extension_enabled('qos', 'network'): if not utils.is_extension_enabled('qos', 'network'):
msg = "qos extension not enabled." msg = "qos extension not enabled."
raise cls.skipException(msg) raise cls.skipException(msg)
@classmethod @classmethod
def resource_setup(cls): def resource_setup(cls):
super(PolicyMinimumBandwidthRulePluginRbacTest, cls).resource_setup() super(PolicyMinimumBandwidthRuleExtRbacTest, cls).resource_setup()
name = data_utils.rand_name(cls.__class__.__name__ + '-qos') name = data_utils.rand_name(cls.__class__.__name__ + '-qos')
cls.policy_id = cls.ntp_client.create_qos_policy( cls.policy_id = cls.ntp_client.create_qos_policy(
name=name)["policy"]["id"] name=name)["policy"]["id"]

View File

@ -22,18 +22,18 @@ from patrole_tempest_plugin import rbac_rule_validation
from patrole_tempest_plugin.tests.api.network import rbac_base as base from patrole_tempest_plugin.tests.api.network import rbac_base as base
class QosPluginRbacTest(base.BaseNetworkPluginRbacTest): class QosExtRbacTest(base.BaseNetworkExtRbacTest):
@classmethod @classmethod
def skip_checks(cls): def skip_checks(cls):
super(QosPluginRbacTest, cls).skip_checks() super(QosExtRbacTest, cls).skip_checks()
if not utils.is_extension_enabled('qos', 'network'): if not utils.is_extension_enabled('qos', 'network'):
msg = "qos extension not enabled." msg = "qos extension not enabled."
raise cls.skipException(msg) raise cls.skipException(msg)
@classmethod @classmethod
def resource_setup(cls): def resource_setup(cls):
super(QosPluginRbacTest, cls).resource_setup() super(QosExtRbacTest, cls).resource_setup()
cls.network = cls.create_network() cls.network = cls.create_network()
def create_policy(self, name=None): def create_policy(self, name=None):

View File

@ -20,11 +20,11 @@ from patrole_tempest_plugin import rbac_rule_validation
from patrole_tempest_plugin.tests.api.network import rbac_base as base from patrole_tempest_plugin.tests.api.network import rbac_base as base
class RbacPoliciesPluginRbacTest(base.BaseNetworkPluginRbacTest): class RbacPoliciesExtRbacTest(base.BaseNetworkExtRbacTest):
@classmethod @classmethod
def resource_setup(cls): def resource_setup(cls):
super(RbacPoliciesPluginRbacTest, cls).resource_setup() super(RbacPoliciesExtRbacTest, cls).resource_setup()
cls.tenant_id = cls.os_primary.credentials.tenant_id cls.tenant_id = cls.os_primary.credentials.tenant_id
cls.network_id = cls.create_network()['id'] cls.network_id = cls.create_network()['id']

View File

@ -23,18 +23,18 @@ from patrole_tempest_plugin import rbac_rule_validation
from patrole_tempest_plugin.tests.api.network import rbac_base as base from patrole_tempest_plugin.tests.api.network import rbac_base as base
class SegmentsPluginRbacTest(base.BaseNetworkPluginRbacTest): class SegmentsExtRbacTest(base.BaseNetworkExtRbacTest):
@classmethod @classmethod
def skip_checks(cls): def skip_checks(cls):
super(SegmentsPluginRbacTest, cls).skip_checks() super(SegmentsExtRbacTest, cls).skip_checks()
if not utils.is_extension_enabled('segment', 'network'): if not utils.is_extension_enabled('segment', 'network'):
msg = "segment extension not enabled." msg = "segment extension not enabled."
raise cls.skipException(msg) raise cls.skipException(msg)
@classmethod @classmethod
def resource_setup(cls): def resource_setup(cls):
super(SegmentsPluginRbacTest, cls).resource_setup() super(SegmentsExtRbacTest, cls).resource_setup()
cls.network = cls.create_network() cls.network = cls.create_network()
@classmethod @classmethod

View File

@ -21,18 +21,18 @@ from patrole_tempest_plugin import rbac_rule_validation
from patrole_tempest_plugin.tests.api.network import rbac_base as base from patrole_tempest_plugin.tests.api.network import rbac_base as base
class TrunksPluginRbacTest(base.BaseNetworkPluginRbacTest): class TrunksExtRbacTest(base.BaseNetworkExtRbacTest):
@classmethod @classmethod
def skip_checks(cls): def skip_checks(cls):
super(TrunksPluginRbacTest, cls).skip_checks() super(TrunksExtRbacTest, cls).skip_checks()
if not utils.is_extension_enabled('trunk', 'network'): if not utils.is_extension_enabled('trunk', 'network'):
msg = "trunk extension not enabled." msg = "trunk extension not enabled."
raise cls.skipException(msg) raise cls.skipException(msg)
@classmethod @classmethod
def resource_setup(cls): def resource_setup(cls):
super(TrunksPluginRbacTest, cls).resource_setup() super(TrunksExtRbacTest, cls).resource_setup()
cls.network = cls.create_network() cls.network = cls.create_network()
cls.port_id = cls.create_port(cls.network)["id"] cls.port_id = cls.create_port(cls.network)["id"]

View File

@ -257,10 +257,10 @@ class RBACHackingTestCase(base.TestCase):
" cls.client", " cls.client",
"./patrole_tempest_plugin/tests/api/fake_test_rbac.py")) "./patrole_tempest_plugin/tests/api/fake_test_rbac.py"))
def test_no_plugin_rbac_test_suffix_in_plugin_test_class_name(self): def no_extension_rbac_test_suffix_in_plugin_test_class_name(self):
check = checks.no_plugin_rbac_test_suffix_in_plugin_test_class_name check = checks.no_extension_rbac_test_suffix_in_plugin_test_class_name
# Passing cases: these do not inherit from "PluginRbacTest" base class. # Passing cases: these do not inherit from "ExtRbacTest" base class.
self.assertFalse(check( self.assertFalse(check(
"class FakeRbacTest(BaseFakeRbacTest)", "class FakeRbacTest(BaseFakeRbacTest)",
"./patrole_tempest_plugin/tests/api/fake_test_rbac.py")) "./patrole_tempest_plugin/tests/api/fake_test_rbac.py"))
@ -270,39 +270,39 @@ class RBACHackingTestCase(base.TestCase):
# Passing cases: these **do** end in correct test class suffix. # Passing cases: these **do** end in correct test class suffix.
self.assertFalse(check( self.assertFalse(check(
"class FakePluginRbacTest(BaseFakePluginRbacTest)", "class FakeExtRbacTest(BaseFakeExtRbacTest)",
"./patrole_tempest_plugin/tests/api/fake_test_rbac.py")) "./patrole_tempest_plugin/tests/api/fake_test_rbac.py"))
self.assertFalse(check( self.assertFalse(check(
"class FakePluginRbacTest(base.BaseFakePluginRbacTest)", "class FakeExtRbacTest(base.BaseFakeExtRbacTest)",
"./patrole_tempest_plugin/tests/api/fake_test_rbac.py")) "./patrole_tempest_plugin/tests/api/fake_test_rbac.py"))
# Passing cases: plugin base class inherits from another base class. # Passing cases: plugin base class inherits from another base class.
self.assertFalse(check( self.assertFalse(check(
"class BaseFakePluginRbacTest(base.BaseFakeRbacTest)", "class BaseFakeExtRbacTest(base.BaseFakeRbacTest)",
"./patrole_tempest_plugin/tests/api/fake_test_rbac.py")) "./patrole_tempest_plugin/tests/api/fake_test_rbac.py"))
self.assertFalse(check( self.assertFalse(check(
"class BaseFakePluginRbacTest(BaseFakeRbacTest)", "class BaseFakeExtRbacTest(BaseFakeRbacTest)",
"./patrole_tempest_plugin/tests/api/fake_test_rbac.py")) "./patrole_tempest_plugin/tests/api/fake_test_rbac.py"))
# Failing cases: these **do not** end in correct test class suffix. # Failing cases: these **do not** end in correct test class suffix.
# Case 1: RbacTest subclass doesn't end in PluginRbacTest. # Case 1: RbacTest subclass doesn't end in ExtRbacTest.
self.assertTrue(check( self.assertTrue(check(
"class FakeRbacTest(base.BaseFakePluginRbacTest)", "class FakeRbacTest(base.BaseFakeExtRbacTest)",
"./patrole_tempest_plugin/tests/api/fake_test_rbac.py")) "./patrole_tempest_plugin/tests/api/fake_test_rbac.py"))
self.assertTrue(check( self.assertTrue(check(
"class FakeRbacTest(BaseFakePluginRbacTest)", "class FakeRbacTest(BaseFakeExtRbacTest)",
"./patrole_tempest_plugin/tests/api/fake_test_rbac.py")) "./patrole_tempest_plugin/tests/api/fake_test_rbac.py"))
self.assertTrue(check( self.assertTrue(check(
"class FakeRbacTest(BaseFakeNetworkPluginRbacTest)", "class FakeRbacTest(BaseFakeNetworkExtRbacTest)",
"./patrole_tempest_plugin/tests/api/network/fake_test_rbac.py")) "./patrole_tempest_plugin/tests/api/network/fake_test_rbac.py"))
# Case 2: PluginRbacTest subclass doesn't inherit from # Case 2: ExtRbacTest subclass doesn't inherit from
# BasePluginRbacTest. # BaseExtRbacTest.
self.assertTrue(check( self.assertTrue(check(
"class FakePluginRbacTest(base.BaseFakeRbacTest)", "class FakeExtRbacTest(base.BaseFakeRbacTest)",
"./patrole_tempest_plugin/tests/api/fake_test_rbac.py")) "./patrole_tempest_plugin/tests/api/fake_test_rbac.py"))
self.assertTrue(check( self.assertTrue(check(
"class FakePluginRbacTest(BaseFakeRbacTest)", "class FakeExtRbacTest(BaseFakeRbacTest)",
"./patrole_tempest_plugin/tests/api/fake_test_rbac.py")) "./patrole_tempest_plugin/tests/api/fake_test_rbac.py"))
self.assertTrue(check( self.assertTrue(check(
"class FakeNeutronPluginRbacTest(BaseFakeNeutronRbacTest)", "class FakeNeutronExtRbacTest(BaseFakeNeutronRbacTest)",
"./patrole_tempest_plugin/tests/api/fake_test_rbac.py")) "./patrole_tempest_plugin/tests/api/fake_test_rbac.py"))