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 '')
| -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 | 
