2022-08-08 14:24:58 +02:00
|
|
|
# Copyright (c) Ansible project
|
2022-08-05 12:28:29 +02:00
|
|
|
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
2020-06-24 21:50:36 +02:00
|
|
|
|
|
|
|
from __future__ import (absolute_import, division, print_function)
|
|
|
|
__metaclass__ = type
|
|
|
|
|
2020-03-09 10:11:07 +01:00
|
|
|
from ansible_collections.community.general.tests.unit.compat.mock import patch
|
|
|
|
from ansible.module_utils.six.moves import xmlrpc_client
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
|
|
|
|
|
|
|
|
def get_method_name(request_body):
|
|
|
|
return xmlrpc_client.loads(request_body)[1]
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
|
def mock_request(request, mocker):
|
|
|
|
responses = request.getfixturevalue('testcase')['calls']
|
|
|
|
module_name = request.module.TESTED_MODULE
|
|
|
|
|
|
|
|
def transport_request(host, handler, request_body, verbose=0):
|
|
|
|
"""Fake request"""
|
|
|
|
method_name = get_method_name(request_body)
|
|
|
|
excepted_name, response = responses.pop(0)
|
|
|
|
if method_name == excepted_name:
|
|
|
|
if isinstance(response, Exception):
|
|
|
|
raise response
|
|
|
|
else:
|
|
|
|
return response
|
|
|
|
else:
|
|
|
|
raise Exception('Expected call: %r, called with: %r' % (excepted_name, method_name))
|
|
|
|
|
|
|
|
target = '{0}.xmlrpc_client.Transport.request'.format(module_name)
|
|
|
|
mocker.patch(target, side_effect=transport_request)
|