debian-forge/sources/test/test_curl_source.py
Michael Vogt 79d788ac23 tests: use tmp_path fixture in test_curl_source.py
Tiny tweak to remove some boilerplate related to tmpfile handling.
The pytest `tmp_path` fixture gives us the tmpdir without having
to worry about cleanup etc (and in a slightly more concise way).
2024-04-03 15:06:07 +02:00

82 lines
2.6 KiB
Python

#!/usr/bin/python3
import contextlib
import os
import pytest
SOURCES_NAME = "org.osbuild.curl"
def test_curl_source_not_exists(tmp_path, sources_service):
desc = {
"url": "http://localhost:80/a",
}
checksum = "sha256:1111111111111111111111111111111111111111111111111111111111111111"
sources_service.cache = tmp_path
assert not sources_service.exists(checksum, desc)
def test_curl_source_exists(tmp_path, sources_service):
desc = {
"url": "http://localhost:80/a",
}
checksum = "sha256:1111111111111111111111111111111111111111111111111111111111111111"
sources_service.cache = tmp_path
(sources_service.cache / checksum).touch()
assert sources_service.exists(checksum, desc)
def test_curl_source_amend_secrets(sources_service):
desc = {
"url": "http://localhost:80/a",
"secrets": {
"name": "org.osbuild.mtls",
},
}
with contextlib.ExitStack() as cm:
os.environ["OSBUILD_SOURCES_CURL_SSL_CLIENT_KEY"] = "key"
os.environ["OSBUILD_SOURCES_CURL_SSL_CLIENT_CERT"] = "cert"
def cb():
del os.environ["OSBUILD_SOURCES_CURL_SSL_CLIENT_KEY"]
del os.environ["OSBUILD_SOURCES_CURL_SSL_CLIENT_CERT"]
cm.callback(cb)
checksum = "sha256:1111111111111111111111111111111111111111111111111111111111111111"
_, new_desc = sources_service.amend_secrets(checksum, desc)
assert new_desc["secrets"]["ssl_client_key"] == "key"
assert new_desc["secrets"]["ssl_client_cert"] == "cert"
assert new_desc["secrets"]["ssl_ca_cert"] is None
def test_curl_source_amend_secrets_fail(sources_service):
desc = {
"url": "http://localhost:80/a",
"secrets": {
"name": "org.osbuild.mtls",
},
}
checksum = "sha256:1111111111111111111111111111111111111111111111111111111111111111"
with pytest.raises(RuntimeError) as exc:
sources_service.amend_secrets(checksum, desc)
assert "mtls secrets required" in str(exc)
class FakeSubscriptionManager:
def get_secrets(self, url):
return f"secret-for-{url}"
def test_curl_source_amend_secrets_subscription_mgr(sources_service):
desc = {
"url": "http://localhost:80/a",
"secrets": {
"name": "org.osbuild.rhsm",
},
}
sources_service.subscriptions = FakeSubscriptionManager()
checksum = "sha256:1234567890123456789012345678901234567890909b14ffb032aa20fa23d9ad6"
checksum, desc = sources_service.amend_secrets(checksum, desc)
assert desc["secrets"] == "secret-for-http://localhost:80/a"