aboutsummaryrefslogtreecommitdiffstats
path: root/lang/python/tests
diff options
context:
space:
mode:
authorJustus Winter <[email protected]>2016-05-27 13:58:23 +0000
committerJustus Winter <[email protected]>2016-05-27 15:24:12 +0000
commit3915842657f0849a038752fd7445f96081a89dd9 (patch)
treef86d86e29c5b504d94f4c56e5e9b6123afa233d1 /lang/python/tests
parentsrc: Fix typo. (diff)
downloadgpgme-3915842657f0849a038752fd7445f96081a89dd9.tar.gz
gpgme-3915842657f0849a038752fd7445f96081a89dd9.zip
python: Port more tests.
* lang/python/pyme/core.py (Data._error_check): Add 'gpgme_data_get_file_name' to the list of functions not returning an error code. * lang/python/tests/Makefile.am (pytests): Add new tests. * lang/python/tests/support.py (verbose): New variable. * lang/python/tests/t-data.py: Test setting and getting the filename. * lang/python/tests/t-encrypt-large.py: New file. * lang/python/tests/t-file-name.py: Likewise. * lang/python/tests/t-trustlist.py: Likewise. Signed-off-by: Justus Winter <[email protected]>
Diffstat (limited to 'lang/python/tests')
-rw-r--r--lang/python/tests/Makefile.am5
-rw-r--r--lang/python/tests/support.py3
-rwxr-xr-xlang/python/tests/t-data.py4
-rwxr-xr-xlang/python/tests/t-encrypt-large.py63
-rwxr-xr-xlang/python/tests/t-file-name.py42
-rwxr-xr-xlang/python/tests/t-trustlist.py34
6 files changed, 149 insertions, 2 deletions
diff --git a/lang/python/tests/Makefile.am b/lang/python/tests/Makefile.am
index 7df40a2d..0bc8c7f8 100644
--- a/lang/python/tests/Makefile.am
+++ b/lang/python/tests/Makefile.am
@@ -39,8 +39,11 @@ py_tests = t-wrapper.py \
t-signers.py \
t-decrypt.py \
t-export.py \
+ t-trustlist.py \
t-edit.py \
- t-wait.py
+ t-wait.py \
+ t-encrypt-large.py \
+ t-file-name.py
TESTS = $(top_srcdir)/tests/gpg/initial.test \
$(py_tests) \
diff --git a/lang/python/tests/support.py b/lang/python/tests/support.py
index a57d5816..99d96cf6 100644
--- a/lang/python/tests/support.py
+++ b/lang/python/tests/support.py
@@ -26,7 +26,8 @@ def init_gpgme(proto):
core.check_version()
core.engine_check_version(proto)
+verbose = int(os.environ.get('verbose', 0)) > 1
def print_data(data):
- if int(os.environ.get('verbose', 0)) > 1:
+ if verbose:
data.seek(0, os.SEEK_SET)
sys.stdout.buffer.write(data.read())
diff --git a/lang/python/tests/t-data.py b/lang/python/tests/t-data.py
index de60c473..3774f09d 100755
--- a/lang/python/tests/t-data.py
+++ b/lang/python/tests/t-data.py
@@ -52,6 +52,10 @@ data.write(binjunk)
data.seek(0, os.SEEK_SET)
assert data.read() == binjunk
+data = core.Data()
+data.set_file_name("foobar")
+assert data.get_file_name() == "foobar"
+
# Test reading from an existing file.
with tempfile.NamedTemporaryFile() as tmp:
tmp.write(binjunk)
diff --git a/lang/python/tests/t-encrypt-large.py b/lang/python/tests/t-encrypt-large.py
new file mode 100755
index 00000000..69aed483
--- /dev/null
+++ b/lang/python/tests/t-encrypt-large.py
@@ -0,0 +1,63 @@
+#!/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 random
+from pyme import core, constants
+import support
+
+if len(sys.argv) == 2:
+ nbytes = int(sys.argv[1])
+else:
+ nbytes = 100000
+
+support.init_gpgme(constants.PROTOCOL_OpenPGP)
+c = core.Context()
+
+ntoread = nbytes
+def read_cb(amount):
+ global ntoread
+ chunk = ntoread if ntoread < amount else amount
+ ntoread -= chunk
+ assert ntoread >= 0
+ assert chunk >= 0
+ return bytes(random.randrange(256) for i in range(chunk))
+
+nwritten = 0
+def write_cb(data):
+ global nwritten
+ nwritten += len(data)
+ return len(data)
+
+source = core.Data(cbs=(read_cb, None, None, lambda: None))
+sink = core.Data(cbs=(None, write_cb, None, lambda: None))
+
+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)
+assert ntoread == 0
+
+if support.verbose:
+ sys.stderr.write(
+ "plaintext={} bytes, ciphertext={} bytes\n".format(nbytes, nwritten))
diff --git a/lang/python/tests/t-file-name.py b/lang/python/tests/t-file-name.py
new file mode 100755
index 00000000..6f9294eb
--- /dev/null
+++ b/lang/python/tests/t-file-name.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 os
+from pyme import core, constants
+import support
+
+testname = "abcde12345"
+
+support.init_gpgme(constants.PROTOCOL_OpenPGP)
+c = core.Context()
+c.set_armor(True)
+
+source = core.Data("Hallo Leute\n")
+source.set_file_name(testname)
+cipher = core.Data()
+plain = core.Data()
+
+keys = []
+keys.append(c.get_key("A0FF4590BB6122EDEF6E3C542D727CC768697734", False))
+
+c.op_encrypt(keys, constants.ENCRYPT_ALWAYS_TRUST, source, cipher)
+cipher.seek(0, os.SEEK_SET)
+c.op_decrypt(cipher, plain)
+result = c.op_decrypt_result()
+assert result.file_name == testname
diff --git a/lang/python/tests/t-trustlist.py b/lang/python/tests/t-trustlist.py
new file mode 100755
index 00000000..61f8fa52
--- /dev/null
+++ b/lang/python/tests/t-trustlist.py
@@ -0,0 +1,34 @@
+#!/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/>.
+
+from pyme import core, constants
+import support
+
+support.init_gpgme(constants.PROTOCOL_OpenPGP)
+c = core.Context()
+c.op_trustlist_start("alice", 0)
+
+while True:
+ item = c.op_trustlist_next()
+ if not item:
+ break
+
+ print("l={} k={} t={} o={} v={} u={}".format(
+ item.level, item.keyid, item.type, item.owner_trust,
+ item.validity, item.name))