From 8e3aacd7e99343f6bef2cebe33a21394c51540d5 Mon Sep 17 00:00:00 2001 From: zhufl Date: Mon, 27 Apr 2020 14:46:46 +0800 Subject: [PATCH] Adding description for testcases - identity part2 When Tempest is used in customer site, often we are required to provide a testcase list including testcase names and descriptions. Now no this kind of doc is available, so we can add descriptions with the format of doc string for every testcase, so later we can generata such a testcase description list. There are hundreds of testcases missing descriptions, so we can add them gradually, and limit the modified files in one patch for the convenience of reviewing. Change-Id: Ifd23fd4cc442a3188a5a19b506694abffadea610 partially-implements: blueprint testcase-description --- tempest/api/identity/v2/test_api_discovery.py | 5 ++++- tempest/api/identity/v2/test_extension.py | 3 ++- tempest/api/identity/v2/test_tenants.py | 2 ++ tempest/api/identity/v2/test_tokens.py | 3 ++- tempest/api/identity/v2/test_users.py | 2 ++ tempest/api/identity/v3/test_api_discovery.py | 15 +++++++++++---- tempest/api/identity/v3/test_domains.py | 2 ++ tempest/api/identity/v3/test_projects.py | 2 ++ tempest/api/identity/v3/test_tokens.py | 13 +++++++++---- tempest/api/identity/v3/test_users.py | 4 ++++ 10 files changed, 40 insertions(+), 11 deletions(-) diff --git a/tempest/api/identity/v2/test_api_discovery.py b/tempest/api/identity/v2/test_api_discovery.py index 5b9d38c481..afda104f79 100644 --- a/tempest/api/identity/v2/test_api_discovery.py +++ b/tempest/api/identity/v2/test_api_discovery.py @@ -18,11 +18,12 @@ from tempest.lib import decorators class TestApiDiscovery(base.BaseIdentityV2Test): - """Tests for API discovery features.""" + """Tests for identity v2 API discovery features.""" @decorators.attr(type='smoke') @decorators.idempotent_id('ea889a68-a15f-4166-bfb1-c12456eae853') def test_api_version_resources(self): + """Test showing identity v2 api version resources""" descr = self.non_admin_client.show_api_description()['version'] expected_resources = ('id', 'links', 'media-types', 'status', 'updated') @@ -34,6 +35,7 @@ class TestApiDiscovery(base.BaseIdentityV2Test): @decorators.attr(type='smoke') @decorators.idempotent_id('007a0be0-78fe-4fdb-bbee-e9216cc17bb2') def test_api_media_types(self): + """Test showing identity v2 api version media type""" descr = self.non_admin_client.show_api_description()['version'] # Get MIME type bases and descriptions media_types = [(media_type['base'], media_type['type']) for @@ -49,6 +51,7 @@ class TestApiDiscovery(base.BaseIdentityV2Test): @decorators.attr(type='smoke') @decorators.idempotent_id('77fd6be0-8801-48e6-b9bf-38cdd2f253ec') def test_api_version_statuses(self): + """Test showing identity v2 api version status""" descr = self.non_admin_client.show_api_description()['version'] status = descr['status'].lower() supported_statuses = ['current', 'stable', 'experimental', diff --git a/tempest/api/identity/v2/test_extension.py b/tempest/api/identity/v2/test_extension.py index c538c142cc..13555bdf01 100644 --- a/tempest/api/identity/v2/test_extension.py +++ b/tempest/api/identity/v2/test_extension.py @@ -18,10 +18,11 @@ from tempest.lib import decorators class ExtensionTestJSON(base.BaseIdentityV2Test): + """Test extensions in identity v2 API""" @decorators.idempotent_id('85f3f661-f54c-4d48-b563-72ae952b9383') def test_list_extensions(self): - # List all the extensions + """List all the identity extensions via v2 API""" body = self.non_admin_client.list_extensions()['extensions']['values'] self.assertNotEmpty(body) keys = ['name', 'updated', 'alias', 'links', diff --git a/tempest/api/identity/v2/test_tenants.py b/tempest/api/identity/v2/test_tenants.py index b2a6d13c3a..1752b650fb 100644 --- a/tempest/api/identity/v2/test_tenants.py +++ b/tempest/api/identity/v2/test_tenants.py @@ -19,11 +19,13 @@ from tempest.lib import exceptions as lib_exc class IdentityTenantsTest(base.BaseIdentityV2Test): + """Test listing tenants in identity v2 API""" credentials = ['primary', 'alt'] @decorators.idempotent_id('ecae2459-243d-4ba1-ad02-65f15dc82b78') def test_list_tenants_returns_only_authorized_tenants(self): + """Test listing tenants only returns authorized tenants via v2 API""" alt_tenant_name = self.os_alt.credentials.tenant_name resp = self.non_admin_tenants_client.list_tenants() diff --git a/tempest/api/identity/v2/test_tokens.py b/tempest/api/identity/v2/test_tokens.py index 64b81c229b..a928ad9f4f 100644 --- a/tempest/api/identity/v2/test_tokens.py +++ b/tempest/api/identity/v2/test_tokens.py @@ -20,10 +20,11 @@ from tempest.lib import decorators class TokensTest(base.BaseIdentityV2Test): + """Test tokens in identity v2 API""" @decorators.idempotent_id('65ae3b78-91ff-467b-a705-f6678863b8ec') def test_create_token(self): - + """Test creating token for user via v2 API""" token_client = self.non_admin_token_client # get a token for the user diff --git a/tempest/api/identity/v2/test_users.py b/tempest/api/identity/v2/test_users.py index 2eea86093c..a63b45ca6f 100644 --- a/tempest/api/identity/v2/test_users.py +++ b/tempest/api/identity/v2/test_users.py @@ -28,6 +28,7 @@ CONF = config.CONF class IdentityUsersTest(base.BaseIdentityV2Test): + """Test user password in identity v2 API""" @classmethod def resource_setup(cls): @@ -85,6 +86,7 @@ class IdentityUsersTest(base.BaseIdentityV2Test): 'immutable user source and solely ' 'provides read-only access to users.') def test_user_update_own_password(self): + """test updating user's own password via v2 API""" old_pass = self.creds.password old_token = self.non_admin_users_client.token new_pass = data_utils.rand_password() diff --git a/tempest/api/identity/v3/test_api_discovery.py b/tempest/api/identity/v3/test_api_discovery.py index e87d1cd033..ebb96fd1be 100644 --- a/tempest/api/identity/v3/test_api_discovery.py +++ b/tempest/api/identity/v3/test_api_discovery.py @@ -22,10 +22,11 @@ CONF = config.CONF class TestApiDiscovery(base.BaseIdentityV3Test): - """Tests for API discovery features.""" + """Tests for identity API discovery features.""" @decorators.idempotent_id('79aec9ae-710f-4c54-a4fc-3aa25b4feac3') def test_identity_v3_existence(self): + """Test that identity v3 version should exist""" versions = self.non_admin_versions_client.list_versions() found = any( "v3" in version.get('id') @@ -35,9 +36,12 @@ class TestApiDiscovery(base.BaseIdentityV3Test): @decorators.idempotent_id('721f480f-35b6-46c7-846e-047e6acea0dc') @decorators.attr(type='smoke') def test_list_api_versions(self): - # NOTE: Actually this API doesn't depend on v3 API at all, because - # the API operation is "GET /" without v3's endpoint. The reason of - # this test path is just v3 API is CURRENT on Keystone side. + """Test listing identity api versions + + NOTE: Actually this API doesn't depend on v3 API at all, because + the API operation is "GET /" without v3's endpoint. The reason of + this test path is just v3 API is CURRENT on Keystone side. + """ versions = self.non_admin_versions_client.list_versions() expected_resources = ('id', 'links', 'media-types', 'status', 'updated') @@ -49,6 +53,7 @@ class TestApiDiscovery(base.BaseIdentityV3Test): @decorators.attr(type='smoke') @decorators.idempotent_id('b9232f5e-d9e5-4d97-b96c-28d3db4de1bd') def test_api_version_resources(self): + """Test showing identity v3 api version resources""" descr = self.non_admin_client.show_api_description()['version'] expected_resources = ('id', 'links', 'media-types', 'status', 'updated') @@ -60,6 +65,7 @@ class TestApiDiscovery(base.BaseIdentityV3Test): @decorators.attr(type='smoke') @decorators.idempotent_id('657c1970-4722-4189-8831-7325f3bc4265') def test_api_media_types(self): + """Test showing identity v3 api version media type""" descr = self.non_admin_client.show_api_description()['version'] # Get MIME type bases and descriptions media_types = [(media_type['base'], media_type['type']) for @@ -75,6 +81,7 @@ class TestApiDiscovery(base.BaseIdentityV3Test): @decorators.attr(type='smoke') @decorators.idempotent_id('8879a470-abfb-47bb-bb8d-5a7fd279ad1e') def test_api_version_statuses(self): + """Test showing identity v3 api version status""" descr = self.non_admin_client.show_api_description()['version'] status = descr['status'].lower() supported_statuses = ['current', 'stable', 'experimental', diff --git a/tempest/api/identity/v3/test_domains.py b/tempest/api/identity/v3/test_domains.py index 9f132dd8fc..bb62ea6391 100644 --- a/tempest/api/identity/v3/test_domains.py +++ b/tempest/api/identity/v3/test_domains.py @@ -21,6 +21,7 @@ CONF = config.CONF class DefaultDomainTestJSON(base.BaseIdentityV3Test): + """Test identity default domains""" @classmethod def setup_clients(cls): @@ -35,5 +36,6 @@ class DefaultDomainTestJSON(base.BaseIdentityV3Test): @decorators.attr(type='smoke') @decorators.idempotent_id('17a5de24-e6a0-4e4a-a9ee-d85b6e5612b5') def test_default_domain_exists(self): + """Test showing default domain""" domain = self.domains_client.show_domain(self.domain_id)['domain'] self.assertTrue(domain['enabled']) diff --git a/tempest/api/identity/v3/test_projects.py b/tempest/api/identity/v3/test_projects.py index bbb40132d4..338b57b3db 100644 --- a/tempest/api/identity/v3/test_projects.py +++ b/tempest/api/identity/v3/test_projects.py @@ -19,11 +19,13 @@ from tempest.lib import exceptions as lib_exc class IdentityV3ProjectsTest(base.BaseIdentityV3Test): + """Test identity projects""" credentials = ['primary', 'alt'] @decorators.idempotent_id('86128d46-e170-4644-866a-cc487f699e1d') def test_list_projects_returns_only_authorized_projects(self): + """Test listing projects only returns authorized projects""" alt_project_name = self.os_alt.credentials.project_name resp = self.non_admin_users_client.list_user_projects( self.os_primary.credentials.user_id) diff --git a/tempest/api/identity/v3/test_tokens.py b/tempest/api/identity/v3/test_tokens.py index fa1c47ffc4..c557428193 100644 --- a/tempest/api/identity/v3/test_tokens.py +++ b/tempest/api/identity/v3/test_tokens.py @@ -22,9 +22,11 @@ from tempest.lib import exceptions as lib_exc class TokensV3Test(base.BaseIdentityV3Test): + """Test identity tokens""" @decorators.idempotent_id('a9512ac3-3909-48a4-b395-11f438e16260') def test_validate_token(self): + """Test validating token for user""" creds = self.os_primary.credentials user_id = creds.user_id username = creds.username @@ -58,7 +60,7 @@ class TokensV3Test(base.BaseIdentityV3Test): @decorators.idempotent_id('6f8e4436-fc96-4282-8122-e41df57197a9') def test_create_token(self): - + """Test creating token for user""" creds = self.os_primary.credentials user_id = creds.user_id username = creds.username @@ -109,9 +111,12 @@ class TokensV3Test(base.BaseIdentityV3Test): @decorators.idempotent_id('0f9f5a5f-d5cd-4a86-8a5b-c5ded151f212') def test_token_auth_creation_existence_deletion(self): - # Tests basic token auth functionality in a way that is compatible with - # pre-provisioned credentials. The default user is used for token - # authentication. + """Test auth/check existence/delete token for user + + Tests basic token auth functionality in a way that is compatible with + pre-provisioned credentials. The default user is used for token + authentication. + """ # Valid user's token is authenticated user = self.os_primary.credentials diff --git a/tempest/api/identity/v3/test_users.py b/tempest/api/identity/v3/test_users.py index d4e7612dfb..6425ea9cf3 100644 --- a/tempest/api/identity/v3/test_users.py +++ b/tempest/api/identity/v3/test_users.py @@ -28,6 +28,7 @@ CONF = config.CONF class IdentityV3UsersTest(base.BaseIdentityV3Test): + """Test identity user password""" @classmethod def resource_setup(cls): @@ -82,6 +83,7 @@ class IdentityV3UsersTest(base.BaseIdentityV3Test): 'immutable user source and solely ' 'provides read-only access to users.') def test_user_update_own_password(self): + """Test updating user's own password""" old_pass = self.creds.password old_token = self.non_admin_client.token new_pass = data_utils.rand_password() @@ -111,6 +113,7 @@ class IdentityV3UsersTest(base.BaseIdentityV3Test): 'immutable user source and solely ' 'provides read-only access to users.') def test_password_history_check_self_service_api(self): + """Test checking password changing history""" old_pass = self.creds.password new_pass1 = data_utils.rand_password() new_pass2 = data_utils.rand_password() @@ -141,6 +144,7 @@ class IdentityV3UsersTest(base.BaseIdentityV3Test): 'Security compliance not available.') @decorators.idempotent_id('a7ad8bbf-2cff-4520-8c1d-96332e151658') def test_user_account_lockout(self): + """Test locking out user account after failure attempts""" if (CONF.identity.user_lockout_failure_attempts <= 0 or CONF.identity.user_lockout_duration <= 0): raise self.skipException(