Remove DataGenerator from admin V3 identity tests
The identity tests have a DataGenerator that handles resource creation and cleanup for tests, however using this DataGenerator has proven to make debugging more difficult. The object storage tests used to use this DataGenerator as well but was removed for the same reason. This is the second of a series of commits to removes the DataGenerator from the Identity tests. This commit removes the DataGenerator from the admin v3 tests and moves resource creation and cleanup back to the tests or the resource_setup, resource_cleanup methods. Change-Id: Ic73cbffec8ff801462ea2155718fc3728bfb6512
This commit is contained in:
@@ -23,14 +23,21 @@ class GroupsV3TestJSON(base.BaseIdentityV3AdminTest):
|
||||
@classmethod
|
||||
def resource_setup(cls):
|
||||
super(GroupsV3TestJSON, cls).resource_setup()
|
||||
cls.data.setup_test_domain()
|
||||
cls.domain = cls.create_domain()
|
||||
|
||||
@classmethod
|
||||
def resource_cleanup(cls):
|
||||
# Cleanup the domains created in the setup
|
||||
cls.domains_client.update_domain(cls.domain['id'], enabled=False)
|
||||
cls.domains_client.delete_domain(cls.domain['id'])
|
||||
super(GroupsV3TestJSON, cls).resource_cleanup()
|
||||
|
||||
@test.idempotent_id('2e80343b-6c81-4ac3-88c7-452f3e9d5129')
|
||||
def test_group_create_update_get(self):
|
||||
name = data_utils.rand_name('Group')
|
||||
description = data_utils.rand_name('Description')
|
||||
group = self.groups_client.create_group(
|
||||
name=name, domain_id=self.data.domain['id'],
|
||||
name=name, domain_id=self.domain['id'],
|
||||
description=description)['group']
|
||||
self.addCleanup(self.groups_client.delete_group, group['id'])
|
||||
self.assertEqual(group['name'], name)
|
||||
@@ -53,7 +60,7 @@ class GroupsV3TestJSON(base.BaseIdentityV3AdminTest):
|
||||
name = data_utils.rand_name('Group')
|
||||
old_description = data_utils.rand_name('Description')
|
||||
group = self.groups_client.create_group(
|
||||
name=name, domain_id=self.data.domain['id'],
|
||||
name=name, domain_id=self.domain['id'],
|
||||
description=old_description)['group']
|
||||
self.addCleanup(self.groups_client.delete_group, group['id'])
|
||||
|
||||
@@ -69,7 +76,7 @@ class GroupsV3TestJSON(base.BaseIdentityV3AdminTest):
|
||||
def test_group_users_add_list_delete(self):
|
||||
name = data_utils.rand_name('Group')
|
||||
group = self.groups_client.create_group(
|
||||
name=name, domain_id=self.data.domain['id'])['group']
|
||||
name=name, domain_id=self.domain['id'])['group']
|
||||
self.addCleanup(self.groups_client.delete_group, group['id'])
|
||||
# add user into group
|
||||
users = []
|
||||
@@ -103,7 +110,7 @@ class GroupsV3TestJSON(base.BaseIdentityV3AdminTest):
|
||||
for i in range(2):
|
||||
name = data_utils.rand_name('Group')
|
||||
group = self.groups_client.create_group(
|
||||
name=name, domain_id=self.data.domain['id'])['group']
|
||||
name=name, domain_id=self.domain['id'])['group']
|
||||
groups.append(group)
|
||||
self.addCleanup(self.groups_client.delete_group, group['id'])
|
||||
self.groups_client.add_group_user(group['id'], user['id'])
|
||||
@@ -121,7 +128,7 @@ class GroupsV3TestJSON(base.BaseIdentityV3AdminTest):
|
||||
name = data_utils.rand_name('Group')
|
||||
description = data_utils.rand_name('Description')
|
||||
group = self.groups_client.create_group(
|
||||
name=name, domain_id=self.data.domain['id'],
|
||||
name=name, domain_id=self.domain['id'],
|
||||
description=description)['group']
|
||||
self.addCleanup(self.groups_client.delete_group, group['id'])
|
||||
group_ids.append(group['id'])
|
||||
|
||||
@@ -24,26 +24,38 @@ class ListProjectsTestJSON(base.BaseIdentityV3AdminTest):
|
||||
def resource_setup(cls):
|
||||
super(ListProjectsTestJSON, cls).resource_setup()
|
||||
cls.project_ids = list()
|
||||
cls.data.setup_test_domain()
|
||||
# Create a domain
|
||||
cls.domain = cls.create_domain()
|
||||
# Create project with domain
|
||||
cls.projects = list()
|
||||
cls.p1_name = data_utils.rand_name('project')
|
||||
cls.p1 = cls.projects_client.create_project(
|
||||
cls.p1_name, enabled=False,
|
||||
domain_id=cls.data.domain['id'])['project']
|
||||
cls.data.projects.append(cls.p1)
|
||||
domain_id=cls.domain['id'])['project']
|
||||
cls.projects.append(cls.p1)
|
||||
cls.project_ids.append(cls.p1['id'])
|
||||
# Create default project
|
||||
p2_name = data_utils.rand_name('project')
|
||||
cls.p2 = cls.projects_client.create_project(p2_name)['project']
|
||||
cls.data.projects.append(cls.p2)
|
||||
cls.projects.append(cls.p2)
|
||||
cls.project_ids.append(cls.p2['id'])
|
||||
# Create a new project (p3) using p2 as parent project
|
||||
p3_name = data_utils.rand_name('project')
|
||||
cls.p3 = cls.projects_client.create_project(
|
||||
p3_name, parent_id=cls.p2['id'])['project']
|
||||
cls.data.projects.append(cls.p3)
|
||||
cls.projects.append(cls.p3)
|
||||
cls.project_ids.append(cls.p3['id'])
|
||||
|
||||
@classmethod
|
||||
def resource_cleanup(cls):
|
||||
# Cleanup the projects created during setup in inverse order
|
||||
for project in reversed(cls.projects):
|
||||
cls.projects_client.delete_project(project['id'])
|
||||
# Cleanup the domain created during setup
|
||||
cls.domains_client.update_domain(cls.domain['id'], enabled=False)
|
||||
cls.domains_client.delete_domain(cls.domain['id'])
|
||||
super(ListProjectsTestJSON, cls).resource_cleanup()
|
||||
|
||||
@test.idempotent_id('1d830662-22ad-427c-8c3e-4ec854b0af44')
|
||||
def test_list_projects(self):
|
||||
# List projects
|
||||
@@ -57,7 +69,7 @@ class ListProjectsTestJSON(base.BaseIdentityV3AdminTest):
|
||||
def test_list_projects_with_domains(self):
|
||||
# List projects with domain
|
||||
self._list_projects_with_params(
|
||||
{'domain_id': self.data.domain['id']}, 'domain_id')
|
||||
{'domain_id': self.domain['id']}, 'domain_id')
|
||||
|
||||
@test.idempotent_id('0fe7a334-675a-4509-b00e-1c4b95d5dae8')
|
||||
def test_list_projects_with_enabled(self):
|
||||
|
||||
@@ -36,24 +36,36 @@ class UsersV3TestJSON(base.BaseIdentityV3AdminTest):
|
||||
alt_user = data_utils.rand_name('test_user')
|
||||
alt_password = data_utils.rand_password()
|
||||
cls.alt_email = alt_user + '@testmail.tm'
|
||||
cls.data.setup_test_domain()
|
||||
# Create a domain
|
||||
cls.domain = cls.create_domain()
|
||||
# Create user with Domain
|
||||
cls.users = list()
|
||||
u1_name = data_utils.rand_name('test_user')
|
||||
cls.domain_enabled_user = cls.users_client.create_user(
|
||||
u1_name, password=alt_password,
|
||||
email=cls.alt_email, domain_id=cls.data.domain['id'])['user']
|
||||
cls.data.users.append(cls.domain_enabled_user)
|
||||
email=cls.alt_email, domain_id=cls.domain['id'])['user']
|
||||
cls.users.append(cls.domain_enabled_user)
|
||||
# Create default not enabled user
|
||||
u2_name = data_utils.rand_name('test_user')
|
||||
cls.non_domain_enabled_user = cls.users_client.create_user(
|
||||
u2_name, password=alt_password,
|
||||
email=cls.alt_email, enabled=False)['user']
|
||||
cls.data.users.append(cls.non_domain_enabled_user)
|
||||
cls.users.append(cls.non_domain_enabled_user)
|
||||
|
||||
@classmethod
|
||||
def resource_cleanup(cls):
|
||||
# Cleanup the users created during setup
|
||||
for user in cls.users:
|
||||
cls.users_client.delete_user(user['id'])
|
||||
# Cleanup the domain created during setup
|
||||
cls.domains_client.update_domain(cls.domain['id'], enabled=False)
|
||||
cls.domains_client.delete_domain(cls.domain['id'])
|
||||
super(UsersV3TestJSON, cls).resource_cleanup()
|
||||
|
||||
@test.idempotent_id('08f9aabb-dcfe-41d0-8172-82b5fa0bd73d')
|
||||
def test_list_user_domains(self):
|
||||
# List users with domain
|
||||
params = {'domain_id': self.data.domain['id']}
|
||||
params = {'domain_id': self.domain['id']}
|
||||
self._list_users_with_params(params, 'domain_id',
|
||||
self.domain_enabled_user,
|
||||
self.non_domain_enabled_user)
|
||||
@@ -79,7 +91,7 @@ class UsersV3TestJSON(base.BaseIdentityV3AdminTest):
|
||||
# List users
|
||||
body = self.users_client.list_users()['users']
|
||||
fetched_ids = [u['id'] for u in body]
|
||||
missing_users = [u['id'] for u in self.data.users
|
||||
missing_users = [u['id'] for u in self.users
|
||||
if u['id'] not in fetched_ids]
|
||||
self.assertEqual(0, len(missing_users),
|
||||
"Failed to find user %s in fetched list" %
|
||||
@@ -88,8 +100,8 @@ class UsersV3TestJSON(base.BaseIdentityV3AdminTest):
|
||||
@test.idempotent_id('b4baa3ae-ac00-4b4e-9e27-80deaad7771f')
|
||||
def test_get_user(self):
|
||||
# Get a user detail
|
||||
user = self.users_client.show_user(self.data.users[0]['id'])['user']
|
||||
self.assertEqual(self.data.users[0]['id'], user['id'])
|
||||
self.assertEqual(self.data.users[0]['name'], user['name'])
|
||||
user = self.users_client.show_user(self.users[0]['id'])['user']
|
||||
self.assertEqual(self.users[0]['id'], user['id'])
|
||||
self.assertEqual(self.users[0]['name'], user['name'])
|
||||
self.assertEqual(self.alt_email, user['email'])
|
||||
self.assertEqual(self.data.domain['id'], user['domain_id'])
|
||||
self.assertEqual(self.domain['id'], user['domain_id'])
|
||||
|
||||
@@ -32,7 +32,7 @@ class ProjectsTestJSON(base.BaseIdentityV3AdminTest):
|
||||
project_desc = data_utils.rand_name('desc')
|
||||
project = self.projects_client.create_project(
|
||||
project_name, description=project_desc)['project']
|
||||
self.data.projects.append(project)
|
||||
self.addCleanup(self.projects_client.delete_project, project['id'])
|
||||
project_id = project['id']
|
||||
desc1 = project['description']
|
||||
self.assertEqual(desc1, project_desc, 'Description should have '
|
||||
@@ -45,25 +45,25 @@ class ProjectsTestJSON(base.BaseIdentityV3AdminTest):
|
||||
@test.idempotent_id('5f50fe07-8166-430b-a882-3b2ee0abe26f')
|
||||
def test_project_create_with_domain(self):
|
||||
# Create project with a domain
|
||||
self.data.setup_test_domain()
|
||||
domain = self.setup_test_domain()
|
||||
project_name = data_utils.rand_name('project')
|
||||
project = self.projects_client.create_project(
|
||||
project_name, domain_id=self.data.domain['id'])['project']
|
||||
self.data.projects.append(project)
|
||||
project_name, domain_id=domain['id'])['project']
|
||||
self.addCleanup(self.projects_client.delete_project, project['id'])
|
||||
project_id = project['id']
|
||||
self.assertEqual(project_name, project['name'])
|
||||
self.assertEqual(self.data.domain['id'], project['domain_id'])
|
||||
self.assertEqual(domain['id'], project['domain_id'])
|
||||
body = self.projects_client.show_project(project_id)['project']
|
||||
self.assertEqual(project_name, body['name'])
|
||||
self.assertEqual(self.data.domain['id'], body['domain_id'])
|
||||
self.assertEqual(domain['id'], body['domain_id'])
|
||||
|
||||
@testtools.skipUnless(CONF.identity_feature_enabled.reseller,
|
||||
'Reseller not available.')
|
||||
@test.idempotent_id('1854f9c0-70bc-4d11-a08a-1c789d339e3d')
|
||||
def test_project_create_with_parent(self):
|
||||
# Create root project without providing a parent_id
|
||||
self.data.setup_test_domain()
|
||||
domain_id = self.data.domain['id']
|
||||
domain = self.setup_test_domain()
|
||||
domain_id = domain['id']
|
||||
|
||||
root_project_name = data_utils.rand_name('root_project')
|
||||
root_project = self.projects_client.create_project(
|
||||
@@ -94,7 +94,7 @@ class ProjectsTestJSON(base.BaseIdentityV3AdminTest):
|
||||
project_name = data_utils.rand_name('project')
|
||||
project = self.projects_client.create_project(
|
||||
project_name, enabled=True)['project']
|
||||
self.data.projects.append(project)
|
||||
self.addCleanup(self.projects_client.delete_project, project['id'])
|
||||
project_id = project['id']
|
||||
en1 = project['enabled']
|
||||
self.assertTrue(en1, 'Enable should be True in response')
|
||||
@@ -108,7 +108,7 @@ class ProjectsTestJSON(base.BaseIdentityV3AdminTest):
|
||||
project_name = data_utils.rand_name('project')
|
||||
project = self.projects_client.create_project(
|
||||
project_name, enabled=False)['project']
|
||||
self.data.projects.append(project)
|
||||
self.addCleanup(self.projects_client.delete_project, project['id'])
|
||||
en1 = project['enabled']
|
||||
self.assertEqual('false', str(en1).lower(),
|
||||
'Enable should be False in response')
|
||||
@@ -122,7 +122,7 @@ class ProjectsTestJSON(base.BaseIdentityV3AdminTest):
|
||||
# Update name attribute of a project
|
||||
p_name1 = data_utils.rand_name('project')
|
||||
project = self.projects_client.create_project(p_name1)['project']
|
||||
self.data.projects.append(project)
|
||||
self.addCleanup(self.projects_client.delete_project, project['id'])
|
||||
|
||||
resp1_name = project['name']
|
||||
|
||||
@@ -146,7 +146,7 @@ class ProjectsTestJSON(base.BaseIdentityV3AdminTest):
|
||||
p_desc = data_utils.rand_name('desc')
|
||||
project = self.projects_client.create_project(
|
||||
p_name, description=p_desc)['project']
|
||||
self.data.projects.append(project)
|
||||
self.addCleanup(self.projects_client.delete_project, project['id'])
|
||||
resp1_desc = project['description']
|
||||
|
||||
p_desc2 = data_utils.rand_name('desc2')
|
||||
@@ -169,7 +169,7 @@ class ProjectsTestJSON(base.BaseIdentityV3AdminTest):
|
||||
p_en = False
|
||||
project = self.projects_client.create_project(p_name,
|
||||
enabled=p_en)['project']
|
||||
self.data.projects.append(project)
|
||||
self.addCleanup(self.projects_client.delete_project, project['id'])
|
||||
|
||||
resp1_en = project['enabled']
|
||||
|
||||
@@ -192,7 +192,7 @@ class ProjectsTestJSON(base.BaseIdentityV3AdminTest):
|
||||
# Create a Project
|
||||
p_name = data_utils.rand_name('project')
|
||||
project = self.projects_client.create_project(p_name)['project']
|
||||
self.data.projects.append(project)
|
||||
self.addCleanup(self.projects_client.delete_project, project['id'])
|
||||
|
||||
# Create a User
|
||||
u_name = data_utils.rand_name('user')
|
||||
|
||||
@@ -34,7 +34,7 @@ class ProjectsNegativeTestJSON(base.BaseIdentityV3AdminTest):
|
||||
# Project names should be unique
|
||||
project_name = data_utils.rand_name('project-dup')
|
||||
project = self.projects_client.create_project(project_name)['project']
|
||||
self.data.projects.append(project)
|
||||
self.addCleanup(self.projects_client.delete_project, project['id'])
|
||||
|
||||
self.assertRaises(lib_exc.Conflict,
|
||||
self.projects_client.create_project, project_name)
|
||||
@@ -69,7 +69,7 @@ class ProjectsNegativeTestJSON(base.BaseIdentityV3AdminTest):
|
||||
# Non-admin user should not be able to delete a project
|
||||
project_name = data_utils.rand_name('project')
|
||||
project = self.projects_client.create_project(project_name)['project']
|
||||
self.data.projects.append(project)
|
||||
self.addCleanup(self.projects_client.delete_project, project['id'])
|
||||
self.assertRaises(
|
||||
lib_exc.Forbidden, self.non_admin_projects_client.delete_project,
|
||||
project['id'])
|
||||
|
||||
@@ -23,10 +23,11 @@ class RolesV3TestJSON(base.BaseIdentityV3AdminTest):
|
||||
@classmethod
|
||||
def resource_setup(cls):
|
||||
super(RolesV3TestJSON, cls).resource_setup()
|
||||
cls.roles = list()
|
||||
for _ in range(3):
|
||||
role_name = data_utils.rand_name(name='role')
|
||||
role = cls.roles_client.create_role(name=role_name)['role']
|
||||
cls.data.roles.append(role)
|
||||
cls.roles.append(role)
|
||||
cls.fetched_role_ids = list()
|
||||
u_name = data_utils.rand_name('user')
|
||||
u_desc = '%s description' % u_name
|
||||
@@ -59,6 +60,8 @@ class RolesV3TestJSON(base.BaseIdentityV3AdminTest):
|
||||
# before deleting,or else it would result in unauthorized error
|
||||
cls.domains_client.update_domain(cls.domain['id'], enabled=False)
|
||||
cls.domains_client.delete_domain(cls.domain['id'])
|
||||
for role in cls.roles:
|
||||
cls.roles_client.delete_role(role['id'])
|
||||
super(RolesV3TestJSON, cls).resource_cleanup()
|
||||
|
||||
def _list_assertions(self, body, fetched_role_ids, role_id):
|
||||
@@ -189,5 +192,5 @@ class RolesV3TestJSON(base.BaseIdentityV3AdminTest):
|
||||
def test_list_roles(self):
|
||||
# Return a list of all roles
|
||||
body = self.roles_client.list_roles()['roles']
|
||||
found = [role for role in body if role in self.data.roles]
|
||||
self.assertEqual(len(found), len(self.data.roles))
|
||||
found = [role for role in body if role in self.roles]
|
||||
self.assertEqual(len(found), len(self.roles))
|
||||
|
||||
@@ -149,6 +149,6 @@ class UsersV3TestJSON(base.BaseIdentityV3AdminTest):
|
||||
@test.idempotent_id('c10dcd90-461d-4b16-8e23-4eb836c00644')
|
||||
def test_get_user(self):
|
||||
# Get a user detail
|
||||
self.data.setup_test_user()
|
||||
user = self.users_client.show_user(self.data.user['id'])['user']
|
||||
self.assertEqual(self.data.user['id'], user['id'])
|
||||
user = self.setup_test_user()
|
||||
fetched_user = self.users_client.show_user(user['id'])['user']
|
||||
self.assertEqual(user['id'], fetched_user['id'])
|
||||
|
||||
@@ -37,9 +37,10 @@ class UsersNegativeTest(base.BaseIdentityV3AdminTest):
|
||||
@test.idempotent_id('b3c9fccc-4134-46f5-b600-1da6fb0a3b1f')
|
||||
def test_authentication_for_disabled_user(self):
|
||||
# Attempt to authenticate for disabled user should fail
|
||||
self.data.setup_test_user()
|
||||
self.disable_user(self.data.user['name'], self.data.user['domain_id'])
|
||||
password = data_utils.rand_password()
|
||||
user = self.setup_test_user(password)
|
||||
self.disable_user(user['name'], user['domain_id'])
|
||||
self.assertRaises(lib_exc.Unauthorized, self.token.auth,
|
||||
username=self.data.user['name'],
|
||||
password=self.data.user_password,
|
||||
username=user['name'],
|
||||
password=password,
|
||||
user_domain_id='default')
|
||||
|
||||
@@ -193,12 +193,9 @@ class BaseIdentityV3AdminTest(BaseIdentityV3Test):
|
||||
@classmethod
|
||||
def resource_setup(cls):
|
||||
super(BaseIdentityV3AdminTest, cls).resource_setup()
|
||||
cls.data = DataGeneratorV3(cls.projects_client, cls.users_client,
|
||||
cls.roles_client, cls.domains_client)
|
||||
|
||||
@classmethod
|
||||
def resource_cleanup(cls):
|
||||
cls.data.teardown_all()
|
||||
super(BaseIdentityV3AdminTest, cls).resource_cleanup()
|
||||
|
||||
@classmethod
|
||||
@@ -206,12 +203,46 @@ class BaseIdentityV3AdminTest(BaseIdentityV3Test):
|
||||
user = cls.get_user_by_name(user_name, domain_id)
|
||||
cls.users_client.update_user(user['id'], user_name, enabled=False)
|
||||
|
||||
@classmethod
|
||||
def create_domain(cls):
|
||||
"""Create a domain."""
|
||||
domain = cls.domains_client.create_domain(
|
||||
name=data_utils.rand_name('test_domain'),
|
||||
description=data_utils.rand_name('desc'))['domain']
|
||||
return domain
|
||||
|
||||
def delete_domain(self, domain_id):
|
||||
# NOTE(mpavlase) It is necessary to disable the domain before deleting
|
||||
# otherwise it raises Forbidden exception
|
||||
self.domains_client.update_domain(domain_id, enabled=False)
|
||||
self.domains_client.delete_domain(domain_id)
|
||||
|
||||
def setup_test_user(self, password=None):
|
||||
"""Set up a test user."""
|
||||
project = self.setup_test_project()
|
||||
username = data_utils.rand_name('test_user')
|
||||
email = username + '@testmail.tm'
|
||||
user = self._create_test_user(user_name=username, email=email,
|
||||
project_id=project['id'],
|
||||
password=password)
|
||||
return user
|
||||
|
||||
def setup_test_project(self):
|
||||
"""Set up a test project."""
|
||||
project = self.projects_client.create_project(
|
||||
name=data_utils.rand_name('test_project'),
|
||||
description=data_utils.rand_name('desc'))['project']
|
||||
# Delete the project at the end of the test
|
||||
self.addCleanup(self.projects_client.delete_project, project['id'])
|
||||
return project
|
||||
|
||||
def setup_test_domain(self):
|
||||
"""Set up a test domain."""
|
||||
domain = self.create_domain()
|
||||
# Delete the domain at the end of the test
|
||||
self.addCleanup(self.delete_domain, domain['id'])
|
||||
return domain
|
||||
|
||||
|
||||
class BaseDataGenerator(object):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user