From 3a48989eb02187f384cfbf7bb7cd55502741fc68 Mon Sep 17 00:00:00 2001 From: Tom Cocozzello Date: Wed, 9 Dec 2015 10:08:16 -0600 Subject: Return names in list role assignments Utilize the new include names functionality added to list role assignments (GET /role_assignments?include_names=True). Which will return the names of the entities instead of their IDs. Change-Id: I6dc03baf61ef9354a8a259a9f17ff47ce1665ce7 Depends-On: I4aa77c08660a0cbd021502155938a46121ca76ef Closes-Bug: #1479569 Implements: blueprint list-assignment-with-names --- openstackclient/tests/identity/v3/fakes.py | 29 +++++++ .../tests/identity/v3/test_role_assignment.py | 96 ++++++++++++++++++++-- 2 files changed, 118 insertions(+), 7 deletions(-) (limited to 'openstackclient/tests') diff --git a/openstackclient/tests/identity/v3/fakes.py b/openstackclient/tests/identity/v3/fakes.py index 9fe341ed..59b08973 100644 --- a/openstackclient/tests/identity/v3/fakes.py +++ b/openstackclient/tests/identity/v3/fakes.py @@ -314,6 +314,22 @@ ASSIGNMENT_WITH_PROJECT_ID_AND_USER_ID = { 'role': {'id': role_id}, } +ASSIGNMENT_WITH_PROJECT_ID_AND_USER_ID_INCLUDE_NAMES = { + 'scope': { + 'project': { + 'domain': {'id': domain_id, + 'name': domain_name}, + 'id': project_id, + 'name': project_name}}, + 'user': { + 'domain': {'id': domain_id, + 'name': domain_name}, + 'id': user_id, + 'name': user_name}, + 'role': {'id': role_id, + 'name': role_name}, +} + ASSIGNMENT_WITH_PROJECT_ID_AND_USER_ID_INHERITED = { 'scope': {'project': {'id': project_id}, 'OS-INHERIT:inherited_to': 'projects'}, @@ -333,6 +349,19 @@ ASSIGNMENT_WITH_DOMAIN_ID_AND_USER_ID = { 'role': {'id': role_id}, } +ASSIGNMENT_WITH_DOMAIN_ID_AND_USER_ID_INCLUDE_NAMES = { + 'scope': { + 'domain': {'id': domain_id, + 'name': domain_name}}, + 'user': { + 'domain': {'id': domain_id, + 'name': domain_name}, + 'id': user_id, + 'name': user_name}, + 'role': {'id': role_id, + 'name': role_name}, +} + ASSIGNMENT_WITH_DOMAIN_ID_AND_USER_ID_INHERITED = { 'scope': {'domain': {'id': domain_id}, 'OS-INHERIT:inherited_to': 'projects'}, diff --git a/openstackclient/tests/identity/v3/test_role_assignment.py b/openstackclient/tests/identity/v3/test_role_assignment.py index 5723a334..067a9537 100644 --- a/openstackclient/tests/identity/v3/test_role_assignment.py +++ b/openstackclient/tests/identity/v3/test_role_assignment.py @@ -96,7 +96,8 @@ class TestRoleAssignmentList(TestRoleAssignment): role=None, user=None, project=None, - os_inherit_extension_inherited_to=None) + os_inherit_extension_inherited_to=None, + include_names=False) self.assertEqual(self.columns, columns) datalist = (( @@ -143,6 +144,7 @@ class TestRoleAssignmentList(TestRoleAssignment): ('role', None), ('effective', False), ('inherited', False), + ('names', False), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -156,7 +158,8 @@ class TestRoleAssignmentList(TestRoleAssignment): project=None, role=None, effective=False, - os_inherit_extension_inherited_to=None) + os_inherit_extension_inherited_to=None, + include_names=False) self.assertEqual(self.columns, columns) datalist = (( @@ -203,6 +206,7 @@ class TestRoleAssignmentList(TestRoleAssignment): ('role', None), ('effective', False), ('inherited', False), + ('names', False), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -216,7 +220,8 @@ class TestRoleAssignmentList(TestRoleAssignment): project=None, role=None, user=None, - os_inherit_extension_inherited_to=None) + os_inherit_extension_inherited_to=None, + include_names=False) self.assertEqual(self.columns, columns) datalist = (( @@ -263,6 +268,7 @@ class TestRoleAssignmentList(TestRoleAssignment): ('role', None), ('effective', False), ('inherited', False), + ('names', False), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -276,7 +282,8 @@ class TestRoleAssignmentList(TestRoleAssignment): project=None, role=None, user=None, - os_inherit_extension_inherited_to=None) + os_inherit_extension_inherited_to=None, + include_names=False) self.assertEqual(self.columns, columns) datalist = (( @@ -323,6 +330,7 @@ class TestRoleAssignmentList(TestRoleAssignment): ('role', None), ('effective', False), ('inherited', False), + ('names', False), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -336,7 +344,8 @@ class TestRoleAssignmentList(TestRoleAssignment): project=self.projects_mock.get(), role=None, user=None, - os_inherit_extension_inherited_to=None) + os_inherit_extension_inherited_to=None, + include_names=False) self.assertEqual(self.columns, columns) datalist = (( @@ -381,6 +390,7 @@ class TestRoleAssignmentList(TestRoleAssignment): ('role', None), ('effective', True), ('inherited', False), + ('names', False), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -394,7 +404,8 @@ class TestRoleAssignmentList(TestRoleAssignment): project=None, role=None, user=None, - os_inherit_extension_inherited_to=None) + os_inherit_extension_inherited_to=None, + include_names=False) self.assertEqual(self.columns, columns) datalist = (( @@ -441,6 +452,7 @@ class TestRoleAssignmentList(TestRoleAssignment): ('role', None), ('effective', False), ('inherited', True), + ('names', False), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -454,7 +466,8 @@ class TestRoleAssignmentList(TestRoleAssignment): project=None, role=None, user=None, - os_inherit_extension_inherited_to='projects') + os_inherit_extension_inherited_to='projects', + include_names=False) self.assertEqual(self.columns, columns) datalist = (( @@ -472,3 +485,72 @@ class TestRoleAssignmentList(TestRoleAssignment): True ),) self.assertEqual(datalist, tuple(data)) + + def test_role_assignment_list_include_names(self): + + self.role_assignments_mock.list.return_value = [ + fakes.FakeResource( + None, + copy.deepcopy( + identity_fakes + .ASSIGNMENT_WITH_PROJECT_ID_AND_USER_ID_INCLUDE_NAMES), + loaded=True, + ), + fakes.FakeResource( + None, + copy.deepcopy( + identity_fakes + .ASSIGNMENT_WITH_DOMAIN_ID_AND_USER_ID_INCLUDE_NAMES), + loaded=True, + ), + ] + + arglist = ['--names'] + verifylist = [ + ('user', None), + ('group', None), + ('domain', None), + ('project', None), + ('role', None), + ('effective', False), + ('inherited', False), + ('names', True), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + # DisplayCommandBase.take_action() returns two tuples + + # This test will not run correctly until the patch in the python + # client is merged. Once that is done 'data' should return the + # correct information + columns, data = self.cmd.take_action(parsed_args) + + self.role_assignments_mock.list.assert_called_with( + domain=None, + group=None, + effective=False, + project=None, + role=None, + user=None, + os_inherit_extension_inherited_to=None, + include_names=True) + + collist = ('Role', 'User', 'Group', 'Project', 'Domain', 'Inherited') + self.assertEqual(columns, collist) + + datalist1 = (( + identity_fakes.role_name, + '@'.join([identity_fakes.user_name, identity_fakes.domain_name]), + '', + '@'.join([identity_fakes.project_name, + identity_fakes.domain_name]), + '', + False + ), (identity_fakes.role_name, + '@'.join([identity_fakes.user_name, identity_fakes.domain_name]), + '', + '', + identity_fakes.domain_name, + False + ),) + self.assertEqual(tuple(data), datalist1) -- cgit v1.2.1