77
88__metaclass__ = type
99
10+ import re
1011import os
1112from functools import partial
1213from unittest .mock import MagicMock
@@ -374,24 +375,29 @@ def test_update_netbox_object_with_changes_check_mode_true(
374375 assert diff == on_update_diff
375376
376377
377- @pytest .mark .parametrize ("version" , ["2.9 " , "2.8" , "2.7 " ])
378+ @pytest .mark .parametrize ("version" , ["2.13 " , "2.12" , "2.11" , "2.10. 8" , "2.10 " ])
378379def test_version_check_greater_true (mock_netbox_module , nb_obj_mock , version ):
379380 mock_netbox_module .nb_object = nb_obj_mock
380- assert mock_netbox_module ._version_check_greater ("2.10" , version )
381+ assert mock_netbox_module ._version_check_greater (version , "2.9" )
382+ assert mock_netbox_module ._version_check_greater (version , "2.9.11" )
381383
382384
383- @pytest .mark .parametrize ("version" , ["2.13 " , "2.12 " , "2.11 " , "2.10 " ])
385+ @pytest .mark .parametrize ("version" , ["2.9 " , "2.8 " , "2.7.12 " , "2.7 " ])
384386def test_version_check_greater_false (mock_netbox_module , nb_obj_mock , version ):
385387 mock_netbox_module .nb_object = nb_obj_mock
386- assert not mock_netbox_module ._version_check_greater ("2.10" , version )
388+ assert not mock_netbox_module ._version_check_greater (version , "2.10" )
389+ assert not mock_netbox_module ._version_check_greater (version , "2.10.8" )
387390
388391
389- @pytest .mark .parametrize ("version" , ["2.9" , "2.8" , "2.7" ])
392+ @pytest .mark .parametrize ("version" , ["2.9" , "2.8" , "2.7.5" , "2.7 " ])
390393def test_version_check_greater_equal_to_true (mock_netbox_module , nb_obj_mock , version ):
391394 mock_netbox_module .nb_object = nb_obj_mock
392395 assert mock_netbox_module ._version_check_greater (
393396 version , "2.7" , greater_or_equal = True
394397 )
398+ assert mock_netbox_module ._version_check_greater (
399+ version , "2.6.12" , greater_or_equal = True
400+ )
395401
396402
397403@pytest .mark .parametrize ("version" , ["2.6" , "2.5" , "2.4" ])
@@ -400,3 +406,34 @@ def test_version_check_greater_equal_to_false(mock_netbox_module, nb_obj_mock, v
400406 assert not mock_netbox_module ._version_check_greater (
401407 version , "2.7" , greater_or_equal = True
402408 )
409+ assert not mock_netbox_module ._version_check_greater (
410+ version , "2.7.7" , greater_or_equal = True
411+ )
412+
413+
414+ @pytest .mark .parametrize (
415+ "raw_value,expected" ,
416+ [
417+ ("2.6" , "2.6" ),
418+ ("2.6." , "2.6" ),
419+ ("4.2-dev" , "4.2" ),
420+ ("4" , "4" ),
421+ ("4-dev" , "4" ),
422+ ("4.-dev" , "4" ),
423+ ("4.2.9-Docker-3.2.1" , "4.2.9" ),
424+ ("3.1.0-extra-info" , "3.1.0" ),
425+ ("10.20.30foobar" , "10.20.30" ),
426+ ],
427+ )
428+ def test_version_sanitize_to_true (mock_netbox_module , nb_obj_mock , raw_value , expected ):
429+ mock_netbox_module .nb_object = nb_obj_mock
430+ sanitized = mock_netbox_module ._version_sanitize (raw_value )
431+ assert sanitized == expected
432+ assert re .match (r"^\d+(\.\d+)*$" , sanitized )
433+
434+
435+ @pytest .mark .parametrize ("version" , [None , [], {}, "" , "aa-dev" , "-4" , ".4" , "dev-4" ])
436+ def test_version_sanitize_value_error (mock_netbox_module , nb_obj_mock , version ):
437+ mock_netbox_module .nb_object = nb_obj_mock
438+ with pytest .raises (ValueError ):
439+ mock_netbox_module ._version_sanitize (version )
0 commit comments