diff --git a/tests/conftest.py b/tests/conftest.py index 656632c90..392d07914 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,14 +1,16 @@ +import os import uuid +import yaml import apypie import paramiko import py.path import pytest +import requests import testinfra -import yaml -import os from jinja2 import Environment, FileSystemLoader, select_autoescape +from requests.adapters import HTTPAdapter SSH_CONFIG='./.tmp/ssh-config' @@ -220,3 +222,27 @@ def pytest_collection_modifyitems(config, items): for item in items: if "iop" in item.keywords: item.add_marker(skip_iop) + + +class ResolveAdapter(HTTPAdapter): + def __init__(self, target_ip, *args, **kwargs): + self.target_ip = target_ip + super().__init__(*args, **kwargs) + + def get_connection_with_tls_context(self, request, verify, proxies=None, cert=None): + conn = super().get_connection_with_tls_context(request, verify, proxies, cert) + + # Override the host to point to your target IP + # This forces the socket to open to target_ip instead of the URL's domain + conn.host = self.target_ip + + return conn + + +@pytest.fixture(scope="module") +def local_request(ssh_config, server_fqdn): + session = requests.Session() + adapter = ResolveAdapter(target_ip=ssh_config["hostname"]) + session.mount(f"http://{server_fqdn}", adapter) + session.mount(f"https://{server_fqdn}", adapter) + return session diff --git a/tests/foreman_api_test.py b/tests/foreman_api_test.py index 136c50cc1..631e8650b 100644 --- a/tests/foreman_api_test.py +++ b/tests/foreman_api_test.py @@ -1,34 +1,27 @@ -import urllib.parse - -import requests - - -def _repo_url(repo, ssh_config): - return urllib.parse.urlunparse(urllib.parse.urlparse(repo['full_path'])._replace(netloc=ssh_config['hostname'])) - - def test_foreman_organization(organization): assert organization + def test_foreman_product(product): assert product -def test_foreman_yum_repository(yum_repository, foremanapi, ssh_config): + +def test_foreman_yum_repository(yum_repository, foremanapi, local_request): assert yum_repository foremanapi.resource_action('repositories', 'sync', {'id': yum_repository['id']}) - repo_url = _repo_url(yum_repository, ssh_config) - assert requests.get(f'{repo_url}/repodata/repomd.xml', verify=False) - assert requests.get(f'{repo_url}/Packages/b/bear-4.1-1.noarch.rpm', verify=False) + repo_url = yum_repository['full_path'] + assert local_request.get(f'{repo_url}/repodata/repomd.xml', verify=False) + assert local_request.get(f'{repo_url}/Packages/b/bear-4.1-1.noarch.rpm', verify=False) -def test_foreman_file_repository(file_repository, foremanapi, ssh_config): +def test_foreman_file_repository(file_repository, foremanapi, local_request): assert file_repository foremanapi.resource_action('repositories', 'sync', {'id': file_repository['id']}) - repo_url = _repo_url(file_repository, ssh_config) - assert requests.get(f'{repo_url}/1.iso', verify=False) + repo_url = file_repository['full_path'] + assert local_request.get(f'{repo_url}/1.iso', verify=False) -def test_foreman_container_repository(container_repository, foremanapi, ssh_config): +def test_foreman_container_repository(container_repository, foremanapi): assert container_repository foremanapi.resource_action('repositories', 'sync', {'id': container_repository['id']})