1+ import logging
2+ from unittest .mock import AsyncMock , MagicMock , patch
3+
4+ import pytest
5+
6+ from conductor .asyncio_client .event .event_client import AsyncEventClient
7+ from conductor .asyncio_client .http .api_client import ApiClient
8+ from conductor .shared .event .configuration import QueueConfiguration
9+ from conductor .shared .event .configuration .kafka_queue import KafkaQueueConfiguration , KafkaConsumerConfiguration , KafkaProducerConfiguration
10+
11+
12+ @pytest .fixture (autouse = True )
13+ def disable_logging ():
14+ logging .disable (logging .CRITICAL )
15+ yield
16+ logging .disable (logging .NOTSET )
17+
18+
19+ @pytest .fixture
20+ def mock_api_client ():
21+ return MagicMock (spec = ApiClient )
22+
23+
24+ @pytest .fixture
25+ def mock_event_resource_api ():
26+ return AsyncMock ()
27+
28+
29+ @pytest .fixture
30+ def event_client (mock_api_client , mock_event_resource_api ):
31+ with patch ('conductor.asyncio_client.event.event_client.EventResourceApiAdapter' , return_value = mock_event_resource_api ):
32+ client = AsyncEventClient (mock_api_client )
33+ client .client = mock_event_resource_api
34+ return client
35+
36+
37+ @pytest .fixture
38+ def kafka_queue_config ():
39+ config = KafkaQueueConfiguration ("test_topic" )
40+ consumer_config = KafkaConsumerConfiguration ("localhost:9092" )
41+ producer_config = KafkaProducerConfiguration ("localhost:9092" )
42+ config .add_consumer (consumer_config )
43+ config .add_producer (producer_config )
44+ return config
45+
46+
47+ @pytest .mark .asyncio
48+ async def test_delete_queue_configuration_success (event_client , kafka_queue_config , mock_event_resource_api ):
49+ await event_client .delete_queue_configuration (kafka_queue_config )
50+
51+ mock_event_resource_api .delete_queue_config .assert_called_once_with (
52+ queue_name = "test_topic" ,
53+ queue_type = "kafka"
54+ )
55+
56+
57+ @pytest .mark .asyncio
58+ async def test_get_kafka_queue_configuration_success (event_client , mock_event_resource_api ):
59+ expected_config = KafkaQueueConfiguration ("test_topic" )
60+ mock_event_resource_api .get_queue_config .return_value = expected_config
61+
62+ result = await event_client .get_kafka_queue_configuration ("test_topic" )
63+
64+ mock_event_resource_api .get_queue_config .assert_called_once_with ("kafka" , "test_topic" )
65+ assert result == expected_config
66+
67+
68+ @pytest .mark .asyncio
69+ async def test_get_queue_configuration_success (event_client , mock_event_resource_api ):
70+ expected_config = MagicMock ()
71+ mock_event_resource_api .get_queue_config .return_value = expected_config
72+
73+ result = await event_client .get_queue_configuration ("kafka" , "test_topic" )
74+
75+ mock_event_resource_api .get_queue_config .assert_called_once_with ("kafka" , "test_topic" )
76+ assert result == expected_config
77+
78+
79+ @pytest .mark .asyncio
80+ async def test_put_queue_configuration_success (event_client , kafka_queue_config , mock_event_resource_api ):
81+ await event_client .put_queue_configuration (kafka_queue_config )
82+
83+ mock_event_resource_api .put_queue_config .assert_called_once_with (
84+ body = kafka_queue_config .get_worker_configuration (),
85+ queue_name = "test_topic" ,
86+ queue_type = "kafka"
87+ )
88+
89+
90+ @pytest .mark .asyncio
91+ async def test_delete_queue_configuration_error_handling (event_client , kafka_queue_config , mock_event_resource_api ):
92+ mock_event_resource_api .delete_queue_config .side_effect = Exception ("Delete failed" )
93+
94+ with pytest .raises (Exception , match = "Delete failed" ):
95+ await event_client .delete_queue_configuration (kafka_queue_config )
96+
97+
98+ @pytest .mark .asyncio
99+ async def test_get_kafka_queue_configuration_error_handling (event_client , mock_event_resource_api ):
100+ mock_event_resource_api .get_queue_config .side_effect = Exception ("Get failed" )
101+
102+ with pytest .raises (Exception , match = "Get failed" ):
103+ await event_client .get_kafka_queue_configuration ("test_topic" )
104+
105+
106+ @pytest .mark .asyncio
107+ async def test_get_queue_configuration_error_handling (event_client , mock_event_resource_api ):
108+ mock_event_resource_api .get_queue_config .side_effect = Exception ("Get failed" )
109+
110+ with pytest .raises (Exception , match = "Get failed" ):
111+ await event_client .get_queue_configuration ("kafka" , "test_topic" )
112+
113+
114+ @pytest .mark .asyncio
115+ async def test_put_queue_configuration_error_handling (event_client , kafka_queue_config , mock_event_resource_api ):
116+ mock_event_resource_api .put_queue_config .side_effect = Exception ("Put failed" )
117+
118+ with pytest .raises (Exception , match = "Put failed" ):
119+ await event_client .put_queue_configuration (kafka_queue_config )
120+
121+
122+ @pytest .mark .asyncio
123+ async def test_get_kafka_queue_configuration_calls_get_queue_configuration (event_client , mock_event_resource_api ):
124+ expected_config = MagicMock ()
125+ mock_event_resource_api .get_queue_config .return_value = expected_config
126+
127+ result = await event_client .get_kafka_queue_configuration ("test_topic" )
128+
129+ mock_event_resource_api .get_queue_config .assert_called_once_with ("kafka" , "test_topic" )
130+ assert result == expected_config
131+
132+
133+ @pytest .mark .asyncio
134+ async def test_delete_queue_configuration_with_different_queue_types (event_client , mock_event_resource_api ):
135+ config = MagicMock (spec = QueueConfiguration )
136+ config .queue_name = "test_queue"
137+ config .queue_type = "redis"
138+
139+ await event_client .delete_queue_configuration (config )
140+
141+ mock_event_resource_api .delete_queue_config .assert_called_once_with (
142+ queue_name = "test_queue" ,
143+ queue_type = "redis"
144+ )
145+
146+
147+ @pytest .mark .asyncio
148+ async def test_put_queue_configuration_with_different_queue_types (event_client , mock_event_resource_api ):
149+ config = MagicMock (spec = QueueConfiguration )
150+ config .queue_name = "test_queue"
151+ config .queue_type = "redis"
152+ config .get_worker_configuration .return_value = {"test" : "config" }
153+
154+ await event_client .put_queue_configuration (config )
155+
156+ mock_event_resource_api .put_queue_config .assert_called_once_with (
157+ body = {"test" : "config" },
158+ queue_name = "test_queue" ,
159+ queue_type = "redis"
160+ )
161+
162+
163+ @pytest .mark .asyncio
164+ async def test_get_queue_configuration_with_different_queue_types (event_client , mock_event_resource_api ):
165+ expected_config = MagicMock ()
166+ mock_event_resource_api .get_queue_config .return_value = expected_config
167+
168+ result = await event_client .get_queue_configuration ("redis" , "test_queue" )
169+
170+ mock_event_resource_api .get_queue_config .assert_called_once_with ("redis" , "test_queue" )
171+ assert result == expected_config
172+
173+
174+ @pytest .mark .asyncio
175+ async def test_delete_queue_configuration_returns_none (event_client , kafka_queue_config , mock_event_resource_api ):
176+ mock_event_resource_api .delete_queue_config .return_value = None
177+
178+ result = await event_client .delete_queue_configuration (kafka_queue_config )
179+
180+ assert result is None
181+
182+
183+ @pytest .mark .asyncio
184+ async def test_put_queue_configuration_returns_result (event_client , kafka_queue_config , mock_event_resource_api ):
185+ expected_result = MagicMock ()
186+ mock_event_resource_api .put_queue_config .return_value = expected_result
187+
188+ result = await event_client .put_queue_configuration (kafka_queue_config )
189+
190+ assert result == expected_result
191+
192+
193+ @pytest .mark .asyncio
194+ async def test_get_queue_configuration_returns_config (event_client , mock_event_resource_api ):
195+ expected_config = MagicMock ()
196+ mock_event_resource_api .get_queue_config .return_value = expected_config
197+
198+ result = await event_client .get_queue_configuration ("kafka" , "test_topic" )
199+
200+ assert result == expected_config
201+
202+
203+ @pytest .mark .asyncio
204+ async def test_get_kafka_queue_configuration_returns_config (event_client , mock_event_resource_api ):
205+ expected_config = MagicMock ()
206+ mock_event_resource_api .get_queue_config .return_value = expected_config
207+
208+ result = await event_client .get_kafka_queue_configuration ("test_topic" )
209+
210+ assert result == expected_config
211+
212+
213+ @pytest .mark .asyncio
214+ async def test_delete_queue_configuration_with_empty_queue_name (event_client , mock_event_resource_api ):
215+ config = MagicMock (spec = QueueConfiguration )
216+ config .queue_name = ""
217+ config .queue_type = "kafka"
218+
219+ await event_client .delete_queue_configuration (config )
220+
221+ mock_event_resource_api .delete_queue_config .assert_called_once_with (
222+ queue_name = "" ,
223+ queue_type = "kafka"
224+ )
225+
226+
227+ @pytest .mark .asyncio
228+ async def test_put_queue_configuration_with_empty_queue_name (event_client , mock_event_resource_api ):
229+ config = MagicMock (spec = QueueConfiguration )
230+ config .queue_name = ""
231+ config .queue_type = "kafka"
232+ config .get_worker_configuration .return_value = {}
233+
234+ await event_client .put_queue_configuration (config )
235+
236+ mock_event_resource_api .put_queue_config .assert_called_once_with (
237+ body = {},
238+ queue_name = "" ,
239+ queue_type = "kafka"
240+ )
241+
242+
243+ @pytest .mark .asyncio
244+ async def test_get_queue_configuration_with_empty_queue_name (event_client , mock_event_resource_api ):
245+ expected_config = MagicMock ()
246+ mock_event_resource_api .get_queue_config .return_value = expected_config
247+
248+ result = await event_client .get_queue_configuration ("kafka" , "" )
249+
250+ mock_event_resource_api .get_queue_config .assert_called_once_with ("kafka" , "" )
251+ assert result == expected_config
252+
253+
254+ @pytest .mark .asyncio
255+ async def test_get_kafka_queue_configuration_with_empty_topic (event_client , mock_event_resource_api ):
256+ expected_config = MagicMock ()
257+ mock_event_resource_api .get_queue_config .return_value = expected_config
258+
259+ result = await event_client .get_kafka_queue_configuration ("" )
260+
261+ mock_event_resource_api .get_queue_config .assert_called_once_with ("kafka" , "" )
262+ assert result == expected_config
0 commit comments