diff options
author | Justus Winter <[email protected]> | 2017-02-17 11:18:56 +0000 |
---|---|---|
committer | Justus Winter <[email protected]> | 2017-02-17 11:18:56 +0000 |
commit | de8494b16bc50c60a8438f2cae1f8c88e8949f7a (patch) | |
tree | 3fae3b3fd43eb9e860fc446415dccd0d6358044c /lang/python/tests/t-quick-key-manipulation.py | |
parent | python: Fix using strings as commands in the assuan protocol. (diff) | |
download | gpgme-de8494b16bc50c60a8438f2cae1f8c88e8949f7a.tar.gz gpgme-de8494b16bc50c60a8438f2cae1f8c88e8949f7a.zip |
python: Fix teardown of ephemeral contexts.
* lang/python/tests/support.py (EphemeralContext): New function.
* lang/python/tests/t-quick-key-creation.py: Use the new function to
manage ephemeral contexts.
* lang/python/tests/t-quick-key-manipulation.py: Likewise.
* lang/python/tests/t-quick-subkey-creation.py: Likewise.
--
Previously, there was a problem with cleaning up ephemeral home
directories. shutil.rmtree deleted the agents main socket, gpg-agent
detected that, and deleted the other sockets as well, racing
shutil.rmtree which did not cope will with that.
Fix this by asking the agent nicely to shut down.
Signed-off-by: Justus Winter <[email protected]>
Diffstat (limited to 'lang/python/tests/t-quick-key-manipulation.py')
-rwxr-xr-x | lang/python/tests/t-quick-key-manipulation.py | 117 |
1 files changed, 53 insertions, 64 deletions
diff --git a/lang/python/tests/t-quick-key-manipulation.py b/lang/python/tests/t-quick-key-manipulation.py index 62c395ab..12c18ce5 100755 --- a/lang/python/tests/t-quick-key-manipulation.py +++ b/lang/python/tests/t-quick-key-manipulation.py @@ -21,83 +21,72 @@ from __future__ import absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals import gpg -import itertools -import os -import shutil -import time import support alpha = "Alpha <[email protected]>" bravo = "Bravo <[email protected]>" -def copy_configuration(destination): - home = os.environ['GNUPGHOME'] - shutil.copy(os.path.join(home, "gpg.conf"), destination) - shutil.copy(os.path.join(home, "gpg-agent.conf"), destination) +with support.EphemeralContext() as ctx: + res = ctx.create_key(alpha, certify=True) + key = ctx.get_key(res.fpr) + assert len(key.subkeys) == 1, "Expected one primary key and no subkeys" + assert len(key.uids) == 1, "Expected exactly one UID" -with support.TemporaryDirectory() as tmp: - copy_configuration(tmp) - with gpg.Context(home_dir=tmp) as ctx: - res = ctx.create_key(alpha, certify=True) + def get_uid(uid): key = ctx.get_key(res.fpr) - assert len(key.subkeys) == 1, "Expected one primary key and no subkeys" - assert len(key.uids) == 1, "Expected exactly one UID" + for u in key.uids: + if u.uid == uid: + return u + return None - def get_uid(uid): - key = ctx.get_key(res.fpr) - for u in key.uids: - if u.uid == uid: - return u - return None + # sanity check + uid = get_uid(alpha) + assert uid, "UID alpha not found" + assert uid.revoked == 0 - # sanity check - uid = get_uid(alpha) - assert uid, "UID alpha not found" - assert uid.revoked == 0 + # add bravo + ctx.key_add_uid(key, bravo) + uid = get_uid(bravo) + assert uid, "UID bravo not found" + assert uid.revoked == 0 - # add bravo - ctx.key_add_uid(key, bravo) - uid = get_uid(bravo) - assert uid, "UID bravo not found" - assert uid.revoked == 0 + # revoke alpha + ctx.key_revoke_uid(key, alpha) + uid = get_uid(alpha) + assert uid, "UID alpha not found" + assert uid.revoked == 1 + uid = get_uid(bravo) + assert uid, "UID bravo not found" + assert uid.revoked == 0 - # revoke alpha + # try to revoke the last UID + try: ctx.key_revoke_uid(key, alpha) - uid = get_uid(alpha) - assert uid, "UID alpha not found" - assert uid.revoked == 1 - uid = get_uid(bravo) - assert uid, "UID bravo not found" - assert uid.revoked == 0 - - # try to revoke the last UID - try: - ctx.key_revoke_uid(key, alpha) - # IMHO this should fail. issue2961. - # assert False, "Expected an error but got none" - except gpg.errors.GpgError: - pass + # IMHO this should fail. issue2961. + # assert False, "Expected an error but got none" + except gpg.errors.GpgError: + pass - # Everything should be the same - uid = get_uid(alpha) - assert uid, "UID alpha not found" - assert uid.revoked == 1 - uid = get_uid(bravo) - assert uid, "UID bravo not found" - assert uid.revoked == 0 + # Everything should be the same + uid = get_uid(alpha) + assert uid, "UID alpha not found" + assert uid.revoked == 1 + uid = get_uid(bravo) + assert uid, "UID bravo not found" + assert uid.revoked == 0 - # try to revoke a non-existent UID - try: - ctx.key_revoke_uid(key, "i dont exist") - # IMHO this should fail. issue2963. - # assert False, "Expected an error but got none" - except gpg.errors.GpgError: - pass + # try to revoke a non-existent UID + try: + ctx.key_revoke_uid(key, "i dont exist") + # IMHO this should fail. issue2963. + # assert False, "Expected an error but got none" + except gpg.errors.GpgError: + pass - # try to add an pre-existent UID - try: - ctx.key_add_uid(key, bravo) - assert False, "Expected an error but got none" - except gpg.errors.GpgError: - pass + # try to add an pre-existent UID + try: + ctx.key_add_uid(key, bravo) + assert False, "Expected an error but got none" + except gpg.errors.GpgError: + pass |