Add T115 for admin test path

Sometimes commiters tried to add tempest tests which require admin
credential under non-admin test path and that caused confusions to
tempest users. This patch adds some coding rule to make test path
clear for the maintenance.

NOTE: This patch adds #noqa to AbsoluteLimitsTests because the test
      class needs force_tenant_isolation which requires admin
      credential indirectly but the test itself is not admin test.
      The history is Id71a705cf9b1dd0c0d41a2fb45ab77c95430a123

Change-Id: Id11eec13f2e431af8bbb83ac4904b2047e7932a7
This commit is contained in:
Ken'ichi Ohmichi 2017-05-01 16:56:14 -07:00
parent d64c46b776
commit f741d0b35a
3 changed files with 24 additions and 1 deletions

View File

@ -22,6 +22,7 @@ Tempest Specific Commandments
- [T112] Check that tempest.lib should not import local tempest code
- [T113] Check that tests use data_utils.rand_uuid() instead of uuid.uuid4()
- [T114] Check that tempest.lib does not use tempest config
- [T115] Check that admin tests should exist under admin path
- [N322] Method's default argument shouldn't be mutable
Test Data/Configuration

View File

@ -24,7 +24,7 @@ CONF = config.CONF
# NOTE(zhufl): This inherits from BaseVolumeAdminTest because
# it requires force_tenant_isolation=True, which need admin
# credentials to create non-admin users for the tests.
class AbsoluteLimitsTests(base.BaseVolumeAdminTest):
class AbsoluteLimitsTests(base.BaseVolumeAdminTest): # noqa
# avoid existing volumes of pre-defined tenant
force_tenant_isolation = True

View File

@ -273,6 +273,27 @@ def dont_use_config_in_tempest_lib(logical_line, filename):
yield(0, msg)
def dont_put_admin_tests_on_nonadmin_path(logical_line, physical_line,
filename):
"""Check admin tests should exist under admin path
T115
"""
if 'tempest/api/' not in filename:
return
if pep8.noqa(physical_line):
return
if not re.match('class .*Test.*\(.*Admin.*\):', logical_line):
return
if not re.match('.\/tempest\/api\/.*\/admin\/.*', filename):
msg = 'T115: All admin tests should exist under admin path.'
yield(0, msg)
def factory(register):
register(import_no_clients_in_api_and_scenario_tests)
register(scenario_tests_need_service_tags)
@ -287,3 +308,4 @@ def factory(register):
register(dont_import_local_tempest_into_lib)
register(dont_use_config_in_tempest_lib)
register(use_rand_uuid_instead_of_uuid4)
register(dont_put_admin_tests_on_nonadmin_path)