Skip to content

Commit 86eb172

Browse files
committed
chore(keyringctl): add missing type annotations for tests
1 parent c807a81 commit 86eb172

File tree

4 files changed

+66
-28
lines changed

4 files changed

+66
-28
lines changed

libkeyringctl/keyring.py

+3-12
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
from .types import Trust
3333
from .types import Uid
3434
from .types import Username
35+
from .util import filter_fingerprints_by_trust
3536
from .util import get_cert_paths
3637
from .util import system
3738
from .util import transform_fd_to_tmpfile
@@ -605,12 +606,7 @@ def export_ownertrust(certs: List[Path], output: Path) -> List[Fingerprint]:
605606
"""
606607

607608
main_trusts = certificate_trust_from_paths(sources=certs, main_keys=get_fingerprints_from_paths(sources=certs))
608-
trusted_certs: List[Fingerprint] = list(
609-
map(
610-
lambda item: item[0],
611-
filter(lambda item: Trust.full == item[1], main_trusts.items()),
612-
)
613-
)
609+
trusted_certs: List[Fingerprint] = filter_fingerprints_by_trust(main_trusts, Trust.full)
614610

615611
with open(file=output, mode="w") as trusted_certs_file:
616612
for cert in sorted(set(trusted_certs)):
@@ -636,12 +632,7 @@ def export_revoked(certs: List[Path], main_keys: Set[Fingerprint], output: Path)
636632
"""
637633

638634
certificate_trusts = certificate_trust_from_paths(sources=certs, main_keys=main_keys)
639-
revoked_certs: List[Fingerprint] = list(
640-
map(
641-
lambda item: item[0],
642-
filter(lambda item: Trust.revoked == item[1], certificate_trusts.items()),
643-
)
644-
)
635+
revoked_certs: List[Fingerprint] = filter_fingerprints_by_trust(certificate_trusts, Trust.revoked)
645636

646637
with open(file=output, mode="w") as revoked_certs_file:
647638
for cert in sorted(set(revoked_certs)):

libkeyringctl/util.py

+35
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,14 @@
1616
from traceback import print_stack
1717
from typing import IO
1818
from typing import AnyStr
19+
from typing import Dict
1920
from typing import List
2021
from typing import Optional
2122
from typing import Set
2223
from typing import Union
2324

2425
from libkeyringctl.types import Fingerprint
26+
from libkeyringctl.types import Trust
2527

2628

2729
@contextmanager
@@ -198,4 +200,37 @@ def get_parent_cert_paths(paths: Iterable[Path]) -> Set[Path]:
198200

199201

200202
def contains_fingerprint(fingerprints: Iterable[Fingerprint], fingerprint: Fingerprint) -> bool:
203+
"""Returns weather an iterable structure of fingerprints contains a specific fingerprint
204+
205+
Parameters
206+
----------
207+
fingerprints: Iteratable structure of fingerprints that should be searched
208+
fingerprint: Fingerprint to search for
209+
210+
Returns
211+
-------
212+
Weather an iterable structure of fingerprints contains a specific fingerprint
213+
"""
214+
201215
return any(filter(lambda e: str(e).endswith(fingerprint), fingerprints))
216+
217+
218+
def filter_fingerprints_by_trust(trusts: Dict[Fingerprint, Trust], trust: Trust) -> List[Fingerprint]:
219+
"""Filters a dict of Fingerprint to Trust by a passed Trust parameter and returns the matching fingerprints.
220+
221+
Parameters
222+
----------
223+
trusts: Dict of Fingerprint to Trust that should be filtered based on the trust parameter
224+
trust: Trust that should be used to filter the trusts dict
225+
226+
Returns
227+
-------
228+
The matching fingerprints of the dict filtered by trust
229+
"""
230+
231+
return list(
232+
map(
233+
lambda item: item[0],
234+
filter(lambda item: trust == item[1], trusts.items()),
235+
)
236+
)

tests/conftest.py

+23-11
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,12 @@
33
from pathlib import Path
44
from shutil import copytree
55
from tempfile import TemporaryDirectory
6+
from typing import Any
7+
from typing import Callable
68
from typing import Dict
9+
from typing import Generator
710
from typing import List
11+
from typing import Optional
812
from typing import Set
913

1014
from pytest import fixture
@@ -26,17 +30,22 @@
2630

2731

2832
@fixture(autouse=True)
29-
def reset_storage():
33+
def reset_storage() -> None:
3034
test_keys.clear()
3135
test_certificates.clear()
3236
test_keyring_certificates.clear()
3337
test_main_fingerprints.clear()
3438

3539

36-
def create_certificate(username: Username, uids: List[Uid], keyring_type: str = "packager", func=None):
37-
def decorator(decorated_func):
40+
def create_certificate(
41+
username: Username,
42+
uids: List[Uid],
43+
keyring_type: str = "packager",
44+
func: Optional[Callable[..., Any]] = None,
45+
) -> Callable[..., Any]:
46+
def decorator(decorated_func: Callable[..., None]) -> Callable[..., Any]:
3847
@wraps(decorated_func)
39-
def wrapper(working_dir: Path, *args, **kwargs):
48+
def wrapper(working_dir: Path, *args: Any, **kwargs: Any) -> None:
4049
print(username)
4150

4251
key_directory = working_dir / "secret" / f"{id}"
@@ -80,10 +89,12 @@ def wrapper(working_dir: Path, *args, **kwargs):
8089
return decorator(func)
8190

