Skip to content

Commit

Permalink
Adds a pytest local fixture for pulp_file
Browse files Browse the repository at this point in the history
Required PR: pulp/pulp-smash#1262

closes #9623
  • Loading branch information
bmbouter committed Dec 15, 2021
1 parent ce94c46 commit e81e707
Show file tree
Hide file tree
Showing 11 changed files with 345 additions and 66 deletions.
3 changes: 2 additions & 1 deletion .ci/ansible/smash-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"password"
],
"selinux enabled": false,
"version": "3"
"version": "3",
"aiohttp_fixtures_origin": "172.18.0.1"
},
"hosts": [
{
Expand Down
1 change: 1 addition & 0 deletions CHANGES/9623.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Adds pytest fixtures serving an aiohttp.Server to serve pulp_file fixtures to Pulp.
2 changes: 1 addition & 1 deletion MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
graft pulpcore/etc
include LICENSE
include requirements.txt
include functest_requirements.txt
include pyproject.toml
include CHANGES.rst
include COMMITMENT
include functest_requirements.txt
include unittest_requirements.txt
recursive-include pulpcore/tests/functional/api/using_plugin/artifacts *
recursive-exclude pulpcore/tests/fixtures/ *
include CODE_OF_CONDUCT.md
include CONTRIBUTING.md
include COPYRIGHT
Expand Down
1 change: 1 addition & 0 deletions functest_requirements.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
aiohttp
django
dynaconf
pulp-smash @ git+https://github.com/pulp/pulp-smash.git
Expand Down
1 change: 1 addition & 0 deletions pulpcore/tests/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from .conftest_pulp_file import * # noqa
171 changes: 171 additions & 0 deletions pulpcore/tests/conftest_pulp_file.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
import logging
import uuid

from pathlib import Path

import pytest

from pulpcore.client.pulp_file import (
ContentFilesApi,
RepositoriesFileApi,
RemotesFileApi,
)
from pulp_smash.pulp3.bindings import monitor_task
from pulp_smash.pulp3.utils import gen_repo

from pulpcore.tests.functional.api.using_plugin.utils import (
gen_file_client,
)


_logger = logging.getLogger(__name__)


@pytest.fixture(scope="session")
def file_client():
return gen_file_client()


@pytest.fixture(scope="session")
def content_file_api_client(file_client):
return ContentFilesApi(file_client)


@pytest.fixture(scope="session")
def file_repo_api_client(file_client):
return RepositoriesFileApi(file_client)


@pytest.fixture
def file_repo(file_repo_api_client):
repo = file_repo_api_client.create(gen_repo())
yield repo
task_url = file_repo_api_client.delete(repo.pulp_href).task
monitor_task(task_url)


@pytest.fixture(scope="session")
def file_remote_api_client(file_client):
return RemotesFileApi(file_client)


@pytest.fixture(scope="session")
def file_fixtures_root():
return Path(__file__).parent / "fixtures"


@pytest.fixture
def assert_no_file_content_pre_test(content_file_api_client):
# Ensure that no content is present
content_response = content_file_api_client.list(limit=1)
assert content_response.count == 0


@pytest.fixture
def file_fixture_server_ssl_client_cert_req(
ssl_ctx_req_client_auth, file_fixtures_root, gen_fixture_server
):
yield gen_fixture_server(file_fixtures_root, ssl_ctx_req_client_auth)


@pytest.fixture
def file_fixture_server_ssl(ssl_ctx, file_fixtures_root, gen_fixture_server):
yield gen_fixture_server(file_fixtures_root, ssl_ctx)


@pytest.fixture
def file_fixture_server(file_fixtures_root, gen_fixture_server):
yield gen_fixture_server(file_fixtures_root, None)


@pytest.fixture
def file_fixture_gen_remote(file_fixture_server, file_remote_api_client):
remotes = []

def _file_fixture_gen_remote(*, fixture_name, policy, **kwargs):
host = file_fixture_server.host
port = file_fixture_server.port
url = f"http://{host}:{port}/{fixture_name}/PULP_MANIFEST"
kwargs.update({"url": str(url), "policy": policy, "name": str(uuid.uuid4())})
new_remote = file_remote_api_client.create(kwargs)
remotes.append(new_remote)
return new_remote

yield _file_fixture_gen_remote

task_urls = []
for remote in remotes:
task_urls.append(file_remote_api_client.delete(remote.pulp_href).task)

for task_url in task_urls:
monitor_task(task_url)


@pytest.fixture
def file_fixture_gen_remote_ssl(
file_fixture_server_ssl, file_remote_api_client, tls_certificate_authority_cert
):
remotes = []

def _file_fixture_gen_remote(*, fixture_name, policy, **kwargs):
host = file_fixture_server_ssl.host
port = file_fixture_server_ssl.port
url = f"https://{host}:{port}/{fixture_name}/PULP_MANIFEST"
kwargs.update(
{
"url": str(url),
"policy": policy,
"name": str(uuid.uuid4()),
"ca_cert": tls_certificate_authority_cert,
}
)
new_remote = file_remote_api_client.create(kwargs)
remotes.append(new_remote)
return new_remote

yield _file_fixture_gen_remote

task_urls = []
for remote in remotes:
task_urls.append(file_remote_api_client.delete(remote.pulp_href).task)

for task_url in task_urls:
monitor_task(task_url)


@pytest.fixture
def file_fixture_gen_remote_client_cert_req(
file_fixture_server_ssl_client_cert_req,
file_remote_api_client,
tls_certificate_authority_cert,
client_tls_certificate_cert_pem,
client_tls_certificate_key_pem,
):
remotes = []

def _file_fixture_gen_remote(*, fixture_name, policy, **kwargs):
host = file_fixture_server_ssl_client_cert_req.host
port = file_fixture_server_ssl_client_cert_req.port
url = f"https://{host}:{port}/{fixture_name}/PULP_MANIFEST"
kwargs.update(
{
"url": str(url),
"policy": policy,
"name": str(uuid.uuid4()),
"ca_cert": tls_certificate_authority_cert,
"client_cert": client_tls_certificate_cert_pem,
"client_key": client_tls_certificate_key_pem,
}
)
new_remote = file_remote_api_client.create(kwargs)
remotes.append(new_remote)
return new_remote

yield _file_fixture_gen_remote

task_urls = []
for remote in remotes:
task_urls.append(file_remote_api_client.delete(remote.pulp_href).task)

for task_url in task_urls:
monitor_task(task_url)
Binary file added pulpcore/tests/fixtures/basic/1.iso
Binary file not shown.
Binary file added pulpcore/tests/fixtures/basic/2.iso
Binary file not shown.
Binary file added pulpcore/tests/fixtures/basic/3.iso
Binary file not shown.
3 changes: 3 additions & 0 deletions pulpcore/tests/fixtures/basic/PULP_MANIFEST
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
1.iso,cbd074de731a7a28fc3257769c417dc2f579ac7a9e072423305033a2bed79033,1024
2.iso,327ac83861f3e3fcaa115ddd7f91f8d796f55bb1013ea1bd1cc377e28e3ee9cf,1024
3.iso,f18ab30fc5c52fc5206d9f87ee8b5f4adcb1f09ee452920e6e2ee2ba42600651,1024
Loading

0 comments on commit e81e707

Please sign in to comment.