Skip to content

Commit 2c25e17

Browse files
committed
Add unit tests for coriolisclient.cli.services module
1 parent 91cd9b1 commit 2c25e17

File tree

1 file changed

+305
-0
lines changed

1 file changed

+305
-0
lines changed
+305
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,305 @@
1+
# Copyright 2024 Cloudbase Solutions Srl
2+
# All Rights Reserved.
3+
4+
from unittest import mock
5+
6+
from cliff import command
7+
from cliff import lister
8+
from cliff import show
9+
10+
from coriolisclient.cli import services
11+
from coriolisclient.tests import test_base
12+
13+
14+
class ServicesTestCase(test_base.CoriolisBaseTestCase):
15+
"""Test suite for the Coriolis Services."""
16+
17+
def test_add_service_enablement_args_to_parser(self):
18+
parser = mock.Mock()
19+
20+
services._add_service_enablement_args_to_parser(parser)
21+
22+
parser.add_mutually_exclusive_group.assert_called_once()
23+
24+
25+
class ServiceFormatterTestCase(test_base.CoriolisBaseTestCase):
26+
"""Test suite for the Coriolis Services Formatter."""
27+
28+
def setUp(self):
29+
super(ServiceFormatterTestCase, self).setUp()
30+
self.service = services.ServiceFormatter()
31+
32+
def test_get_sorted_list(self):
33+
obj1 = mock.Mock()
34+
obj2 = mock.Mock()
35+
obj3 = mock.Mock()
36+
obj1.created_at = "date1"
37+
obj2.created_at = "date2"
38+
obj3.created_at = "date3"
39+
obj_list = [obj2, obj1, obj3]
40+
41+
result = self.service._get_sorted_list(obj_list)
42+
43+
self.assertEqual(
44+
[obj1, obj2, obj3],
45+
result
46+
)
47+
48+
def test_get_formatted_data(self):
49+
obj = mock.Mock()
50+
obj.id = mock.sentinel.id
51+
obj.host = mock.sentinel.host
52+
obj.binary = mock.sentinel.binary
53+
obj.topic = mock.sentinel.topic
54+
obj.enabled = mock.sentinel.enabled
55+
obj.status = mock.sentinel.status
56+
obj.mapped_regions = mock.sentinel.mapped_regions
57+
obj.created_at = mock.sentinel.created_at
58+
obj.updated_at = mock.sentinel.updated_at
59+
60+
result = self.service._get_formatted_data(obj)
61+
62+
self.assertEqual(
63+
(
64+
mock.sentinel.id,
65+
mock.sentinel.host,
66+
mock.sentinel.binary,
67+
mock.sentinel.topic,
68+
mock.sentinel.enabled,
69+
mock.sentinel.status,
70+
mock.sentinel.mapped_regions,
71+
mock.sentinel.created_at,
72+
mock.sentinel.updated_at
73+
),
74+
result
75+
)
76+
77+
78+
class CreateServiceTestCase(test_base.CoriolisBaseTestCase):
79+
"""Test suite for the Coriolis Create Service."""
80+
81+
def setUp(self):
82+
self.mock_app = mock.Mock()
83+
super(CreateServiceTestCase, self).setUp()
84+
self.service = services.CreateService(
85+
self.mock_app, mock.sentinel.app_args)
86+
87+
@mock.patch.object(services, '_add_service_enablement_args_to_parser')
88+
@mock.patch.object(show.ShowOne, 'get_parser')
89+
def test_get_parser(
90+
self,
91+
mock_get_parser,
92+
mock_add_service_enablement_args_to_parser
93+
):
94+
result = self.service.get_parser(mock.sentinel.prog_name)
95+
96+
self.assertEqual(
97+
mock_get_parser.return_value,
98+
result
99+
)
100+
mock_get_parser.assert_called_once_with(mock.sentinel.prog_name)
101+
mock_add_service_enablement_args_to_parser.assert_called_once_with(
102+
mock_get_parser.return_value)
103+
104+
@mock.patch.object(services.ServiceFormatter, 'get_formatted_entity')
105+
def test_take_action(
106+
self,
107+
mock_get_formatted_entity
108+
):
109+
args = mock.Mock()
110+
args.host = mock.sentinel.host
111+
args.binary = mock.sentinel.binary
112+
args.topic = mock.sentinel.topic
113+
args.enabled = True
114+
args.regions = mock.sentinel.regions
115+
mock_services = mock.Mock()
116+
self.mock_app.client_manager.coriolis.services = mock_services
117+
118+
result = self.service.take_action(args)
119+
120+
self.assertEqual(
121+
mock_get_formatted_entity.return_value,
122+
result
123+
)
124+
mock_services.create.assert_called_once_with(
125+
mock.sentinel.host,
126+
mock.sentinel.binary,
127+
topic=mock.sentinel.topic,
128+
enabled=True,
129+
regions=mock.sentinel.regions
130+
)
131+
mock_get_formatted_entity.assert_called_once_with(
132+
mock_services.create.return_value)
133+
134+
135+
class UpdateServiceTestCase(test_base.CoriolisBaseTestCase):
136+
"""Test suite for the Coriolis Update Service."""
137+
138+
def setUp(self):
139+
self.mock_app = mock.Mock()
140+
super(UpdateServiceTestCase, self).setUp()
141+
self.service = services.UpdateService(
142+
self.mock_app, mock.sentinel.app_args)
143+
144+
@mock.patch.object(services, '_add_service_enablement_args_to_parser')
145+
@mock.patch.object(show.ShowOne, 'get_parser')
146+
def test_get_parser(
147+
self,
148+
mock_get_parser,
149+
mock_add_service_enablement_args_to_parser
150+
):
151+
result = self.service.get_parser(mock.sentinel.prog_name)
152+
153+
self.assertEqual(
154+
mock_get_parser.return_value,
155+
result
156+
)
157+
mock_get_parser.assert_called_once_with(mock.sentinel.prog_name)
158+
mock_add_service_enablement_args_to_parser.assert_called_once_with(
159+
mock_get_parser.return_value)
160+
161+
@mock.patch.object(services.ServiceFormatter, 'get_formatted_entity')
162+
def test_take_action(
163+
self,
164+
mock_get_formatted_entity
165+
):
166+
args = mock.Mock()
167+
args.id = mock.sentinel.id
168+
args.enabled = True
169+
args.regions = mock.sentinel.regions
170+
mock_services = mock.Mock()
171+
self.mock_app.client_manager.coriolis.services = mock_services
172+
expected_updated_values = {
173+
"enabled": True,
174+
"mapped_regions": mock.sentinel.regions,
175+
}
176+
177+
result = self.service.take_action(args)
178+
179+
self.assertEqual(
180+
mock_get_formatted_entity.return_value,
181+
result
182+
)
183+
mock_services.update.assert_called_once_with(
184+
mock.sentinel.id,
185+
expected_updated_values
186+
)
187+
mock_get_formatted_entity.assert_called_once_with(
188+
mock_services.update.return_value)
189+
190+
191+
class ShowServiceTestCase(test_base.CoriolisBaseTestCase):
192+
"""Test suite for the Coriolis Show Service."""
193+
194+
def setUp(self):
195+
self.mock_app = mock.Mock()
196+
super(ShowServiceTestCase, self).setUp()
197+
self.service = services.ShowService(
198+
self.mock_app, mock.sentinel.app_args)
199+
200+
@mock.patch.object(show.ShowOne, 'get_parser')
201+
def test_get_parser(
202+
self,
203+
mock_get_parser
204+
):
205+
result = self.service.get_parser(mock.sentinel.prog_name)
206+
207+
self.assertEqual(
208+
mock_get_parser.return_value,
209+
result
210+
)
211+
mock_get_parser.assert_called_once_with(mock.sentinel.prog_name)
212+
213+
@mock.patch.object(services.ServiceFormatter, 'get_formatted_entity')
214+
def test_take_action(
215+
self,
216+
mock_get_formatted_entity
217+
):
218+
args = mock.Mock()
219+
args.id = mock.sentinel.id
220+
mock_services = mock.Mock()
221+
self.mock_app.client_manager.coriolis.services = mock_services
222+
223+
result = self.service.take_action(args)
224+
225+
self.assertEqual(
226+
mock_get_formatted_entity.return_value,
227+
result
228+
)
229+
mock_services.get.assert_called_once_with(mock.sentinel.id)
230+
mock_get_formatted_entity.assert_called_once_with(
231+
mock_services.get.return_value)
232+
233+
234+
class DeleteServiceTestCase(test_base.CoriolisBaseTestCase):
235+
"""Test suite for the Coriolis Delete Service."""
236+
237+
def setUp(self):
238+
self.mock_app = mock.Mock()
239+
super(DeleteServiceTestCase, self).setUp()
240+
self.service = services.DeleteService(
241+
self.mock_app, mock.sentinel.app_args)
242+
243+
@mock.patch.object(command.Command, 'get_parser')
244+
def test_get_parser(
245+
self,
246+
mock_get_parser
247+
):
248+
result = self.service.get_parser(mock.sentinel.prog_name)
249+
250+
self.assertEqual(
251+
mock_get_parser.return_value,
252+
result
253+
)
254+
mock_get_parser.assert_called_once_with(mock.sentinel.prog_name)
255+
256+
def test_take_action(self):
257+
args = mock.Mock()
258+
args.id = mock.sentinel.id
259+
mock_services = mock.Mock()
260+
self.mock_app.client_manager.coriolis.services = mock_services
261+
262+
self.service.take_action(args)
263+
264+
mock_services.delete.assert_called_once_with(mock.sentinel.id)
265+
266+
267+
class ListServicesTestCase(test_base.CoriolisBaseTestCase):
268+
"""Test suite for the Coriolis List Services."""
269+
270+
def setUp(self):
271+
self.mock_app = mock.Mock()
272+
super(ListServicesTestCase, self).setUp()
273+
self.service = services.ListServices(
274+
self.mock_app, mock.sentinel.app_args)
275+
276+
@mock.patch.object(lister.Lister, 'get_parser')
277+
def test_get_parser(
278+
self,
279+
mock_get_parser
280+
):
281+
result = self.service.get_parser(mock.sentinel.prog_name)
282+
283+
self.assertEqual(
284+
mock_get_parser.return_value,
285+
result
286+
)
287+
mock_get_parser.assert_called_once_with(mock.sentinel.prog_name)
288+
289+
@mock.patch.object(services.ServiceFormatter, 'list_objects')
290+
def test_take_action(
291+
self,
292+
mock_list_objects
293+
):
294+
args = mock.Mock()
295+
mock_services = mock.Mock()
296+
self.mock_app.client_manager.coriolis.services = mock_services
297+
298+
result = self.service.take_action(args)
299+
300+
self.assertEqual(
301+
mock_list_objects.return_value,
302+
result
303+
)
304+
mock_list_objects.assert_called_once_with(
305+
mock_services.list.return_value)

0 commit comments

Comments
 (0)