|
| 1 | +from __future__ import absolute_import, division, print_function |
| 2 | + |
| 3 | +import os |
| 4 | +from unittest import mock |
| 5 | + |
| 6 | +__metaclass__ = type |
| 7 | + |
| 8 | +import pytest |
| 9 | + |
| 10 | + |
| 11 | +def mock_get_registered_page(prefix): |
| 12 | + return mock.Mock(return_value=mock.Mock(get=mock.Mock(return_value={'prefix': prefix}))) |
| 13 | + |
| 14 | + |
| 15 | +@pytest.mark.parametrize( |
| 16 | + "env_prefix, controller_host, expected", |
| 17 | + [ |
| 18 | + # without CONTROLLER_OPTIONAL_API_URLPATTERN_PREFIX env variable |
| 19 | + [None, "https://localhost", "/api/v2/"], |
| 20 | + # with CONTROLLER_OPTIONAL_API_URLPATTERN_PREFIX env variable |
| 21 | + ["/api/controller/", "https://localhost", "/api/controller/v2/"], |
| 22 | + ["/api/controller", "https://localhost", "/api/controller/v2/"], |
| 23 | + ["api/controller", "https://localhost", "/api/controller/v2/"], |
| 24 | + ["/custom/path/", "https://localhost", "/custom/path/v2/"], |
| 25 | + ], |
| 26 | +) |
| 27 | +def test_controller_awxkit_get_api_v2_object(collection_import, env_prefix, controller_host, expected): |
| 28 | + controller_awxkit_class = collection_import('plugins.module_utils.awxkit').ControllerAWXKitModule |
| 29 | + controller_awxkit = controller_awxkit_class(argument_spec={}, direct_params=dict(controller_host=controller_host)) |
| 30 | + with mock.patch('plugins.module_utils.awxkit.get_registered_page', mock_get_registered_page): |
| 31 | + if env_prefix: |
| 32 | + with mock.patch.dict(os.environ, {"CONTROLLER_OPTIONAL_API_URLPATTERN_PREFIX": env_prefix}): |
| 33 | + api_v2_object = controller_awxkit.get_api_v2_object() |
| 34 | + else: |
| 35 | + api_v2_object = controller_awxkit.get_api_v2_object() |
| 36 | + assert getattr(api_v2_object, 'prefix') == expected |
0 commit comments