8291

83-
def create_uid_certification(issuer: Username, certified: Username, uid: Uid, func=None):
84-
def decorator(decorated_func):
92+
def create_uid_certification(
93+
issuer: Username, certified: Username, uid: Uid, func: Optional[Callable[[Any], None]] = None
94+
) -> Callable[..., Any]:
95+
def decorator(decorated_func: Callable[..., None]) -> Callable[..., Any]:
8596
@wraps(decorated_func)
86-
def wrapper(working_dir: Path, *args, **kwargs):
97+
def wrapper(working_dir: Path, *args: Any, **kwargs: Any) -> None:
8798
key: Path = test_keys[issuer][0]
8899
certificate: Path = test_certificates[certified][0]
89100
fingerprint: Fingerprint = Fingerprint(test_keyring_certificates[certified][0].name)
@@ -115,12 +126,13 @@ def wrapper(working_dir: Path, *args, **kwargs):
115126

116127

117128
@fixture(scope="function")
118-
def working_dir():
129+
def working_dir() -> Generator[Path, None, None]:
119130
with TemporaryDirectory(prefix="arch-keyringctl-test-") as tempdir:
120-
with cwd(tempdir):
121-
yield Path(tempdir)
131+
path: Path = Path(tempdir)
132+
with cwd(path):
133+
yield path
122134

123135

124136
@fixture(scope="function")
125-
def keyring_dir(working_dir: Path):
137+
def keyring_dir(working_dir: Path) -> Generator[Path, None, None]:
126138
yield working_dir / "keyring"

tests/test_trust.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313

1414
@create_certificate(username=Username("foobar"), uids=[Uid("foobar <[email protected]>")], keyring_type="main")
15-
def test_certificate_trust_main_key_has_full_trust(working_dir: Path, keyring_dir: Path):
15+
def test_certificate_trust_main_key_has_full_trust(working_dir: Path, keyring_dir: Path) -> None:
1616
trust = certificate_trust(
1717
test_keyring_certificates[Username("foobar")][0],
1818
test_main_fingerprints,
@@ -22,7 +22,7 @@ def test_certificate_trust_main_key_has_full_trust(working_dir: Path, keyring_di
2222

2323
@create_certificate(username=Username("main"), uids=[Uid("main <[email protected]>")])
2424
@create_certificate(username=Username("foobar"), uids=[Uid("foobar <[email protected]>")])
25-
def test_certificate_trust_no_signature_is_unknown(working_dir: Path, keyring_dir: Path):
25+
def test_certificate_trust_no_signature_is_unknown(working_dir: Path, keyring_dir: Path) -> None:
2626
trust = certificate_trust(
2727
test_keyring_certificates[Username("foobar")][0],
2828
test_main_fingerprints,
@@ -33,7 +33,7 @@ def test_certificate_trust_no_signature_is_unknown(working_dir: Path, keyring_di
3333
@create_certificate(username=Username("main"), uids=[Uid("main <[email protected]>")], keyring_type="main")
3434
@create_certificate(username=Username("foobar"), uids=[Uid("foobar <[email protected]>")])
3535
@create_uid_certification(issuer=Username("main"), certified=Username("foobar"), uid=Uid("foobar <[email protected]>"))
36-
def test_certificate_trust_one_signature_is_marginal(working_dir: Path, keyring_dir: Path):
36+
def test_certificate_trust_one_signature_is_marginal(working_dir: Path, keyring_dir: Path) -> None:
3737
trust = certificate_trust(
3838
test_keyring_certificates[Username("foobar")][0],
3939
test_main_fingerprints,
@@ -45,7 +45,7 @@ def test_certificate_trust_one_signature_is_marginal(working_dir: Path, keyring_
4545
@create_certificate(username=Username("not_main"), uids=[Uid("main <[email protected]>")])
4646
@create_certificate(username=Username("foobar"), uids=[Uid("foobar <[email protected]>")])
4747
@create_uid_certification(issuer=Username("not_main"), certified=Username("foobar"), uid=Uid("foobar <[email protected]>"))
48-
def test_certificate_trust_one_none_main_signature_gives_no_trust(working_dir: Path, keyring_dir: Path):
48+
def test_certificate_trust_one_none_main_signature_gives_no_trust(working_dir: Path, keyring_dir: Path) -> None:
4949
trust = certificate_trust(
5050
test_keyring_certificates[Username("foobar")][0],
5151
test_main_fingerprints,
@@ -60,7 +60,7 @@ def test_certificate_trust_one_none_main_signature_gives_no_trust(working_dir: P
6060
@create_uid_certification(issuer=Username("main1"), certified=Username("foobar"), uid=Uid("foobar <[email protected]>"))
6161
@create_uid_certification(issuer=Username("main2"), certified=Username("foobar"), uid=Uid("foobar <[email protected]>"))
6262
@create_uid_certification(issuer=Username("main3"), certified=Username("foobar"), uid=Uid("foobar <[email protected]>"))
63-
def test_certificate_trust_three_main_signature_gives_full_trust(working_dir: Path, keyring_dir: Path):
63+
def test_certificate_trust_three_main_signature_gives_full_trust(working_dir: Path, keyring_dir: Path) -> None:
6464
trust = certificate_trust(
6565
test_keyring_certificates[Username("foobar")][0],
6666
test_main_fingerprints,

0 commit comments

Comments
 (0)