diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/keydata.py | 14 | ||||
-rw-r--r-- | tests/test_openpgp.py | 43 |
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: |