mirror of
https://github.com/ansible-collections/community.crypto.git
synced 2026-03-26 21:33:25 +00:00
Work on issues found by pylint (#896)
* Look at possibly-used-before-assignment. * Use latest beta releases of ansible-core 2.19 for mypy and pylint. * Look at unsupported-*. * Look at unknown-option-value. * Look at redefined-builtin. * Look at superfluous-parens. * Look at unspecified-encoding. * Adjust to new cryptography version and to ansible-core 2.17's pylint. * Look at super-with-arguments. * Look at no-else-*. * Look at try-except-raise. * Look at inconsistent-return-statements. * Look at redefined-outer-name. * Look at redefined-argument-from-local. * Look at attribute-defined-outside-init. * Look at unused-variable. * Look at protected-access. * Look at raise-missing-from. * Look at arguments-differ. * Look at useless-suppression and use-symbolic-message-instead. * Look at consider-using-dict-items. * Look at consider-using-in. * Look at consider-using-set-comprehension. * Look at consider-using-with. * Look at use-dict-literal.
This commit is contained in:
@@ -23,6 +23,7 @@ plugins/modules/acme_certificate_revoke.py pylint:unpacking-non-sequence
|
||||
plugins/modules/acme_inspect.py pylint:unpacking-non-sequence
|
||||
plugins/modules/ecs_certificate.py no-assert
|
||||
plugins/modules/ecs_domain.py pep8:E704
|
||||
plugins/modules/get_certificate.py pylint:unknown-option-value
|
||||
plugins/modules/luks_device.py no-assert
|
||||
plugins/modules/openssl_pkcs12.py no-assert
|
||||
tests/ee/roles/smoke/library/smoke_ipaddress.py shebang
|
||||
|
||||
@@ -139,47 +139,61 @@ TEST_PARSE_ACME_TIMESTAMP: list[tuple[datetime.timedelta, str, dict[str, int]]]
|
||||
[
|
||||
(
|
||||
"2024-01-01T00:11:22Z",
|
||||
dict(year=2024, month=1, day=1, hour=0, minute=11, second=22),
|
||||
{
|
||||
"year": 2024,
|
||||
"month": 1,
|
||||
"day": 1,
|
||||
"hour": 0,
|
||||
"minute": 11,
|
||||
"second": 22,
|
||||
},
|
||||
),
|
||||
(
|
||||
"2024-01-01T00:11:22.123Z",
|
||||
dict(
|
||||
year=2024,
|
||||
month=1,
|
||||
day=1,
|
||||
hour=0,
|
||||
minute=11,
|
||||
second=22,
|
||||
microsecond=123000,
|
||||
),
|
||||
{
|
||||
"year": 2024,
|
||||
"month": 1,
|
||||
"day": 1,
|
||||
"hour": 0,
|
||||
"minute": 11,
|
||||
"second": 22,
|
||||
"microsecond": 123000,
|
||||
},
|
||||
),
|
||||
(
|
||||
"2024-04-17T06:54:13.333333334Z",
|
||||
dict(
|
||||
year=2024,
|
||||
month=4,
|
||||
day=17,
|
||||
hour=6,
|
||||
minute=54,
|
||||
second=13,
|
||||
microsecond=333333,
|
||||
),
|
||||
{
|
||||
"year": 2024,
|
||||
"month": 4,
|
||||
"day": 17,
|
||||
"hour": 6,
|
||||
"minute": 54,
|
||||
"second": 13,
|
||||
"microsecond": 333333,
|
||||
},
|
||||
),
|
||||
(
|
||||
"2024-01-01T00:11:22+0100",
|
||||
dict(year=2023, month=12, day=31, hour=23, minute=11, second=22),
|
||||
{
|
||||
"year": 2023,
|
||||
"month": 12,
|
||||
"day": 31,
|
||||
"hour": 23,
|
||||
"minute": 11,
|
||||
"second": 22,
|
||||
},
|
||||
),
|
||||
(
|
||||
"2024-01-01T00:11:22.123+0100",
|
||||
dict(
|
||||
year=2023,
|
||||
month=12,
|
||||
day=31,
|
||||
hour=23,
|
||||
minute=11,
|
||||
second=22,
|
||||
microsecond=123000,
|
||||
),
|
||||
{
|
||||
"year": 2023,
|
||||
"month": 12,
|
||||
"day": 31,
|
||||
"hour": 23,
|
||||
"minute": 11,
|
||||
"second": 22,
|
||||
"microsecond": 123000,
|
||||
},
|
||||
),
|
||||
],
|
||||
)
|
||||
@@ -192,22 +206,22 @@ TEST_INTERPOLATE_TIMESTAMP: list[
|
||||
TIMEZONES,
|
||||
[
|
||||
(
|
||||
dict(year=2024, month=1, day=1, hour=0, minute=0, second=0),
|
||||
dict(year=2024, month=1, day=1, hour=1, minute=0, second=0),
|
||||
{"year": 2024, "month": 1, "day": 1, "hour": 0, "minute": 0, "second": 0},
|
||||
{"year": 2024, "month": 1, "day": 1, "hour": 1, "minute": 0, "second": 0},
|
||||
0.0,
|
||||
dict(year=2024, month=1, day=1, hour=0, minute=0, second=0),
|
||||
{"year": 2024, "month": 1, "day": 1, "hour": 0, "minute": 0, "second": 0},
|
||||
),
|
||||
(
|
||||
dict(year=2024, month=1, day=1, hour=0, minute=0, second=0),
|
||||
dict(year=2024, month=1, day=1, hour=1, minute=0, second=0),
|
||||
{"year": 2024, "month": 1, "day": 1, "hour": 0, "minute": 0, "second": 0},
|
||||
{"year": 2024, "month": 1, "day": 1, "hour": 1, "minute": 0, "second": 0},
|
||||
0.5,
|
||||
dict(year=2024, month=1, day=1, hour=0, minute=30, second=0),
|
||||
{"year": 2024, "month": 1, "day": 1, "hour": 0, "minute": 30, "second": 0},
|
||||
),
|
||||
(
|
||||
dict(year=2024, month=1, day=1, hour=0, minute=0, second=0),
|
||||
dict(year=2024, month=1, day=1, hour=1, minute=0, second=0),
|
||||
{"year": 2024, "month": 1, "day": 1, "hour": 0, "minute": 0, "second": 0},
|
||||
{"year": 2024, "month": 1, "day": 1, "hour": 1, "minute": 0, "second": 0},
|
||||
1.0,
|
||||
dict(year=2024, month=1, day=1, hour=1, minute=0, second=0),
|
||||
{"year": 2024, "month": 1, "day": 1, "hour": 1, "minute": 0, "second": 0},
|
||||
),
|
||||
],
|
||||
)
|
||||
@@ -216,6 +230,7 @@ TEST_INTERPOLATE_TIMESTAMP: list[
|
||||
class FakeBackend(CryptoBackend):
|
||||
def parse_key(
|
||||
self,
|
||||
*,
|
||||
key_file: str | os.PathLike | None = None,
|
||||
key_content: str | None = None,
|
||||
passphrase=None,
|
||||
@@ -223,15 +238,16 @@ class FakeBackend(CryptoBackend):
|
||||
raise BackendException("Not implemented in fake backend")
|
||||
|
||||
def sign(
|
||||
self, payload64: str, protected64: str, key_data: dict[str, t.Any] | None
|
||||
self, *, payload64: str, protected64: str, key_data: dict[str, t.Any] | None
|
||||
) -> t.NoReturn:
|
||||
raise BackendException("Not implemented in fake backend")
|
||||
|
||||
def create_mac_key(self, alg: str, key: str) -> t.NoReturn:
|
||||
def create_mac_key(self, *, alg: str, key: str) -> t.NoReturn:
|
||||
raise BackendException("Not implemented in fake backend")
|
||||
|
||||
def get_ordered_csr_identifiers(
|
||||
self,
|
||||
*,
|
||||
csr_filename: str | os.PathLike | None = None,
|
||||
csr_content: str | bytes | None = None,
|
||||
) -> t.NoReturn:
|
||||
@@ -239,6 +255,7 @@ class FakeBackend(CryptoBackend):
|
||||
|
||||
def get_csr_identifiers(
|
||||
self,
|
||||
*,
|
||||
csr_filename: str | os.PathLike | None = None,
|
||||
csr_content: str | bytes | None = None,
|
||||
) -> t.NoReturn:
|
||||
@@ -246,17 +263,19 @@ class FakeBackend(CryptoBackend):
|
||||
|
||||
def get_cert_days(
|
||||
self,
|
||||
*,
|
||||
cert_filename: str | os.PathLike | None = None,
|
||||
cert_content: str | bytes | None = None,
|
||||
now: datetime.datetime | None = None,
|
||||
) -> t.NoReturn:
|
||||
raise BackendException("Not implemented in fake backend")
|
||||
|
||||
def create_chain_matcher(self, criterium: Criterium) -> t.NoReturn:
|
||||
def create_chain_matcher(self, *, criterium: Criterium) -> t.NoReturn:
|
||||
raise BackendException("Not implemented in fake backend")
|
||||
|
||||
def get_cert_information(
|
||||
self,
|
||||
*,
|
||||
cert_filename: str | os.PathLike | None = None,
|
||||
cert_content: str | bytes | None = None,
|
||||
) -> t.NoReturn:
|
||||
|
||||
@@ -136,15 +136,15 @@ def test_now(timezone: datetime.timedelta) -> None:
|
||||
assert now == datetime.datetime(2024, 2, 3, 4, 5, 6)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("timezone, input, expected", TEST_PARSE_ACME_TIMESTAMP)
|
||||
@pytest.mark.parametrize("timezone, timestamp_str, expected", TEST_PARSE_ACME_TIMESTAMP)
|
||||
def test_parse_acme_timestamp(
|
||||
timezone: datetime.timedelta, input: str, expected: dict[str, int]
|
||||
timezone: datetime.timedelta, timestamp_str: str, expected: dict[str, int]
|
||||
) -> None:
|
||||
with freeze_time("2024-02-03 04:05:06 +00:00", tz_offset=timezone):
|
||||
module = MagicMock()
|
||||
backend = CryptographyBackend(module=module)
|
||||
ts_expected = backend.get_utc_datetime(**expected)
|
||||
timestamp = backend.parse_acme_timestamp(input)
|
||||
timestamp = backend.parse_acme_timestamp(timestamp_str)
|
||||
assert ts_expected == timestamp
|
||||
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@ def test_csridentifiers_openssl(
|
||||
def test_normalize_ip(ip: str, result: str) -> None:
|
||||
module = MagicMock()
|
||||
backend = OpenSSLCLIBackend(module=module, openssl_binary="openssl")
|
||||
assert backend._normalize_ip(ip) == result
|
||||
assert backend._normalize_ip(ip) == result # pylint: disable=protected-access
|
||||
|
||||
|
||||
@pytest.mark.parametrize("timezone, now, expected_days", TEST_CERT_DAYS)
|
||||
@@ -142,15 +142,15 @@ def test_now(timezone: datetime.timedelta) -> None:
|
||||
assert now == datetime.datetime(2024, 2, 3, 4, 5, 6, tzinfo=UTC)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("timezone, input, expected", TEST_PARSE_ACME_TIMESTAMP)
|
||||
@pytest.mark.parametrize("timezone, timestamp_str, expected", TEST_PARSE_ACME_TIMESTAMP)
|
||||
def test_parse_acme_timestamp(
|
||||
timezone: datetime.timedelta, input: str, expected: dict[str, int]
|
||||
timezone: datetime.timedelta, timestamp_str: str, expected: dict[str, int]
|
||||
) -> None:
|
||||
with freeze_time("2024-02-03 04:05:06", tz_offset=timezone):
|
||||
module = MagicMock()
|
||||
backend = OpenSSLCLIBackend(module=module, openssl_binary="openssl")
|
||||
ts_expected = backend.get_utc_datetime(**expected)
|
||||
timestamp = backend.parse_acme_timestamp(input)
|
||||
timestamp = backend.parse_acme_timestamp(timestamp_str)
|
||||
assert ts_expected == timestamp
|
||||
|
||||
|
||||
|
||||
@@ -193,7 +193,7 @@ TEST_ACME_PROTOCOL_EXCEPTION: list[
|
||||
},
|
||||
"response": create_regular_response("xxx"),
|
||||
},
|
||||
lambda content: dict(foo="bar"),
|
||||
lambda content: {"foo": "bar"},
|
||||
"ACME request failed for https://ca.example.com/foo with HTTP status 201 Created. The JSON error result: {'foo': 'bar'}",
|
||||
{
|
||||
"http_url": "https://ca.example.com/foo",
|
||||
@@ -224,7 +224,7 @@ TEST_ACME_PROTOCOL_EXCEPTION: list[
|
||||
},
|
||||
"response": create_error_response(),
|
||||
},
|
||||
lambda content: dict(foo="bar"),
|
||||
lambda content: {"foo": "bar"},
|
||||
"ACME request failed for https://ca.example.com/foo with HTTP status 201 Created. The JSON error result: {'foo': 'bar'}",
|
||||
{
|
||||
"http_url": "https://ca.example.com/foo",
|
||||
@@ -345,9 +345,11 @@ TEST_ACME_PROTOCOL_EXCEPTION: list[
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.parametrize("input, from_json, msg, args", TEST_ACME_PROTOCOL_EXCEPTION)
|
||||
@pytest.mark.parametrize(
|
||||
"parameters, from_json, msg, args", TEST_ACME_PROTOCOL_EXCEPTION
|
||||
)
|
||||
def test_acme_protocol_exception(
|
||||
input: dict[str, t.Any],
|
||||
parameters: dict[str, t.Any],
|
||||
from_json: t.Callable[[t.Any], t.NoReturn] | None,
|
||||
msg: str,
|
||||
args: dict[str, t.Any],
|
||||
@@ -358,7 +360,7 @@ def test_acme_protocol_exception(
|
||||
module = MagicMock()
|
||||
module.from_json = from_json
|
||||
with pytest.raises(ACMEProtocolException) as exc:
|
||||
raise ACMEProtocolException(module=module, **input) # type: ignore
|
||||
raise ACMEProtocolException(module=module, **parameters) # type: ignore
|
||||
|
||||
print(exc.value.msg)
|
||||
print(exc.value.module_fail_args)
|
||||
|
||||
@@ -94,39 +94,51 @@ TEST_EPOCH_SECONDS: list[tuple[datetime.timedelta, float, dict[str, int]]] = (
|
||||
[
|
||||
(
|
||||
0,
|
||||
dict(
|
||||
year=1970, day=1, month=1, hour=0, minute=0, second=0, microsecond=0
|
||||
),
|
||||
{
|
||||
"year": 1970,
|
||||
"month": 1,
|
||||
"day": 1,
|
||||
"hour": 0,
|
||||
"minute": 0,
|
||||
"second": 0,
|
||||
"microsecond": 0,
|
||||
},
|
||||
),
|
||||
(
|
||||
1e-6,
|
||||
dict(
|
||||
year=1970, day=1, month=1, hour=0, minute=0, second=0, microsecond=1
|
||||
),
|
||||
{
|
||||
"year": 1970,
|
||||
"month": 1,
|
||||
"day": 1,
|
||||
"hour": 0,
|
||||
"minute": 0,
|
||||
"second": 0,
|
||||
"microsecond": 1,
|
||||
},
|
||||
),
|
||||
(
|
||||
1e-3,
|
||||
dict(
|
||||
year=1970,
|
||||
day=1,
|
||||
month=1,
|
||||
hour=0,
|
||||
minute=0,
|
||||
second=0,
|
||||
microsecond=1000,
|
||||
),
|
||||
{
|
||||
"year": 1970,
|
||||
"month": 1,
|
||||
"day": 1,
|
||||
"hour": 0,
|
||||
"minute": 0,
|
||||
"second": 0,
|
||||
"microsecond": 1000,
|
||||
},
|
||||
),
|
||||
(
|
||||
3691.2,
|
||||
dict(
|
||||
year=1970,
|
||||
day=1,
|
||||
month=1,
|
||||
hour=1,
|
||||
minute=1,
|
||||
second=31,
|
||||
microsecond=200000,
|
||||
),
|
||||
{
|
||||
"year": 1970,
|
||||
"month": 1,
|
||||
"day": 1,
|
||||
"hour": 1,
|
||||
"minute": 1,
|
||||
"second": 31,
|
||||
"microsecond": 200000,
|
||||
},
|
||||
),
|
||||
],
|
||||
)
|
||||
@@ -283,25 +295,29 @@ TEST_GET_RELATIVE_TIME_OPTION: list[
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("timezone, input, expected", TEST_REMOVE_TIMEZONE)
|
||||
@pytest.mark.parametrize("timezone, input_timestamp, expected", TEST_REMOVE_TIMEZONE)
|
||||
def test_remove_timezone(
|
||||
timezone: datetime.timedelta, input: datetime.datetime, expected: datetime.datetime
|
||||
timezone: datetime.timedelta,
|
||||
input_timestamp: datetime.datetime,
|
||||
expected: datetime.datetime,
|
||||
) -> None:
|
||||
with freeze_time("2024-02-03 04:05:06", tz_offset=timezone):
|
||||
output_1 = remove_timezone(input)
|
||||
output_1 = remove_timezone(input_timestamp)
|
||||
assert expected == output_1
|
||||
output_2 = add_or_remove_timezone(input, with_timezone=False)
|
||||
output_2 = add_or_remove_timezone(input_timestamp, with_timezone=False)
|
||||
assert expected == output_2
|
||||
|
||||
|
||||
@pytest.mark.parametrize("timezone, input, expected", TEST_UTC_TIMEZONE)
|
||||
@pytest.mark.parametrize("timezone, input_timestamp, expected", TEST_UTC_TIMEZONE)
|
||||
def test_utc_timezone(
|
||||
timezone: datetime.timedelta, input: datetime.datetime, expected: datetime.datetime
|
||||
timezone: datetime.timedelta,
|
||||
input_timestamp: datetime.datetime,
|
||||
expected: datetime.datetime,
|
||||
) -> None:
|
||||
with freeze_time("2024-02-03 04:05:06", tz_offset=timezone):
|
||||
output_1 = ensure_utc_timezone(input)
|
||||
output_1 = ensure_utc_timezone(input_timestamp)
|
||||
assert expected == output_1
|
||||
output_2 = add_or_remove_timezone(input, with_timezone=True)
|
||||
output_2 = add_or_remove_timezone(input_timestamp, with_timezone=True)
|
||||
assert expected == output_2
|
||||
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ from ansible_collections.community.crypto.plugins.modules import luks_device
|
||||
class DummyModule:
|
||||
# module to mock AnsibleModule class
|
||||
def __init__(self):
|
||||
self.params = dict()
|
||||
self.params = {}
|
||||
|
||||
def fail_json(self, msg=""):
|
||||
raise ValueError(msg)
|
||||
|
||||
Reference in New Issue
Block a user