mirror of
https://github.com/ansible-collections/community.crypto.git
synced 2026-05-07 13:53:06 +00:00
Code refactoring (#889)
* Add __all__ to all module and plugin utils. * Convert quite a few positional args to keyword args. * Avoid Python 3.8+ syntax.
This commit is contained in:
@@ -53,7 +53,7 @@ def test_eckeyparse_cryptography(
|
||||
fn = tmpdir / "test.pem"
|
||||
fn.write(pem)
|
||||
module = MagicMock()
|
||||
backend = CryptographyBackend(module)
|
||||
backend = CryptographyBackend(module=module)
|
||||
key = backend.parse_key(key_file=str(fn))
|
||||
key.pop("key_obj")
|
||||
assert key == result
|
||||
@@ -69,7 +69,7 @@ def test_csridentifiers_cryptography(
|
||||
fn = tmpdir / "test.csr"
|
||||
fn.write(csr)
|
||||
module = MagicMock()
|
||||
backend = CryptographyBackend(module)
|
||||
backend = CryptographyBackend(module=module)
|
||||
identifiers = backend.get_csr_identifiers(csr_filename=str(fn))
|
||||
assert identifiers == result
|
||||
identifiers = backend.get_csr_identifiers(csr_content=csr)
|
||||
@@ -84,7 +84,7 @@ def test_certdays_cryptography(
|
||||
fn = tmpdir / "test-cert.pem"
|
||||
fn.write(TEST_CERT)
|
||||
module = MagicMock()
|
||||
backend = CryptographyBackend(module)
|
||||
backend = CryptographyBackend(module=module)
|
||||
days = backend.get_cert_days(cert_filename=str(fn), now=now)
|
||||
assert days == expected_days
|
||||
days = backend.get_cert_days(cert_content=TEST_CERT, now=now)
|
||||
@@ -103,7 +103,7 @@ def test_get_cert_information(
|
||||
fn = tmpdir / "test-cert.pem"
|
||||
fn.write(cert_content)
|
||||
module = MagicMock()
|
||||
backend = CryptographyBackend(module)
|
||||
backend = CryptographyBackend(module=module)
|
||||
|
||||
if CRYPTOGRAPHY_TIMEZONE:
|
||||
expected_cert_info = expected_cert_info._replace(
|
||||
@@ -126,7 +126,7 @@ def test_get_cert_information(
|
||||
def test_now(timezone: datetime.timedelta) -> None:
|
||||
with freeze_time("2024-02-03 04:05:06", tz_offset=timezone):
|
||||
module = MagicMock()
|
||||
backend = CryptographyBackend(module)
|
||||
backend = CryptographyBackend(module=module)
|
||||
now = backend.get_now()
|
||||
if CRYPTOGRAPHY_TIMEZONE:
|
||||
assert now.tzinfo is not None
|
||||
@@ -142,7 +142,7 @@ def test_parse_acme_timestamp(
|
||||
) -> None:
|
||||
with freeze_time("2024-02-03 04:05:06 +00:00", tz_offset=timezone):
|
||||
module = MagicMock()
|
||||
backend = CryptographyBackend(module)
|
||||
backend = CryptographyBackend(module=module)
|
||||
ts_expected = backend.get_utc_datetime(**expected)
|
||||
timestamp = backend.parse_acme_timestamp(input)
|
||||
assert ts_expected == timestamp
|
||||
@@ -160,9 +160,11 @@ def test_interpolate_timestamp(
|
||||
) -> None:
|
||||
with freeze_time("2024-02-03 04:05:06", tz_offset=timezone):
|
||||
module = MagicMock()
|
||||
backend = CryptographyBackend(module)
|
||||
backend = CryptographyBackend(module=module)
|
||||
ts_start = backend.get_utc_datetime(**start)
|
||||
ts_end = backend.get_utc_datetime(**end)
|
||||
ts_expected = backend.get_utc_datetime(**expected)
|
||||
timestamp = backend.interpolate_timestamp(ts_start, ts_end, percentage)
|
||||
timestamp = backend.interpolate_timestamp(
|
||||
ts_start, ts_end, percentage=percentage
|
||||
)
|
||||
assert ts_expected == timestamp
|
||||
|
||||
@@ -61,7 +61,7 @@ def test_eckeyparse_openssl(
|
||||
fn.write(pem)
|
||||
module = MagicMock()
|
||||
module.run_command = MagicMock(return_value=(0, openssl_output, 0))
|
||||
backend = OpenSSLCLIBackend(module, openssl_binary="openssl")
|
||||
backend = OpenSSLCLIBackend(module=module, openssl_binary="openssl")
|
||||
key = backend.parse_key(key_file=str(fn))
|
||||
key.pop("key_file")
|
||||
assert key == result
|
||||
@@ -75,15 +75,15 @@ def test_csridentifiers_openssl(
|
||||
fn.write(csr)
|
||||
module = MagicMock()
|
||||
module.run_command = MagicMock(return_value=(0, openssl_output, 0))
|
||||
backend = OpenSSLCLIBackend(module, openssl_binary="openssl")
|
||||
identifiers = backend.get_csr_identifiers(str(fn))
|
||||
backend = OpenSSLCLIBackend(module=module, openssl_binary="openssl")
|
||||
identifiers = backend.get_csr_identifiers(csr_filename=str(fn))
|
||||
assert identifiers == result
|
||||
|
||||
|
||||
@pytest.mark.parametrize("ip, result", TEST_IPS)
|
||||
def test_normalize_ip(ip: str, result: str) -> None:
|
||||
module = MagicMock()
|
||||
backend = OpenSSLCLIBackend(module, openssl_binary="openssl")
|
||||
backend = OpenSSLCLIBackend(module=module, openssl_binary="openssl")
|
||||
assert backend._normalize_ip(ip) == result
|
||||
|
||||
|
||||
@@ -96,7 +96,7 @@ def test_certdays_cryptography(
|
||||
fn.write(TEST_CERT)
|
||||
module = MagicMock()
|
||||
module.run_command = MagicMock(return_value=(0, TEST_CERT_OPENSSL_OUTPUT, 0))
|
||||
backend = OpenSSLCLIBackend(module, openssl_binary="openssl")
|
||||
backend = OpenSSLCLIBackend(module=module, openssl_binary="openssl")
|
||||
days = backend.get_cert_days(cert_filename=str(fn), now=now)
|
||||
assert days == expected_days
|
||||
days = backend.get_cert_days(cert_content=TEST_CERT, now=now)
|
||||
@@ -116,7 +116,7 @@ def test_get_cert_information(
|
||||
fn.write(cert_content)
|
||||
module = MagicMock()
|
||||
module.run_command = MagicMock(return_value=(0, openssl_output, 0))
|
||||
backend = OpenSSLCLIBackend(module, openssl_binary="openssl")
|
||||
backend = OpenSSLCLIBackend(module=module, openssl_binary="openssl")
|
||||
|
||||
expected_cert_info = expected_cert_info._replace(
|
||||
not_valid_after=ensure_utc_timezone(expected_cert_info.not_valid_after),
|
||||
@@ -136,7 +136,7 @@ def test_get_cert_information(
|
||||
def test_now(timezone: datetime.timedelta) -> None:
|
||||
with freeze_time("2024-02-03 04:05:06", tz_offset=timezone):
|
||||
module = MagicMock()
|
||||
backend = OpenSSLCLIBackend(module, openssl_binary="openssl")
|
||||
backend = OpenSSLCLIBackend(module=module, openssl_binary="openssl")
|
||||
now = backend.get_now()
|
||||
assert now.tzinfo is not None
|
||||
assert now == datetime.datetime(2024, 2, 3, 4, 5, 6, tzinfo=UTC)
|
||||
@@ -148,7 +148,7 @@ def test_parse_acme_timestamp(
|
||||
) -> None:
|
||||
with freeze_time("2024-02-03 04:05:06", tz_offset=timezone):
|
||||
module = MagicMock()
|
||||
backend = OpenSSLCLIBackend(module, openssl_binary="openssl")
|
||||
backend = OpenSSLCLIBackend(module=module, openssl_binary="openssl")
|
||||
ts_expected = backend.get_utc_datetime(**expected)
|
||||
timestamp = backend.parse_acme_timestamp(input)
|
||||
assert ts_expected == timestamp
|
||||
@@ -166,9 +166,11 @@ def test_interpolate_timestamp(
|
||||
) -> None:
|
||||
with freeze_time("2024-02-03 04:05:06", tz_offset=timezone):
|
||||
module = MagicMock()
|
||||
backend = OpenSSLCLIBackend(module, openssl_binary="openssl")
|
||||
backend = OpenSSLCLIBackend(module=module, openssl_binary="openssl")
|
||||
ts_start = backend.get_utc_datetime(**start)
|
||||
ts_end = backend.get_utc_datetime(**end)
|
||||
ts_expected = backend.get_utc_datetime(**expected)
|
||||
timestamp = backend.interpolate_timestamp(ts_start, ts_end, percentage)
|
||||
timestamp = backend.interpolate_timestamp(
|
||||
ts_start, ts_end, percentage=percentage
|
||||
)
|
||||
assert ts_expected == timestamp
|
||||
|
||||
@@ -23,8 +23,8 @@ from ansible_collections.community.crypto.plugins.module_utils._acme.errors impo
|
||||
|
||||
|
||||
def test_combine_identifier() -> None:
|
||||
assert combine_identifier("", "") == ":"
|
||||
assert combine_identifier("a", "b") == "a:b"
|
||||
assert combine_identifier(identifier_type="", identifier="") == ":"
|
||||
assert combine_identifier(identifier_type="a", identifier="b") == "a:b"
|
||||
|
||||
|
||||
def test_split_identifier() -> None:
|
||||
@@ -45,7 +45,7 @@ def test_challenge_from_to_json() -> None:
|
||||
"status": "valid",
|
||||
}
|
||||
client.version = 2
|
||||
challenge = Challenge.from_json(client, data)
|
||||
challenge = Challenge.from_json(client=client, data=data)
|
||||
assert challenge.data == data
|
||||
assert challenge.type == "type"
|
||||
assert challenge.url == "xxx"
|
||||
@@ -58,7 +58,7 @@ def test_challenge_from_to_json() -> None:
|
||||
"status": "valid",
|
||||
"token": "foo",
|
||||
}
|
||||
challenge = Challenge.from_json(None, data, url="xxx") # type: ignore
|
||||
challenge = Challenge.from_json(client=None, data=data, url="xxx") # type: ignore
|
||||
assert challenge.data == data
|
||||
assert challenge.type == "type"
|
||||
assert challenge.url == "xxx"
|
||||
@@ -81,7 +81,7 @@ def test_authorization_from_to_json() -> None:
|
||||
"value": "example.com",
|
||||
},
|
||||
}
|
||||
authz = Authorization.from_json(client, data, "xxx")
|
||||
authz = Authorization.from_json(client=client, data=data, url="xxx")
|
||||
assert authz.url == "xxx"
|
||||
assert authz.status == "valid"
|
||||
assert authz.identifier == "example.com"
|
||||
@@ -112,7 +112,7 @@ def test_authorization_from_to_json() -> None:
|
||||
},
|
||||
"wildcard": True,
|
||||
}
|
||||
authz = Authorization.from_json(client, data, "xxx")
|
||||
authz = Authorization.from_json(client=client, data=data, url="xxx")
|
||||
assert authz.url == "xxx"
|
||||
assert authz.status == "valid"
|
||||
assert authz.identifier == "*.example.com"
|
||||
@@ -146,7 +146,9 @@ def test_authorization_create_error() -> None:
|
||||
client.version = 2
|
||||
client.directory.directory = {}
|
||||
with pytest.raises(ACMEProtocolException) as exc:
|
||||
Authorization.create(client, "dns", "example.com")
|
||||
Authorization.create(
|
||||
client=client, identifier_type="dns", identifier="example.com"
|
||||
)
|
||||
|
||||
assert exc.value.msg == "ACME endpoint does not support pre-authorization."
|
||||
|
||||
@@ -197,9 +199,9 @@ def test_wait_for_validation_error() -> None:
|
||||
},
|
||||
}
|
||||
client.get_request = MagicMock(return_value=(data, {}))
|
||||
authz = Authorization.from_json(client, data, "xxx")
|
||||
authz = Authorization.from_json(client=client, data=data, url="xxx")
|
||||
with pytest.raises(ACMEProtocolException) as exc:
|
||||
authz.wait_for_validation(client, "dns")
|
||||
authz.wait_for_validation(client=client)
|
||||
|
||||
assert exc.value.msg == (
|
||||
'Failed to validate challenge for dns:example.com: Status is "invalid". Challenge dns-01: Error dns-failed Subproblems:\n'
|
||||
|
||||
@@ -94,7 +94,7 @@ TEST_FORMAT_ERROR_PROBLEM: list[tuple[dict[str, t.Any], str, str]] = [
|
||||
def test_format_error_problem(
|
||||
problem: dict[str, t.Any], subproblem_prefix: str, result: str
|
||||
) -> None:
|
||||
res = format_error_problem(problem, subproblem_prefix)
|
||||
res = format_error_problem(problem, subproblem_prefix=subproblem_prefix)
|
||||
assert res == result
|
||||
|
||||
|
||||
@@ -358,7 +358,7 @@ def test_acme_protocol_exception(
|
||||
module = MagicMock()
|
||||
module.from_json = from_json
|
||||
with pytest.raises(ACMEProtocolException) as exc:
|
||||
raise ACMEProtocolException(module, **input) # type: ignore
|
||||
raise ACMEProtocolException(module=module, **input) # type: ignore
|
||||
|
||||
print(exc.value.msg)
|
||||
print(exc.value.module_fail_args)
|
||||
|
||||
@@ -27,5 +27,5 @@ def test_read_file(tmpdir) -> None:
|
||||
def test_write_file(tmpdir) -> None:
|
||||
fn = tmpdir / "test.txt"
|
||||
module = MagicMock()
|
||||
write_file(module, str(fn), TEST_TEXT.encode("utf-8"))
|
||||
write_file(module=module, dest=str(fn), content=TEST_TEXT.encode("utf-8"))
|
||||
assert fn.read() == TEST_TEXT
|
||||
|
||||
@@ -24,7 +24,7 @@ def test_order_from_json() -> None:
|
||||
"authorizations": [],
|
||||
}
|
||||
client.version = 2
|
||||
order = Order.from_json(client, data, "xxx")
|
||||
order = Order.from_json(client=client, data=data, url="xxx")
|
||||
assert order.data == data
|
||||
assert order.url == "xxx"
|
||||
assert order.status == "valid"
|
||||
@@ -44,11 +44,11 @@ def test_wait_for_finalization_error() -> None:
|
||||
"identifiers": [],
|
||||
"authorizations": [],
|
||||
}
|
||||
order = Order.from_json(client, data, "xxx")
|
||||
order = Order.from_json(client=client, data=data, url="xxx")
|
||||
|
||||
client.get_request = MagicMock(return_value=(data, {}))
|
||||
with pytest.raises(ACMEProtocolException) as exc:
|
||||
order.wait_for_finalization(client)
|
||||
order.wait_for_finalization(client=client)
|
||||
|
||||
assert exc.value.msg.startswith(
|
||||
'Failed to wait for order to complete; got status "invalid". The JSON result: '
|
||||
|
||||
@@ -103,7 +103,8 @@ def test_nopad_b64(value: str, result: str) -> None:
|
||||
def test_pem_to_der(pem: str, der: bytes, tmpdir):
|
||||
fn = tmpdir / "test.pem"
|
||||
fn.write(pem)
|
||||
assert pem_to_der(str(fn)) == der
|
||||
assert pem_to_der(pem_filename=str(fn)) == der
|
||||
assert pem_to_der(pem_content=pem) == der
|
||||
|
||||
|
||||
@pytest.mark.parametrize("value, expected_result", TEST_LINKS_HEADER)
|
||||
@@ -115,7 +116,7 @@ def test_process_links(
|
||||
def callback(url, rel):
|
||||
data.append((url, rel))
|
||||
|
||||
process_links(value, callback)
|
||||
process_links(info=value, callback=callback)
|
||||
|
||||
assert expected_result == data
|
||||
|
||||
|
||||
Reference in New Issue
Block a user