summaryrefslogtreecommitdiff
path: root/tests/test_openpgp.py
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2020-09-05 15:09:13 +0200
committerMichał Górny <mgorny@gentoo.org>2020-09-05 15:09:13 +0200
commit35f41a15dea30c2cc00c693de8d0fe40de9b9479 (patch)
tree078d35fe3753bf26c1692252ccc2d25546c6f809 /tests/test_openpgp.py
parentcdfce4176008c3ba73d1a47c05545de73ff45b7b (diff)
downloadgemato-35f41a15dea30c2cc00c693de8d0fe40de9b9479.tar.gz
test_openpgp: Test using UID with no e-mail address
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'tests/test_openpgp.py')
-rw-r--r--tests/test_openpgp.py43
1 files changed, 32 insertions, 11 deletions
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: