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 <justus@gnupg.org>
This commit is contained in:
parent
11314f0db6
commit
9ceaec2591
@ -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
|
||||
|
26
lang/python/tests/support.py
Normal file
26
lang/python/tests/support.py
Normal file
@ -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)
|
37
lang/python/tests/t-decrypt.py
Executable file
37
lang/python/tests/t-decrypt.py
Executable file
@ -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())
|
42
lang/python/tests/t-encrypt.py
Executable file
42
lang/python/tests/t-encrypt.py
Executable file
@ -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())
|
Loading…
Reference in New Issue
Block a user