Skip to content

Commit 3306c74

Browse files
committed
volume: Migrate 'volume message *' to SDK
Change-Id: I174e1789eb4bc4b6dc7507e89ad0d63cb75fbc90 Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
1 parent b6d817f commit 3306c74

3 files changed

Lines changed: 106 additions & 130 deletions

File tree

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

Lines changed: 0 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -666,64 +666,6 @@ def create_one_sdk_volume(attrs=None):
666666
return _volume.Volume(**volume_info)
667667

668668

669-
def create_one_volume_message(attrs=None):
670-
"""Create a fake message.
671-
672-
:param attrs: A dictionary with all attributes of message
673-
:return: A FakeResource object with id, name, status, etc.
674-
"""
675-
attrs = attrs or {}
676-
677-
# Set default attribute
678-
message_info = {
679-
'created_at': '2016-02-11T11:17:37.000000',
680-
'event_id': f'VOLUME_{random.randint(1, 999999):06d}',
681-
'guaranteed_until': '2016-02-11T11:17:37.000000',
682-
'id': uuid.uuid4().hex,
683-
'message_level': 'ERROR',
684-
'request_id': f'req-{uuid.uuid4().hex}',
685-
'resource_type': 'VOLUME',
686-
'resource_uuid': uuid.uuid4().hex,
687-
'user_message': f'message-{uuid.uuid4().hex}',
688-
}
689-
690-
# Overwrite default attributes if there are some attributes set
691-
message_info.update(attrs)
692-
693-
return fakes.FakeResource(None, message_info, loaded=True)
694-
695-
696-
def create_volume_messages(attrs=None, count=2):
697-
"""Create multiple fake messages.
698-
699-
:param attrs: A dictionary with all attributes of message
700-
:param count: The number of messages to be faked
701-
:return: A list of FakeResource objects
702-
"""
703-
messages = []
704-
for n in range(0, count):
705-
messages.append(create_one_volume_message(attrs))
706-
707-
return messages
708-
709-
710-
def get_volume_messages(messages=None, count=2):
711-
"""Get an iterable MagicMock object with a list of faked messages.
712-
713-
If messages list is provided, then initialize the Mock object with the
714-
list. Otherwise create one.
715-
716-
:param messages: A list of FakeResource objects faking messages
717-
:param count: The number of messages to be faked
718-
:return An iterable Mock object with side_effect set to a list of faked
719-
messages
720-
"""
721-
if messages is None:
722-
messages = create_volume_messages(count)
723-
724-
return mock.Mock(side_effect=messages)
725-
726-
727669
def create_one_volume_attachment(attrs=None):
728670
"""Create a fake volume attachment.
729671

openstackclient/tests/unit/volume/v3/test_volume_message.py

Lines changed: 44 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -12,34 +12,24 @@
1212

1313
from unittest.mock import call
1414

15+
from openstack.block_storage.v3 import message as _message
16+
from openstack.test import fakes as sdk_fakes
1517
from osc_lib import exceptions
1618

1719
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
1820
from openstackclient.tests.unit.volume.v3 import fakes as volume_fakes
1921
from openstackclient.volume.v3 import volume_message
2022

2123

22-
class TestVolumeMessage(volume_fakes.TestVolume):
23-
def setUp(self):
24-
super().setUp()
25-
26-
self.projects_mock = self.identity_client.projects
27-
self.projects_mock.reset_mock()
28-
29-
self.volume_messages_mock = self.volume_client.messages
30-
self.volume_messages_mock.reset_mock()
31-
32-
33-
class TestVolumeMessageDelete(TestVolumeMessage):
34-
fake_messages = volume_fakes.create_volume_messages(count=2)
24+
class TestVolumeMessageDelete(volume_fakes.TestVolume):
25+
fake_messages = list(
26+
sdk_fakes.generate_fake_resources(_message.Message, count=2)
27+
)
3528

3629
def setUp(self):
3730
super().setUp()
3831

39-
self.volume_messages_mock.get = volume_fakes.get_volume_messages(
40-
self.fake_messages,
41-
)
42-
self.volume_messages_mock.delete.return_value = None
32+
self.volume_sdk_client.delete_message.return_value = None
4333

4434
# Get the command object to mock
4535
self.cmd = volume_message.DeleteMessage(self.app, None)
@@ -57,8 +47,8 @@ def test_message_delete(self):
5747

5848
result = self.cmd.take_action(parsed_args)
5949

60-
self.volume_messages_mock.delete.assert_called_with(
61-
self.fake_messages[0].id
50+
self.volume_sdk_client.delete_message.assert_called_with(
51+
self.fake_messages[0].id, ignore_missing=False
6252
)
6353
self.assertIsNone(result)
6454

@@ -78,8 +68,8 @@ def test_message_delete_multiple_messages(self):
7868

7969
calls = []
8070
for m in self.fake_messages:
81-
calls.append(call(m.id))
82-
self.volume_messages_mock.delete.assert_has_calls(calls)
71+
calls.append(call(m.id, ignore_missing=False))
72+
self.volume_sdk_client.delete_message.assert_has_calls(calls)
8373
self.assertIsNone(result)
8474

8575
def test_message_delete_multiple_messages_with_exception(self):
@@ -95,8 +85,8 @@ def test_message_delete_multiple_messages_with_exception(self):
9585

9686
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
9787

98-
self.volume_messages_mock.delete.side_effect = [
99-
self.fake_messages[0],
88+
self.volume_sdk_client.delete_message.side_effect = [
89+
None,
10090
exceptions.CommandError,
10191
]
10292

@@ -105,12 +95,14 @@ def test_message_delete_multiple_messages_with_exception(self):
10595
)
10696
self.assertEqual('Failed to delete 1 of 2 messages.', str(exc))
10797

108-
self.volume_messages_mock.delete.assert_any_call(
109-
self.fake_messages[0].id
98+
self.volume_sdk_client.delete_message.assert_any_call(
99+
self.fake_messages[0].id, ignore_missing=False
100+
)
101+
self.volume_sdk_client.delete_message.assert_any_call(
102+
'invalid_message', ignore_missing=False
110103
)
111-
self.volume_messages_mock.delete.assert_any_call('invalid_message')
112104

113-
self.assertEqual(2, self.volume_messages_mock.delete.call_count)
105+
self.assertEqual(2, self.volume_sdk_client.delete_message.call_count)
114106

115107
def test_message_delete_pre_v33(self):
116108
self.set_volume_api_version('3.2')
@@ -131,9 +123,11 @@ def test_message_delete_pre_v33(self):
131123
)
132124

133125

134-
class TestVolumeMessageList(TestVolumeMessage):
126+
class TestVolumeMessageList(volume_fakes.TestVolume):
135127
fake_project = identity_fakes.FakeProject.create_one_project()
136-
fake_messages = volume_fakes.create_volume_messages(count=3)
128+
fake_messages = list(
129+
sdk_fakes.generate_fake_resources(_message.Message, count=3)
130+
)
137131

138132
columns = (
139133
'ID',
@@ -165,8 +159,8 @@ class TestVolumeMessageList(TestVolumeMessage):
165159
def setUp(self):
166160
super().setUp()
167161

168-
self.projects_mock.get.return_value = self.fake_project
169-
self.volume_messages_mock.list.return_value = self.fake_messages
162+
self.identity_client.projects.get.return_value = self.fake_project
163+
self.volume_sdk_client.messages.return_value = self.fake_messages
170164
# Get the command to test
171165
self.cmd = volume_message.ListMessages(self.app, None)
172166

@@ -183,11 +177,8 @@ def test_message_list(self):
183177
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
184178
columns, data = self.cmd.take_action(parsed_args)
185179

186-
search_opts = {
187-
'project_id': None,
188-
}
189-
self.volume_messages_mock.list.assert_called_with(
190-
search_opts=search_opts,
180+
self.volume_sdk_client.messages.assert_called_once_with(
181+
project_id=None,
191182
marker=None,
192183
limit=None,
193184
)
@@ -214,11 +205,8 @@ def test_message_list_with_options(self):
214205
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
215206
columns, data = self.cmd.take_action(parsed_args)
216207

217-
search_opts = {
218-
'project_id': self.fake_project.id,
219-
}
220-
self.volume_messages_mock.list.assert_called_with(
221-
search_opts=search_opts,
208+
self.volume_sdk_client.messages.assert_called_once_with(
209+
project_id=self.fake_project.id,
222210
marker=self.fake_messages[0].id,
223211
limit=3,
224212
)
@@ -245,19 +233,19 @@ def test_message_list_pre_v33(self):
245233
)
246234

247235

248-
class TestVolumeMessageShow(TestVolumeMessage):
249-
fake_message = volume_fakes.create_one_volume_message()
236+
class TestVolumeMessageShow(volume_fakes.TestVolume):
237+
fake_message = sdk_fakes.generate_fake_resource(_message.Message)
250238

251239
columns = (
252-
'created_at',
253-
'event_id',
254-
'guaranteed_until',
255-
'id',
256-
'message_level',
257-
'request_id',
258-
'resource_type',
259-
'resource_uuid',
260-
'user_message',
240+
'Created At',
241+
'Event ID',
242+
'Guaranteed Until',
243+
'ID',
244+
'Message Level',
245+
'Request ID',
246+
'Resource Type',
247+
'Resource UUID',
248+
'User Message',
261249
)
262250
data = (
263251
fake_message.created_at,
@@ -274,7 +262,7 @@ class TestVolumeMessageShow(TestVolumeMessage):
274262
def setUp(self):
275263
super().setUp()
276264

277-
self.volume_messages_mock.get.return_value = self.fake_message
265+
self.volume_sdk_client.get_message.return_value = self.fake_message
278266
# Get the command object to test
279267
self.cmd = volume_message.ShowMessage(self.app, None)
280268

@@ -286,7 +274,9 @@ def test_message_show(self):
286274
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
287275

288276
columns, data = self.cmd.take_action(parsed_args)
289-
self.volume_messages_mock.get.assert_called_with(self.fake_message.id)
277+
self.volume_sdk_client.get_message.assert_called_once_with(
278+
self.fake_message.id
279+
)
290280

291281
self.assertEqual(self.columns, columns)
292282
self.assertEqual(self.data, data)

0 commit comments

Comments
 (0)