pytest-gnupg-fixtures

Pytest fixtures for testing with gnupg.


Keywords
fixtures, gnupg, gpg, pytest
License
GPL-3.0
Install
pip install pytest-gnupg-fixtures==0.1.6

Documentation

pytest-gnupg-fixtures

Overview

Pytest fixtures to dynamically create GnuPG instances for testing.

Getting Started

Update setup.py to include:

from distutils.core import setup

setup(
	tests_require=["pytest-gnupg-fixtures"]
)

All fixtures should be automatically included via the pytest11 entry point.

from pytest_gnupg_fixtures import GnuPGKeypair  # Optional, for typing

def test_custom_signer(gnupg_keypair: GnuPGKeypair):
    custom_signer = CustomSigner(
        keyid=gnupg_keypair.fingerprints[1],
        passphrase=gnupg_keypair.passphrase,
        homedir=gnupg_keypair.gnupg_home,
    )
    assert "PGP SIGNATURE" in custom_signer.sign("my data")
  • Tested with python 3.8

Installation

From pypi.org

$ pip install pytest_gnupg_fixtures

From source code

$ git clone https://github.com/crashvb/pytest-gnupg-fixtures
$ cd pytest-gnupg-fixtures
$ virtualenv env
$ source env/bin/activate
$ python -m pip install --editable .[dev]

Fixtures

gnupg_email

Provides a generated email to use as part of the uid for the keypair.

gnupg_gen_key_conf

Provides the path to a templated GnuPG script file that is used to generate a temporary keypair. If a user-defined script (tests/gnupg_gen_key.conf) can be located, it is used. Otherwise, an embedded script template is copied to temporary location and returned. This fixture is used by the gnupg_keypair fixture.

The$GNUGP_EMAIL and $GNUPG_PASSPHRASE variables will be populated within the template during generation of the keypair.

gnupg_keypair

Provides a keypair within a temporary GnuPG trust store.

NamedTuple Fields

The following fields are defined in the tuple provided by this fixture:

Typing is provided by pytest_gnupg_fixtures.GnuPGKeypair.

gnupg_passphrase

Provides a generated passphrase to use for the keypair.

gnupg_trust_store

Provides a temporary, initialized, GnuPG trust store that is contains no keys. This fixture is used by the gnupg_keypair fixture.

NamedTuple Fields

The following fields are defined in the tuple provided by this fixture:

  • gnupg_home - The path to the temporary trust store.

Typing is provided by pytest_gnupg_fixtures.GnuPGTrustStore.

Limitations

  1. This has been coded to work with gpg2.
  2. The generated keypair is very simple. TBD if this will be expanded to support a more realistic configuration.

Development

Source Control