Skip to content

Commit 08dbd15

Browse files
author
Sami MAKKI
committed
Fix the role implies list command.
The code was calling an unexisting function which never existed. The module refers now to the correct `InferenceRuleManager`. It also allows the compatibility with the future python-keystoneclient in which the compatibility method will be removed from the RoleManager. Change-Id: I08f785dc9e840da2e16915683eecfe49189c44b3
1 parent 15a079f commit 08dbd15

5 files changed

Lines changed: 63 additions & 15 deletions

File tree

openstackclient/identity/v3/implied_role.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ def take_action(self, parsed_args):
7171
identity_client = self.app.client_manager.identity
7272
(prior_role_id, implied_role_id) = _get_role_ids(
7373
identity_client, parsed_args)
74-
response = identity_client.roles.create_implied(
74+
response = identity_client.inference_rules.create(
7575
prior_role_id, implied_role_id)
7676
response._info.pop('links', None)
7777
return zip(*sorted([(k, v['id'])
@@ -101,7 +101,7 @@ def take_action(self, parsed_args):
101101
identity_client = self.app.client_manager.identity
102102
(prior_role_id, implied_role_id) = _get_role_ids(
103103
identity_client, parsed_args)
104-
identity_client.roles.delete_implied(
104+
identity_client.inference_rules.delete(
105105
prior_role_id, implied_role_id)
106106

107107

@@ -125,5 +125,5 @@ def _list_implied(response):
125125
implies['name'])
126126

127127
identity_client = self.app.client_manager.identity
128-
response = identity_client.roles.list_inference_roles()
128+
response = identity_client.inference_rules.list_inference_roles()
129129
return (self._COLUMNS, _list_implied(response))

openstackclient/tests/functional/identity/v3/common.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ class IdentityTests(base.TestCase):
5252
'id', 'relay_state_prefix', 'sp_url']
5353
SERVICE_PROVIDER_LIST_HEADERS = ['ID', 'Enabled', 'Description',
5454
'Auth URL']
55+
IMPLIED_ROLE_LIST_HEADERS = ['Prior Role ID', 'Prior Role Name',
56+
'Implied Role ID', 'Implied Role Name']
5557

5658
@classmethod
5759
def setUpClass(cls):
@@ -149,6 +151,17 @@ def _create_dummy_role(self, add_clean_up=True):
149151
self.assertEqual(role_name, role['name'])
150152
return role_name
151153

154+
def _create_dummy_implied_role(self, add_clean_up=True):
155+
role_name = self._create_dummy_role(add_clean_up)
156+
implied_role_name = self._create_dummy_role(add_clean_up)
157+
self.openstack(
158+
'implied role create '
159+
'--implied-role %(implied_role)s '
160+
'%(role)s' % {'implied_role': implied_role_name,
161+
'role': role_name})
162+
163+
return implied_role_name, role_name
164+
152165
def _create_dummy_group(self, add_clean_up=True):
153166
group_name = data_utils.rand_name('TestGroup')
154167
description = data_utils.rand_name('description')

openstackclient/tests/functional/identity/v3/test_role.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,3 +143,28 @@ def test_role_remove(self):
143143
'role': role_name})
144144
self.assertEqual(0, len(add_raw_output))
145145
self.assertEqual(0, len(remove_raw_output))
146+
147+
def test_implied_role_list(self):
148+
self._create_dummy_implied_role()
149+
raw_output = self.openstack('implied role list')
150+
items = self.parse_listing(raw_output)
151+
self.assert_table_structure(items, self.IMPLIED_ROLE_LIST_HEADERS)
152+
self.assertEqual(3, len(items))
153+
154+
def test_implied_role_create(self):
155+
role_name = self._create_dummy_role()
156+
implied_role_name = self._create_dummy_role()
157+
self.openstack(
158+
'implied role create '
159+
'--implied-role %(implied_role)s '
160+
'%(role)s' % {'implied_role': implied_role_name,
161+
'role': role_name})
162+
163+
def test_implied_role_delete(self):
164+
implied_role_name, role_name = self._create_dummy_implied_role()
165+
raw_output = self.openstack(
166+
'implied role delete '
167+
'--implied-role %(implied_role)s '
168+
'%(role)s' % {'implied_role': implied_role_name,
169+
'role': role_name})
170+
self.assertEqual(0, len(raw_output))

openstackclient/tests/unit/identity/v3/fakes.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -576,6 +576,8 @@ def __init__(self, **kwargs):
576576
self.application_credentials = mock.Mock()
577577
self.application_credentials.resource_class = fakes.FakeResource(None,
578578
{})
579+
self.inference_rules = mock.Mock()
580+
self.inference_rules.resource_class = fakes.FakeResource(None, {})
579581

580582

581583
class FakeFederationManager(object):

openstackclient/tests/unit/identity/v3/test_implied_role.py

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,26 +25,32 @@ class TestRole(identity_fakes.TestIdentityv3):
2525
def setUp(self):
2626
super(TestRole, self).setUp()
2727

28+
identity_client = self.app.client_manager.identity
29+
2830
# Get a shortcut to the UserManager Mock
29-
self.users_mock = self.app.client_manager.identity.users
31+
self.users_mock = identity_client.users
3032
self.users_mock.reset_mock()
3133

3234
# Get a shortcut to the UserManager Mock
33-
self.groups_mock = self.app.client_manager.identity.groups
35+
self.groups_mock = identity_client.groups
3436
self.groups_mock.reset_mock()
3537

3638
# Get a shortcut to the DomainManager Mock
37-
self.domains_mock = self.app.client_manager.identity.domains
39+
self.domains_mock = identity_client.domains
3840
self.domains_mock.reset_mock()
3941

4042
# Get a shortcut to the ProjectManager Mock
41-
self.projects_mock = self.app.client_manager.identity.projects
43+
self.projects_mock = identity_client.projects
4244
self.projects_mock.reset_mock()
4345

4446
# Get a shortcut to the RoleManager Mock
45-
self.roles_mock = self.app.client_manager.identity.roles
47+
self.roles_mock = identity_client.roles
4648
self.roles_mock.reset_mock()
4749

50+
# Get a shortcut to the InferenceRuleManager Mock
51+
self.inference_rules_mock = identity_client.inference_rules
52+
self.inference_rules_mock.reset_mock()
53+
4854
def _is_inheritance_testcase(self):
4955
return False
5056

@@ -67,12 +73,13 @@ def setUp(self):
6773
),
6874
]
6975

