identity: Migrate 'access rule' commands to SDK · openstack/python-openstackclient@415f680 · GitHub
Skip to content

Commit 415f680

Browse files
agaetepstephenfin
authored andcommitted
identity: Migrate 'access rule' commands to SDK
Change-Id: Id5740cc61474650f22f9efe8d148c8c666c3b91e
1 parent bbe0423 commit 415f680

4 files changed

Lines changed: 103 additions & 82 deletions

File tree

openstackclient/identity/v3/access_rule.py

Lines changed: 26 additions & 14 deletions

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@
2020

2121
class AccessRuleTests(common.IdentityTests):
2222
ACCESS_RULE_FIELDS = [
23-
'id',
24-
'service',
25-
'method',
26-
'path',
23+
'ID',
24+
'Service',
25+
'Method',
26+
'Path',
2727
]
2828
ACCESS_RULE_LIST_HEADERS = [
2929
'ID',

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

Lines changed: 65 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -13,72 +13,66 @@
1313
# under the License.
1414
#
1515

16-
import copy
16+
from unittest.mock import call
1717

18-
from keystoneclient import exceptions as identity_exc
18+
from openstack import exceptions as sdk_exceptions
19+
from openstack.identity.v3 import access_rule as _access_rule
20+
from openstack.test import fakes as sdk_fakes
1921
from osc_lib import exceptions
2022

2123
from openstackclient.identity.v3 import access_rule
22-
from openstackclient.tests.unit import fakes
2324
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
2425

2526

26-
class TestAccessRule(identity_fakes.TestIdentityv3):
27-
def setUp(self):
28-
super().setUp()
29-
30-
identity_manager = self.identity_client
31-
self.access_rules_mock = identity_manager.access_rules
32-
self.access_rules_mock.reset_mock()
33-
self.roles_mock = identity_manager.roles
34-
self.roles_mock.reset_mock()
27+
class TestAccessRuleDelete(identity_fakes.TestIdentityv3):
28+
access_rule = sdk_fakes.generate_fake_resource(_access_rule.AccessRule)
3529

36-
37-
class TestAccessRuleDelete(TestAccessRule):
3830
def setUp(self):
3931
super().setUp()
4032

41-
# This is the return value for utils.find_resource()
42-
self.access_rules_mock.get.return_value = fakes.FakeResource(
43-
None,
44-
copy.deepcopy(identity_fakes.ACCESS_RULE),
45-
loaded=True,
33+
self.identity_sdk_client.get_access_rule.return_value = (
34+
self.access_rule
4635
)
47-
self.access_rules_mock.delete.return_value = None
36+
self.identity_sdk_client.delete_access_rule.return_value = None
4837

4938
# Get the command object to test
5039
self.cmd = access_rule.DeleteAccessRule(self.app, None)
5140

5241
def test_access_rule_delete(self):
53-
arglist = [
54-
identity_fakes.access_rule_id,
55-
]
56-
verifylist = [('access_rule', [identity_fakes.access_rule_id])]
42+
arglist = [self.access_rule.id]
43+
verifylist = [('access_rule', [self.access_rule.id])]
5744
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
5845

46+
conn = self.app.client_manager.sdk_connection
47+
user_id = conn.config.get_auth().get_user_id(conn.identity)
48+
5949
result = self.cmd.take_action(parsed_args)
6050

61-
self.access_rules_mock.delete.assert_called_with(
62-
identity_fakes.access_rule_id,
51+
self.identity_sdk_client.delete_access_rule.assert_called_with(
52+
user_id,
53+
self.access_rule.id,
6354
)
6455
self.assertIsNone(result)
6556

6657
def test_delete_multi_access_rules_with_exception(self):
67-
# mock returns for common.get_resource_by_id
68-
mock_get = self.access_rules_mock.get
69-
mock_get.side_effect = [
70-
mock_get.return_value,
71-
identity_exc.NotFound,
58+
self.identity_sdk_client.get_access_rule.side_effect = [
59+
self.access_rule,
60+
sdk_exceptions.NotFoundException,
7261
]
62+
7363
arglist = [
74-
identity_fakes.access_rule_id,
64+
self.access_rule.id,
7565
'nonexistent_access_rule',
7666
]
7767
verifylist = [
7868
('access_rule', arglist),
7969
]
70+
8071
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
8172

73+
conn = self.app.client_manager.sdk_connection
74+
user_id = conn.config.get_auth().get_user_id(conn.identity)
75+
8276
try:
8377
self.cmd.take_action(parsed_args)
8478
self.fail('CommandError should be raised.')
@@ -87,26 +81,27 @@ def test_delete_multi_access_rules_with_exception(self):
8781
'1 of 2 access rules failed to' ' delete.', str(e)
8882
)
8983

90-
mock_get.assert_any_call(identity_fakes.access_rule_id)
91-
mock_get.assert_any_call('nonexistent_access_rule')
84+
calls = []
85+
for a in arglist:
86+
calls.append(call(user_id, a))
87+
88+
self.identity_sdk_client.get_access_rule.assert_has_calls(calls)
9289

93-
self.assertEqual(2, mock_get.call_count)
94-
self.access_rules_mock.delete.assert_called_once_with(
95-
identity_fakes.access_rule_id
90+
self.assertEqual(
91+
2, self.identity_sdk_client.get_access_rule.call_count
92+
)
93+
self.identity_sdk_client.delete_access_rule.assert_called_once_with(
94+
user_id, self.access_rule.id
9695
)
9796

9897

99-
class TestAccessRuleList(TestAccessRule):
98+
class TestAccessRuleList(identity_fakes.TestIdentityv3):
99+
access_rule = sdk_fakes.generate_fake_resource(_access_rule.AccessRule)
100+
100101
def setUp(self):
101102
super().setUp()
102103

103-
self.access_rules_mock.list.return_value = [
104-
fakes.FakeResource(
105-
None,
106-
copy.deepcopy(identity_fakes.ACCESS_RULE),
107-
loaded=True,
108-
),
109-
]
104+
self.identity_sdk_client.access_rules.return_value = [self.access_rule]
110105

111106
# Get the command object to test
112107
self.cmd = access_rule.ListAccessRule(self.app, None)
@@ -116,57 +111,63 @@ def test_access_rule_list(self):
116111
verifylist = []
117112
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
118113

114+
conn = self.app.client_manager.sdk_connection
115+
user_id = conn.config.get_auth().get_user_id(conn.identity)
116+
119117
columns, data = self.cmd.take_action(parsed_args)
120118

121-
self.access_rules_mock.list.assert_called_with(user=None)
119+
self.identity_sdk_client.access_rules.assert_called_with(user=user_id)
122120

123121
collist = ('ID', 'Service', 'Method', 'Path')
124122
self.assertEqual(collist, columns)
125123
datalist = (
126124
(
127-
identity_fakes.access_rule_id,
128-
identity_fakes.access_rule_service,
129-
identity_fakes.access_rule_method,
130-
identity_fakes.access_rule_path,
125+
self.access_rule.id,
126+
self.access_rule.service,
127+
self.access_rule.method,
128+
self.access_rule.path,
131129
),
132130
)
133131
self.assertEqual(datalist, tuple(data))
134132

135133

136-
class TestAccessRuleShow(TestAccessRule):
134+
class TestAccessRuleShow(identity_fakes.TestIdentityv3):
135+
access_rule = sdk_fakes.generate_fake_resource(_access_rule.AccessRule)
136+
137137
def setUp(self):
138138
super().setUp()
139139

140-
self.access_rules_mock.get.return_value = fakes.FakeResource(
141-
None,
142-
copy.deepcopy(identity_fakes.ACCESS_RULE),
143-
loaded=True,
140+
self.identity_sdk_client.get_access_rule.return_value = (
141+
self.access_rule
144142
)
145143

146144
# Get the command object to test
147145
self.cmd = access_rule.ShowAccessRule(self.app, None)
148146

149147
def test_access_rule_show(self):
150148
arglist = [
151-
identity_fakes.access_rule_id,
149+
self.access_rule.id,
152150
]
153151
verifylist = [
154-
('access_rule', identity_fakes.access_rule_id),
152+
('access_rule', self.access_rule.id),
155153
]
156154
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
157155

156+
conn = self.app.client_manager.sdk_connection
157+
user_id = conn.config.get_auth().get_user_id(conn.identity)
158+
158159
columns, data = self.cmd.take_action(parsed_args)
159160

160-
self.access_rules_mock.get.assert_called_with(
161-
identity_fakes.access_rule_id
161+
self.identity_sdk_client.get_access_rule.assert_called_with(
162+
user_id, self.access_rule.id
162163
)
163164

164-
collist = ('id', 'method', 'path', 'service')
165+
collist = ('ID', 'Method', 'Path', 'Service')
165166
self.assertEqual(collist, columns)
166167
datalist = (
167-
identity_fakes.access_rule_id,
168-
identity_fakes.access_rule_method,
169-
identity_fakes.access_rule_path,
170-
identity_fakes.access_rule_service,
168+
self.access_rule.id,
169+
self.access_rule.method,
170+
self.access_rule.path,
171+
self.access_rule.service,
171172
)
172173
self.assertEqual(datalist, data)
Lines changed: 8 additions & 0 deletions

0 commit comments

Comments
 (0)