diff options
Diffstat (limited to 'test/units/module_utils/xenserver/conftest.py')
-rw-r--r-- | test/units/module_utils/xenserver/conftest.py | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/test/units/module_utils/xenserver/conftest.py b/test/units/module_utils/xenserver/conftest.py deleted file mode 100644 index 647758a3b1..0000000000 --- a/test/units/module_utils/xenserver/conftest.py +++ /dev/null @@ -1,118 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright: (c) 2019, Bojan Vitnik <bvitnik@mainstream.rs> -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function -__metaclass__ = type - - -import sys -import importlib -import os -import json -import pytest - -from .FakeAnsibleModule import FakeAnsibleModule -from ansible.module_utils import six -from mock import MagicMock - - -@pytest.fixture -def fake_ansible_module(request): - """Returns fake AnsibleModule with fake module params.""" - if hasattr(request, 'param'): - return FakeAnsibleModule(request.param) - else: - params = { - "hostname": "somehost", - "username": "someuser", - "password": "somepwd", - "validate_certs": True, - } - - return FakeAnsibleModule(params) - - -@pytest.fixture(autouse=True) -def XenAPI(): - """Imports and returns fake XenAPI module.""" - - # Import of fake XenAPI module is wrapped by fixture so that it does not - # affect other unit tests which could potentialy also use XenAPI module. - - # First we use importlib.import_module() to import the module and assign - # it to a local symbol. - fake_xenapi = importlib.import_module('units.module_utils.xenserver.FakeXenAPI') - - # Now we populate Python module cache with imported fake module using the - # original module name (XenAPI). That way, any 'import XenAPI' statement - # will just load already imported fake module from the cache. - sys.modules['XenAPI'] = fake_xenapi - - return fake_xenapi - - -@pytest.fixture(autouse=True) -def xenserver(XenAPI): - """Imports and returns xenserver module util.""" - - # Since we are wrapping fake XenAPI module inside a fixture, all modules - # that depend on it have to be imported inside a test function. To make - # this easier to handle and remove some code repetition, we wrap the import - # of xenserver module util with a fixture. - from ansible.module_utils import xenserver - - return xenserver - - -@pytest.fixture -def mock_xenapi_failure(XenAPI, mocker): - """ - Returns mock object that raises XenAPI.Failure on any XenAPI - method call. - """ - fake_error_msg = "Fake XAPI method call error!" - - # We need to use our MagicMock based class that passes side_effect to its - # children because calls to xenapi methods can generate an arbitrary - # hierarchy of mock objects. Any such object when called should use the - # same side_effect as its parent mock object. - class MagicMockSideEffect(MagicMock): - def _get_child_mock(self, **kw): - child_mock = super(MagicMockSideEffect, self)._get_child_mock(**kw) - child_mock.side_effect = self.side_effect - return child_mock - - mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', new=MagicMockSideEffect(), create=True) - mocked_xenapi.side_effect = XenAPI.Failure(fake_error_msg) - - return mocked_xenapi, fake_error_msg - - -@pytest.fixture -def fixture_data_from_file(request): - """Loads fixture data from files.""" - if not hasattr(request, 'param'): - return {} - - fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') - fixture_data = {} - - if isinstance(request.param, six.string_types): - request.param = [request.param] - - for fixture_name in request.param: - path = os.path.join(fixture_path, fixture_name) - - with open(path) as f: - data = f.read() - - try: - data = json.loads(data) - except Exception: - pass - - fixture_data[fixture_name] = data - - return fixture_data |