summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/keydata.py14
-rw-r--r--tests/test_openpgp.py43
2 files changed, 46 insertions, 11 deletions
diff --git a/tests/keydata.py b/tests/keydata.py
index 1056e3d..e6f3c3d 100644
--- a/tests/keydata.py
+++ b/tests/keydata.py
@@ -46,6 +46,10 @@ UID = base64.b64decode(b'''
tCRnZW1hdG8gdGVzdCBrZXkgPGdlbWF0b0BleGFtcGxlLmNvbT4=
''')
+UID_NOEMAIL = base64.b64decode(b'''
+tA9nZW1hdG8gdGVzdCBrZXk=
+''')
+
PUBLIC_KEY_SIG = base64.b64decode(b'''
iQFOBBMBCAA4FiEEgeEsFr2NzWC+GAhFE2iA5yp7E4QFAltY2CkCGwMFCwkIBwIGFQoJCAsC
BBYCAwECHgECF4AACgkQE2iA5yp7E4Tgvwf+LO6xyMFvlS8rs0GhpbqeOsj39555QNEviRIL
@@ -69,6 +73,16 @@ z1dpOqj/4iGFFn5b7X2G/CUak99fa2t6JiDmrtaYD5VX6UWxBvC6tjS4YPThSr77Rv+IbwjK
xQA+ptoUSGE=
''')
+PUBLIC_KEY_NOEMAIL_SIG = base64.b64decode(b'''
+iQFOBBMBCAA4FiEEgeEsFr2NzWC+GAhFE2iA5yp7E4QFAl9TiloCGwMFCwkIBwIGFQoJCAsC
+BBYCAwECHgECF4AACgkQE2iA5yp7E4Qt6QgAkwi+Cmf86G1vdvGjMCrj+4Byal7OuSsPYvnl
+DF+0oiPh3SmWhSYAzTJ159EMwIfPzxbzCf/Ya3SaILi8NVtRnII6vP7Q6jaOPcZaywDm4QCc
+Z2IwgzyTgrXo+6E7C8Mfq3br9r75rtRwJOkjZHFuKVQgaIJBnYixtMh3NlnWEjmGVyqD1ilT
+rgYbe01rf7KwRx4+f0v2M3fGeaNK4QaRFtmimyhGFUhmjCuDkRLwE98EXxd+OWz31JfEr0G0
+gwsGpRw/Q7ledKBXL1AmTU5nURqVloHRPuCFiiRdiy4Dm4NIEKP4opHE7znOJaVDe6b6UON3
++imPYwGO1/CEaM/0lg==
+''')
+
EXPIRED_KEY_SIG = base64.b64decode(b'''
iQFUBBMBCAA+AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAFiEEgeEsFr2NzWC+GAhFE2iA
5yp7E4QFAl9HeI4FCQVXJ48ACgkQE2iA5yp7E4QshQf/QsPfHYBth3BMx7MGKHmrqegTze6y
diff --git a/tests/test_openpgp.py b/tests/test_openpgp.py
index 995c9da..5ee86aa 100644
--- a/tests/test_openpgp.py
+++ b/tests/test_openpgp.py
@@ -33,6 +33,7 @@ from gemato.recursiveloader import ManifestRecursiveLoader
from tests.keydata import (
PUBLIC_KEY, SECRET_KEY, PUBLIC_SUBKEY, UID,
+ UID_NOEMAIL, PUBLIC_KEY_NOEMAIL_SIG,
PUBLIC_KEY_SIG, PUBLIC_SUBKEY_SIG, EXPIRED_KEY_SIG, REVOCATION_SIG,
OTHER_PUBLIC_KEY, OTHER_PUBLIC_KEY_UID, OTHER_PUBLIC_KEY_SIG,
UNEXPIRE_SIG,
@@ -183,6 +184,8 @@ OTHER_VALID_PUBLIC_KEY = (OTHER_PUBLIC_KEY + OTHER_PUBLIC_KEY_UID +
OTHER_PUBLIC_KEY_SIG)
OTHER_KEY_FINGERPRINT = '4B8349B90C56EE7F054D52871822F5424EB6DA81'
+VALID_KEY_NOEMAIL = PUBLIC_KEY + UID_NOEMAIL + PUBLIC_KEY_NOEMAIL_SIG
+
VALID_KEY_SUBKEY = (PUBLIC_KEY + UID + PUBLIC_KEY_SIG + PUBLIC_SUBKEY +
PUBLIC_SUBKEY_SIG)
SUBKEY_FINGERPRINT = '7E9DDE3CBE47E437418DF74038B9D2F76CC833CC'
@@ -363,6 +366,7 @@ MANIFEST_VARIANTS = [
# manifest, key, expected fpr/exception
# == good manifests ==
('SIGNED_MANIFEST', 'VALID_PUBLIC_KEY', None),
+ ('SIGNED_MANIFEST', 'VALID_KEY_NOEMAIL', None),
('DASH_ESCAPED_SIGNED_MANIFEST', 'VALID_PUBLIC_KEY', None),
('SUBKEY_SIGNED_MANIFEST', 'VALID_KEY_SUBKEY', None),
# == using private key ==
@@ -509,11 +513,15 @@ def test_cli(tmp_path, caplog, manifest_var, key_var, expected):
EMPTY_DATA = b''
-@pytest.mark.parametrize('key_var,success', [('VALID_PUBLIC_KEY', True),
- ('MALFORMED_PUBLIC_KEY', False),
- ('EMPTY_DATA', False),
- ('FORGED_PUBLIC_KEY', False),
- ('UNSIGNED_PUBLIC_KEY', False)])
+@pytest.mark.parametrize(
+ 'key_var,success',
+ [('VALID_PUBLIC_KEY', True),
+ ('VALID_KEY_NOEMAIL', True),
+ ('MALFORMED_PUBLIC_KEY', False),
+ ('EMPTY_DATA', False),
+ ('FORGED_PUBLIC_KEY', False),
+ ('UNSIGNED_PUBLIC_KEY', False),
+ ])
def test_env_import_key(openpgp_env, key_var, success):
"""Test importing valid and invalid keys"""
try:
@@ -691,7 +699,10 @@ REFRESH_VARIANTS = [
@pytest.mark.parametrize(
'manifest_var,key_var,server_key_fpr,server_key_var,expected',
- REFRESH_VARIANTS)
+ REFRESH_VARIANTS +
+ [('SIGNED_MANIFEST', 'VALID_KEY_NOEMAIL', KEY_FINGERPRINT,
+ 'VALID_PUBLIC_KEY', None),
+ ])
def test_refresh_hkp(openpgp_env_with_refresh, hkp_server, manifest_var,
key_var, server_key_fpr, server_key_var, expected):
"""Test refreshing against a HKP keyserver"""
@@ -719,12 +730,22 @@ def test_refresh_hkp(openpgp_env_with_refresh, hkp_server, manifest_var,
@pytest.mark.parametrize(
- 'manifest_var,key_var,server_key_fpr,server_key_var,expected',
- REFRESH_VARIANTS)
-def test_refresh_wkd(openpgp_env_with_refresh, manifest_var, key_var,
- server_key_fpr, server_key_var, expected):
+ 'manifest_var,key_var,server_key_fpr,server_key_var,expected,'
+ 'expect_hit',
+ [args + (True,) for args in REFRESH_VARIANTS] +
+ [('SIGNED_MANIFEST', 'VALID_KEY_NOEMAIL', KEY_FINGERPRINT,
+ 'VALID_PUBLIC_KEY', OpenPGPKeyRefreshError, False),
+ ])
+def test_refresh_wkd(openpgp_env_with_refresh,
+ manifest_var,
+ key_var,
+ server_key_fpr,
+ server_key_var,
+ expected,
+ expect_hit):
"""Test refreshing against WKD"""
- with pytest.importorskip('responses').RequestsMock() as responses:
+ with pytest.importorskip('responses').RequestsMock(
+ assert_all_requests_are_fired=expect_hit) as responses:
try:
if key_var is not None:
with io.BytesIO(globals()[key_var]) as f: