diff options
| author | Guojian Shao <guojian@unitedstack.com> | 2015-07-04 21:40:31 +0800 |
|---|---|---|
| committer | Guojian Shao <guojian@unitedstack.com> | 2015-07-07 15:57:36 +0800 |
| commit | aa3b3c1f0f39e05c242ddfc840774d2d23f91b46 (patch) | |
| tree | 67c426f5f2e1e79fc40d56cd7f1438dd6d96d872 /functional/tests/identity/v3/test_identity.py | |
| parent | 60d1417c2f47006c522c6ed1b973ab3bbb84c69f (diff) | |
| download | python-openstackclient-aa3b3c1f0f39e05c242ddfc840774d2d23f91b46.tar.gz | |
add functional tests for identity v3
To make test cases more clearly, split test_identity.py
into test_user.py, test_role, etc. Add more test cases for
user, role, etc. Furthermore, to make functional tests run
repeatedly without raising duplicated error, clean up
resources before exiting each test case.
Change-Id: I1541943ad0b8d4d8d1e72822c159fda243b3d1d7
Implements: blueprint identity-functional-tests
Diffstat (limited to 'functional/tests/identity/v3/test_identity.py')
| -rw-r--r-- | functional/tests/identity/v3/test_identity.py | 201 |
1 files changed, 141 insertions, 60 deletions
diff --git a/functional/tests/identity/v3/test_identity.py b/functional/tests/identity/v3/test_identity.py index 5d28f189..c72dc9a0 100644 --- a/functional/tests/identity/v3/test_identity.py +++ b/functional/tests/identity/v3/test_identity.py @@ -11,11 +11,12 @@ # under the License. import os -import uuid -from functional.common import exceptions +from tempest_lib.common.utils import data_utils + from functional.common import test + BASIC_LIST_HEADERS = ['ID', 'Name'] @@ -25,19 +26,18 @@ class IdentityTests(test.TestCase): DOMAIN_FIELDS = ['description', 'enabled', 'id', 'name', 'links'] GROUP_FIELDS = ['description', 'domain_id', 'id', 'name', 'links'] TOKEN_FIELDS = ['expires', 'id', 'project_id', 'user_id'] - - def _create_dummy_group(self): - name = uuid.uuid4().hex - self.openstack('group create ' + name) - return name - - def _create_dummy_domain(self): - name = uuid.uuid4().hex - self.openstack('domain create ' + name) - return name - - def setUp(self): - super(IdentityTests, self).setUp() + USER_FIELDS = ['email', 'enabled', 'id', 'name', 'name', + 'domain_id', 'default_project_id', 'description'] + PROJECT_FIELDS = ['description', 'id', 'domain_id', + 'enabled', 'name', 'parent_id', 'links'] + ROLE_FIELDS = ['id', 'name', 'links'] + + @classmethod + def setUpClass(cls): + if hasattr(super(IdentityTests, cls), 'setUpClass'): + super(IdentityTests, cls).setUpClass() + + # prepare v3 env auth_url = os.environ.get('OS_AUTH_URL') auth_url = auth_url.replace('v2.0', 'v3') os.environ['OS_AUTH_URL'] = auth_url @@ -45,51 +45,132 @@ class IdentityTests(test.TestCase): os.environ['OS_USER_DOMAIN_ID'] = 'default' os.environ['OS_PROJECT_DOMAIN_ID'] = 'default' - def test_group_create(self): - raw_output = self.openstack('group create ' + uuid.uuid4().hex) + # create dummy domain + cls.domain_name = data_utils.rand_name('TestDomain') + cls.domain_description = data_utils.rand_name('description') + cls.openstack( + 'domain create ' + '--description %(description)s ' + '--enable ' + '%(name)s' % {'description': cls.domain_description, + 'name': cls.domain_name}) + + # create dummy project + cls.project_name = data_utils.rand_name('TestProject') + cls.project_description = data_utils.rand_name('description') + cls.openstack( + 'project create ' + '--domain %(domain)s ' + '--description %(description)s ' + '--enable ' + '%(name)s' % {'domain': cls.domain_name, + 'description': cls.project_description, + 'name': cls.project_name}) + + @classmethod + def tearDownClass(cls): + cls.openstack('project delete %s' % cls.project_name) + cls.openstack('domain set --disable %s' % cls.domain_name) + cls.openstack('domain delete %s' % cls.domain_name) + + if hasattr(super(IdentityTests, cls), 'tearDownClass'): + super(IdentityTests, cls).tearDownClass() + + def _create_dummy_user(self, add_clean_up=True): + username = data_utils.rand_name('TestUser') + password = data_utils.rand_name('password') + email = data_utils.rand_name() + '@example.com' + description = data_utils.rand_name('description') + raw_output = self.openstack( + 'user create ' + '--domain %(domain)s ' + '--project %(project)s ' + '--password %(password)s ' + '--email %(email)s ' + '--description %(description)s ' + '--enable ' + '%(name)s' % {'domain': self.domain_name, + 'project': self.project_name, + 'email': email, + 'password': password, + 'description': description, + 'name': username}) items = self.parse_show(raw_output) - self.assert_show_fields(items, self.GROUP_FIELDS) - - def test_group_list(self): - self._create_dummy_group() - raw_output = self.openstack('group list') - items = self.parse_listing(raw_output) - self.assert_table_structure(items, BASIC_LIST_HEADERS) - - def test_group_delete(self): - name = self._create_dummy_group() - raw_output = self.openstack('group delete ' + name) - self.assertEqual(0, len(raw_output)) - - def test_group_show(self): - name = self._create_dummy_group() - raw_output = self.openstack('group show ' + name) - items = self.parse_show(raw_output) - self.assert_show_fields(items, self.GROUP_FIELDS) - - def test_domain_create(self): - raw_output = self.openstack('domain create ' + uuid.uuid4().hex) + self.assert_show_fields(items, self.USER_FIELDS) + if add_clean_up: + self.addCleanup( + self.openstack, + 'user delete %s' % self.parse_show_as_object(raw_output)['id']) + return username + + def _create_dummy_role(self, add_clean_up=True): + role_name = data_utils.rand_name('TestRole') + raw_output = self.openstack('role create %s' % role_name) items = self.parse_show(raw_output) - self.assert_show_fields(items, self.DOMAIN_FIELDS) - - def test_domain_list(self): - self._create_dummy_domain() - raw_output = self.openstack('domain list') - items = self.parse_listing(raw_output) - self.assert_table_structure(items, BASIC_LIST_HEADERS) - - def test_domain_delete(self): - name = self._create_dummy_domain() - self.assertRaises(exceptions.CommandFailed, - self.openstack, 'domain delete ' + name) - - def test_domain_show(self): - name = self._create_dummy_domain() - raw_output = self.openstack('domain show ' + name) + self.assert_show_fields(items, self.ROLE_FIELDS) + role = self.parse_show_as_object(raw_output) + self.assertEqual(role_name, role['name']) + if add_clean_up: + self.addCleanup( + self.openstack, + 'role delete %s' % role['id']) + return role_name + + def _create_dummy_group(self, add_clean_up=True): + group_name = data_utils.rand_name('TestGroup') + description = data_utils.rand_name('description') + raw_output = self.openstack( + 'group create ' + '--domain %(domain)s ' + '--description %(description)s ' + '%(name)s' % {'domain': self.domain_name, + 'description': description, + 'name': group_name}) items = self.parse_show(raw_output) - self.assert_show_fields(items, self.DOMAIN_FIELDS) - - def test_token_issue(self): - raw_output = self.openstack('token issue') - items = self.parse_show(raw_output) - self.assert_show_fields(items, self.TOKEN_FIELDS) + self.assert_show_fields(items, self.GROUP_FIELDS) + if add_clean_up: + self.addCleanup( + self.openstack, + 'group delete ' + '--domain %(domain)s ' + '%(name)s' % {'domain': self.domain_name, + 'name': group_name}) + return group_name + + def _create_dummy_domain(self, add_clean_up=True): + domain_name = data_utils.rand_name('TestDomain') + domain_description = data_utils.rand_name('description') + self.openstack( + 'domain create ' + '--description %(description)s ' + '--enable %(name)s' % {'description': domain_description, + 'name': domain_name}) + if add_clean_up: + self.addCleanup( + self.openstack, + 'domain delete %s' % domain_name + ) + self.addCleanup( + self.openstack, + 'domain set --disable %s' % domain_name + ) + return domain_name + + def _create_dummy_project(self, add_clean_up=True): + project_name = data_utils.rand_name('TestProject') + project_description = data_utils.rand_name('description') + self.openstack( + 'project create ' + '--domain %(domain)s ' + '--description %(description)s ' + '--enable %(name)s' % {'domain': self.domain_name, + 'description': project_description, + 'name': project_name}) + if add_clean_up: + self.addCleanup( + self.openstack, + 'project delete ' + '--domain %(domain)s ' + '%(name)s' % {'domain': self.domain_name, + 'name': project_name}) + return project_name |
