diff options
| author | Justus Winter <[email protected]> | 2016-05-17 11:46:44 +0000 | 
|---|---|---|
| committer | Justus Winter <[email protected]> | 2016-05-17 12:18:21 +0000 | 
| commit | 9ceaec25918c6c5f2dfafe4e20181b83ce78f6ce (patch) | |
| tree | b32d9f1a958ff4a974aac3b580263a105ef846f7 /lang/python | |
| parent | python: Share generated methods between objects. (diff) | |
| download | gpgme-9ceaec25918c6c5f2dfafe4e20181b83ce78f6ce.tar.gz gpgme-9ceaec25918c6c5f2dfafe4e20181b83ce78f6ce.zip | |
python: Port more tests.
* lang/python/Makefile.am: Add bits from the c test suite.
* lang/python/support.py: New file.
* lang/python/t-decrypt.py: Likewise.
* lang/python/t-encrypt.py: Likewise.
Signed-off-by: Justus Winter <[email protected]>
Diffstat (limited to '')
| -rw-r--r-- | lang/python/tests/Makefile.am | 62 | ||||
| -rw-r--r-- | lang/python/tests/support.py | 26 | ||||
| -rwxr-xr-x | lang/python/tests/t-decrypt.py | 37 | ||||
| -rwxr-xr-x | lang/python/tests/t-encrypt.py | 42 | 
4 files changed, 166 insertions, 1 deletions
| diff --git a/lang/python/tests/Makefile.am b/lang/python/tests/Makefile.am index 50c78e35..87fb8d1f 100644 --- a/lang/python/tests/Makefile.am +++ b/lang/python/tests/Makefile.am @@ -16,7 +16,67 @@  # You should have received a copy of the GNU Lesser General Public  # License along with this program; if not, see <http://www.gnu.org/licenses/>. +GPG = gpg +GPG_AGENT = gpg-agent +export GNUPGHOME := $(abs_builddir) +export GPG_AGENT_INFO := + +test_srcdir = $(top_srcdir)/tests/gpg +  TESTS_ENVIRONMENT = GNUPGHOME=$(abs_builddir) \ +	LC_ALL=C GPG_AGENT_INFO= \ +	top_srcdir=$(top_srcdir) \  	PYTHONPATH=`echo $(abs_builddir)/../build/lib.*` -TESTS = t-wrapper.py t-data.py +py_tests = t-wrapper.py \ +	t-data.py \ +	t-encrypt.py \ +	t-decrypt.py + +TESTS = $(top_srcdir)/tests/gpg/initial.test \ +	$(py_tests) \ +	$(top_srcdir)/tests/gpg/final.test + +CLEANFILES = secring.gpg pubring.gpg pubring.kbx trustdb.gpg dirmngr.conf \ +	gpg-agent.conf pubring.kbx~ gpg.conf pubring.gpg~ \ +	random_seed .gpg-v21-migrated pubring-stamp + +private_keys = \ +        $(test_srcdir)/13CD0F3BDF24BE53FE192D62F18737256FF6E4FD \ +        $(test_srcdir)/76F7E2B35832976B50A27A282D9B87E44577EB66 \ +        $(test_srcdir)/A0747D5F9425E6664F4FFBEED20FBCA79FDED2BD \ +        $(test_srcdir)/13CBE3758AFE42B5E5E2AE4CED27AFA455E3F87F \ +        $(test_srcdir)/7A030357C0F253A5BBCD282FFC4E521B37558F5C + +clean-local: +	-$(top_srcdir)/tests/start-stop-agent --stop +	-rm -fR -- private-keys-v1.d openpgp-revocs.d S.gpg-agent sshcontrol + +check-local: ./gpg.conf ./gpg-agent.conf ./pubring-stamp \ +           ./private-keys-v1.d/gpg-sample.stamp + +# To guarantee that check-local is run before any tests we +# add this dependency: +$(top_srcdir)/tests/gpg/initial.test: check-local + +./private-keys-v1.d/gpg-sample.stamp: $(private_keys) +	test -d ./private-keys-v1.d || mkdir ./private-keys-v1.d +	for k in $(private_keys); do \ +          cp $$k private-keys-v1.d/`basename $$k`.key; \ +        done +	echo x > ./private-keys-v1.d/gpg-sample.stamp + +./pubring-stamp: $(test_srcdir)/pubdemo.asc +	$(GPG) --no-permission-warning \ +               --import $(test_srcdir)/pubdemo.asc +	-$(GPG) --no-permission-warning \ +		--import $(test_srcdir)/secdemo.asc +	touch ./pubring-stamp + +./gpg.conf: +# This is required for t-sig-notations. +	echo no-force-v3-sigs > ./gpg.conf + +./gpg-agent.conf: +# This is required for gpg2, which does not support command fd. +	echo pinentry-program $(abs_top_srcdir)/tests/gpg/pinentry > ./gpg-agent.conf diff --git a/lang/python/tests/support.py b/lang/python/tests/support.py new file mode 100644 index 00000000..36b3c888 --- /dev/null +++ b/lang/python/tests/support.py @@ -0,0 +1,26 @@ +# Copyright (C) 2016 g10 Code GmbH +# +# This file is part of GPGME. +# +# GPGME is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GPGME is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General +# Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, see <http://www.gnu.org/licenses/>. + +import os +from pyme import core + +def make_filename(name): +    return os.path.join(os.environ['top_srcdir'], 'tests', 'gpg', name) + +def init_gpgme(proto): +    core.check_version() +    core.engine_check_version(proto) diff --git a/lang/python/tests/t-decrypt.py b/lang/python/tests/t-decrypt.py new file mode 100755 index 00000000..da62ba42 --- /dev/null +++ b/lang/python/tests/t-decrypt.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2016 g10 Code GmbH +# +# This file is part of GPGME. +# +# GPGME is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GPGME is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General +# Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, see <http://www.gnu.org/licenses/>. + +import sys +import os +from pyme import core, constants +import support + +support.init_gpgme(constants.PROTOCOL_OpenPGP) +c = core.Context() + +source = core.Data(file=support.make_filename("cipher-1.asc")) +sink = core.Data() + +c.op_decrypt(source, sink) +result = c.op_decrypt_result() +assert not result.unsupported_algorithm, \ +    "Unsupported algorithm: {}".format(result.unsupported_algorithm) + +sink.seek(0, os.SEEK_SET) +sys.stdout.buffer.write(sink.read()) diff --git a/lang/python/tests/t-encrypt.py b/lang/python/tests/t-encrypt.py new file mode 100755 index 00000000..3bed752b --- /dev/null +++ b/lang/python/tests/t-encrypt.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2016 g10 Code GmbH +# +# This file is part of GPGME. +# +# GPGME is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GPGME is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General +# Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, see <http://www.gnu.org/licenses/>. + +import sys +import os +from pyme import core, constants +import support + +support.init_gpgme(constants.PROTOCOL_OpenPGP) +c = core.Context() +c.set_armor(True) + +source = core.Data("Hallo Leute\n") +sink = core.Data() + +keys = [] +keys.append(c.get_key("A0FF4590BB6122EDEF6E3C542D727CC768697734", False)) +keys.append(c.get_key("D695676BDCEDCC2CDD6152BCFE180B1DA9E3B0B2", False)) + +c.op_encrypt(keys, constants.ENCRYPT_ALWAYS_TRUST, source, sink) +result = c.op_encrypt_result() +assert not result.invalid_recipients, \ +    "Invalid recipient encountered: {}".format(result.invalid_recipients.fpr) + +sink.seek(0, os.SEEK_SET) +sys.stdout.buffer.write(sink.read()) | 
