1
- from unittest .mock import Mock , NonCallableMock , patch , call
1
+ from unittest .mock import Mock , NonCallableMock , patch , call , MagicMock
2
2
3
3
import pytest
4
4
21
21
SUPPORTED_MESSAGE_TYPES ,
22
22
check_machine_valid ,
23
23
is_aq_managed_image ,
24
+ get_aq_build_metadata ,
24
25
)
25
26
from rabbit_consumer .vm_data import VmData
26
27
@@ -217,11 +218,13 @@ def test_consume_create_machine_hostnames_good_path(
217
218
with (
218
219
patch ("rabbit_consumer.message_consumer.VmData" ) as data_patch ,
219
220
patch ("rabbit_consumer.message_consumer.check_machine_valid" ) as check_machine ,
220
- patch ("rabbit_consumer.message_consumer.is_aq_managed_image" ) as is_managed ,
221
+ patch (
222
+ "rabbit_consumer.message_consumer.get_aq_build_metadata"
223
+ ) as get_image_meta ,
221
224
patch ("rabbit_consumer.message_consumer.delete_machine" ) as delete_machine ,
222
225
):
223
226
check_machine .return_value = True
224
- is_managed .return_value = image_metadata
227
+ get_image_meta .return_value = image_metadata
225
228
226
229
handle_create_machine (rabbit_message )
227
230
@@ -272,13 +275,14 @@ def test_check_machine_valid(openstack_api, is_aq_managed):
272
275
"""
273
276
mock_message = NonCallableMock ()
274
277
is_aq_managed .return_value = True
278
+
279
+ vm_data = VmData .from_message (mock_message )
280
+
275
281
openstack_api .check_machine_exists .return_value = True
276
282
277
283
assert check_machine_valid (mock_message )
278
- is_aq_managed .assert_called_once_with (mock_message )
279
- openstack_api .check_machine_exists .assert_called_once_with (
280
- VmData .from_message (mock_message )
281
- )
284
+ is_aq_managed .assert_called_once_with (vm_data )
285
+ openstack_api .check_machine_exists .assert_called_once_with (vm_data )
282
286
283
287
284
288
@patch ("rabbit_consumer.message_consumer.is_aq_managed_image" )
@@ -290,13 +294,12 @@ def test_check_machine_invalid_image(openstack_api, is_aq_managed):
290
294
mock_message = NonCallableMock ()
291
295
is_aq_managed .return_value = False
292
296
openstack_api .check_machine_exists .return_value = True
297
+ vm_data = VmData .from_message (mock_message )
293
298
294
299
assert not check_machine_valid (mock_message )
295
300
296
- openstack_api .check_machine_exists .assert_called_once_with (
297
- VmData .from_message (mock_message )
298
- )
299
- is_aq_managed .assert_called_once_with (mock_message )
301
+ openstack_api .check_machine_exists .assert_called_once_with (vm_data )
302
+ is_aq_managed .assert_called_once_with (vm_data )
300
303
301
304
302
305
@patch ("rabbit_consumer.message_consumer.is_aq_managed_image" )
@@ -316,30 +319,45 @@ def test_check_machine_invalid_machine(openstack_api, is_aq_managed):
316
319
)
317
320
318
321
319
- @patch ("rabbit_consumer.message_consumer.VmData" )
320
- @patch ("rabbit_consumer.message_consumer.ImageMetadata" )
321
322
@patch ("rabbit_consumer.message_consumer.openstack_api" )
322
- def test_is_aq_managed_image (openstack_api , image_meta , vm_data ):
323
+ def test_is_aq_managed_image (openstack_api , vm_data ):
323
324
"""
324
325
Test that the function returns True when the image is AQ managed
325
326
"""
326
- mock_message = NonCallableMock ()
327
327
openstack_api .get_image .return_value .metadata = {"AQ_OS" : "True" }
328
328
329
- assert is_aq_managed_image (mock_message ) == image_meta . from_dict . return_value
330
- openstack_api .get_image .assert_called_once_with (vm_data . from_message . return_value )
329
+ assert is_aq_managed_image (vm_data )
330
+ openstack_api .get_image .assert_called_once_with (vm_data )
331
331
332
332
333
333
@patch ("rabbit_consumer.message_consumer.VmData" )
334
- @patch ("rabbit_consumer.message_consumer.ImageMetadata" )
335
334
@patch ("rabbit_consumer.message_consumer.openstack_api" )
336
- def test_is_aq_managed_image_missing_key (openstack_api , image_meta , vm_data ):
335
+ def test_is_aq_managed_image_missing_key (openstack_api , vm_data ):
337
336
"""
338
337
Test that the function returns False when the image is not AQ managed
339
338
"""
340
- mock_message = NonCallableMock ()
341
339
openstack_api .get_image .return_value .metadata = {}
342
340
343
- assert not is_aq_managed_image (mock_message )
344
- openstack_api .get_image .assert_called_once_with (vm_data .from_message .return_value )
345
- image_meta .from_dict .assert_not_called ()
341
+ assert not is_aq_managed_image (vm_data )
342
+ openstack_api .get_image .assert_called_once_with (vm_data )
343
+
344
+
345
+ @patch ("rabbit_consumer.message_consumer.AqMetadata" )
346
+ @patch ("rabbit_consumer.message_consumer.openstack_api" )
347
+ def test_get_aq_build_metadata (openstack_api , aq_metadata_class , vm_data ):
348
+ """
349
+ Test that the function returns the correct metadata
350
+ """
351
+ aq_metadata_obj : MagicMock = get_aq_build_metadata (vm_data )
352
+
353
+ # We should first construct from an image
354
+ assert aq_metadata_obj == aq_metadata_class .from_dict .return_value
355
+ aq_metadata_class .from_dict .assert_called_once_with (
356
+ openstack_api .get_image .return_value .metadata
357
+ )
358
+
359
+ # Then override with an object
360
+ openstack_api .get_server_metadata .assert_called_once_with (vm_data )
361
+ aq_metadata_obj .override_from_vm_meta .assert_called_once_with (
362
+ openstack_api .get_server_metadata .return_value
363
+ )
0 commit comments