70-
self.roles_mock.create_implied.return_value = fakes.FakeResource(
76+
fake_resource = fakes.FakeResource(
7177
None,
7278
{'prior_role': copy.deepcopy(identity_fakes.ROLES[0]),
7379
'implied': copy.deepcopy(identity_fakes.ROLES[1]), },
7480
loaded=True,
7581
)
82+
self.inference_rules_mock.create.return_value = fake_resource
7683

7784
self.cmd = implied_role.CreateImpliedRole(self.app, None)
7885

@@ -93,8 +100,8 @@ def test_implied_role_create(self):
93100
# data to be shown.
94101
columns, data = self.cmd.take_action(parsed_args)
95102

96-
# RoleManager.create_implied(prior, implied)
97-
self.roles_mock.create_implied.assert_called_with(
103+
# InferenceRuleManager.create(prior, implied)
104+
self.inference_rules_mock.create.assert_called_with(
98105
identity_fakes.ROLES[0]['id'],
99106
identity_fakes.ROLES[1]['id']
100107
)
@@ -126,12 +133,13 @@ def setUp(self):
126133
),
127134
]
128135

129-
self.roles_mock.delete_implied.return_value = fakes.FakeResource(
136+
fake_resource = fakes.FakeResource(
130137
None,
131138
{'prior-role': copy.deepcopy(identity_fakes.ROLES[0]),
132139
'implied': copy.deepcopy(identity_fakes.ROLES[1]), },
133140
loaded=True,
134141
)
142+
self.inference_rules_mock.delete.return_value = fake_resource
135143

136144
self.cmd = implied_role.DeleteImpliedRole(self.app, None)
137145

@@ -147,7 +155,7 @@ def test_implied_role_delete(self):
147155
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
148156
self.cmd.take_action(parsed_args)
149157

150-
self.roles_mock.delete_implied.assert_called_with(
158+
self.inference_rules_mock.delete.assert_called_with(
151159
identity_fakes.ROLES[0]['id'],
152160
identity_fakes.ROLES[1]['id']
153161
)
@@ -158,7 +166,7 @@ class TestImpliedRoleList(TestRole):
158166
def setUp(self):
159167
super(TestImpliedRoleList, self).setUp()
160168

161-
self.roles_mock.list_inference_roles.return_value = (
169+
self.inference_rules_mock.list_inference_roles.return_value = (
162170
identity_fakes.FakeImpliedRoleResponse.create_list())
163171

164172
self.cmd = implied_role.ListImpliedRole(self.app, None)
@@ -168,7 +176,7 @@ def test_implied_role_list(self):
168176
verifylist = []
169177
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
170178
columns, data = self.cmd.take_action(parsed_args)
171-
self.roles_mock.list_inference_roles.assert_called_with()
179+
self.inference_rules_mock.list_inference_roles.assert_called_with()
172180

173181
collist = ['Prior Role ID', 'Prior Role Name',
174182
'Implied Role ID', 'Implied Role Name']

0 commit comments

Comments
 (0)