Skip to content

Commit 006bcfb

Browse files
committed
Add unit tests for coriolisclient.v1.services.py module
1 parent 5efc05b commit 006bcfb

File tree

1 file changed

+148
-0
lines changed

1 file changed

+148
-0
lines changed
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
# Copyright 2024 Cloudbase Solutions Srl
2+
# All Rights Reserved.
3+
4+
import ddt
5+
from unittest import mock
6+
7+
from coriolisclient.tests import test_base
8+
from coriolisclient.v1 import services
9+
10+
11+
@ddt.ddt
12+
class ServiceManagerTestCase(test_base.CoriolisBaseTestCase):
13+
"""Test suite for the Coriolis v1 Service Manager."""
14+
15+
def setUp(self):
16+
mock_client = mock.Mock()
17+
super(ServiceManagerTestCase, self).setUp()
18+
self.service = services.ServiceManager(mock_client)
19+
20+
@mock.patch.object(services.ServiceManager, "_list")
21+
def test_list(self, mock_list):
22+
result = self.service.list()
23+
24+
self.assertEqual(
25+
mock_list.return_value,
26+
result
27+
)
28+
mock_list.assert_called_once_with(
29+
"/services", "services")
30+
31+
@mock.patch.object(services.ServiceManager, "_get")
32+
def test_get(self, mock_get):
33+
result = self.service.get(mock.sentinel.service)
34+
35+
self.assertEqual(
36+
mock_get.return_value,
37+
result
38+
)
39+
mock_get.assert_called_once_with(
40+
"/services/sentinel.service", "service")
41+
42+
@mock.patch.object(services.ServiceManager, "_post")
43+
def test_create(self, mock_post):
44+
expected_data = {
45+
"host": mock.sentinel.host,
46+
"binary": mock.sentinel.binary,
47+
"topic": mock.sentinel.topic,
48+
"mapped_regions": mock.sentinel.regions,
49+
"enabled": True
50+
}
51+
expected_data = {"service": expected_data}
52+
53+
result = self.service.create(
54+
mock.sentinel.host,
55+
mock.sentinel.binary,
56+
mock.sentinel.topic,
57+
mock.sentinel.regions,
58+
enabled=True,
59+
)
60+
61+
self.assertEqual(
62+
mock_post.return_value,
63+
result
64+
)
65+
mock_post.assert_called_once_with(
66+
"/services", expected_data, "service")
67+
68+
@mock.patch.object(services.ServiceManager, "_put")
69+
def test_update(self, mock_put):
70+
result = self.service.update(
71+
mock.sentinel.service, mock.sentinel.updated_values)
72+
73+
self.assertEqual(
74+
mock_put.return_value,
75+
result
76+
)
77+
mock_put.assert_called_once_with(
78+
"/services/%s" % mock.sentinel.service,
79+
{"service": mock.sentinel.updated_values}, 'service')
80+
81+
@mock.patch.object(services.ServiceManager, "_delete")
82+
def test_delete(self, mock_delete):
83+
result = self.service.delete(mock.sentinel.service)
84+
85+
self.assertEqual(
86+
mock_delete.return_value,
87+
result
88+
)
89+
mock_delete.assert_called_once_with(
90+
"/services/%s" % mock.sentinel.service)
91+
92+
@mock.patch.object(services.ServiceManager, "list")
93+
@ddt.data(
94+
{
95+
"host": "mock_host",
96+
"topic": "mock_topic",
97+
"expected_service": "service1",
98+
"raises": False
99+
},
100+
{
101+
"host": "mock_host",
102+
"topic": "mock_topic_not_found",
103+
"raises": True
104+
},
105+
{
106+
"host": "mock_host_duplicate",
107+
"topic": "mock_topic_duplicate",
108+
"raises": True
109+
},
110+
{
111+
"host": "mock_host_not_found",
112+
"topic": "mock_topic",
113+
"raises": True
114+
},
115+
)
116+
def test_find_service_by_host_and_topic(
117+
self,
118+
data,
119+
mock_list
120+
):
121+
self.service1 = mock.Mock()
122+
self.service2 = mock.Mock()
123+
self.service3 = mock.Mock()
124+
self.service1.host = "mock_host"
125+
self.service1.topic = "mock_topic"
126+
self.service2.host = "mock_host_duplicate"
127+
self.service2.topic = "mock_topic_duplicate"
128+
self.service3.host = "mock_host_duplicate"
129+
self.service3.topic = "mock_topic_duplicate"
130+
services = [self.service1, self.service2, self.service3]
131+
mock_list.return_value = services
132+
133+
if data.get("raises", False):
134+
self.assertRaises(
135+
ValueError,
136+
self.service.find_service_by_host_and_topic,
137+
data.get("host"),
138+
data.get("topic")
139+
)
140+
else:
141+
result = self.service.find_service_by_host_and_topic(
142+
data.get("host"),
143+
data.get("topic")
144+
)
145+
self.assertEqual(
146+
getattr(self, str(data.get("expected_service")), None),
147+
result
148+
)

0 commit comments

Comments
 (0)