aboutsummaryrefslogtreecommitdiffstats
path: root/lang/python/tests/t-callbacks.py
diff options
context:
space:
mode:
Diffstat (limited to 'lang/python/tests/t-callbacks.py')
-rwxr-xr-xlang/python/tests/t-callbacks.py53
1 files changed, 45 insertions, 8 deletions
diff --git a/lang/python/tests/t-callbacks.py b/lang/python/tests/t-callbacks.py
index b311e3d4..25a1c238 100755
--- a/lang/python/tests/t-callbacks.py
+++ b/lang/python/tests/t-callbacks.py
@@ -18,12 +18,13 @@
# License along with this program; if not, see <http://www.gnu.org/licenses/>.
from __future__ import absolute_import, print_function, unicode_literals
-del absolute_import, print_function, unicode_literals
import os
import gpg
import support
-_ = support # to appease pyflakes.
+_ = support # to appease pyflakes.
+
+del absolute_import, print_function, unicode_literals
c = gpg.Context()
c.set_pinentry_mode(gpg.constants.PINENTRY_MODE_LOOPBACK)
@@ -33,6 +34,7 @@ sink = gpg.Data()
# Valid passphrases, both as string and bytes.
for passphrase in ('foo', b'foo'):
+
def passphrase_cb(hint, desc, prev_bad, hook=None):
assert hook == passphrase
return hook
@@ -40,10 +42,12 @@ for passphrase in ('foo', b'foo'):
c.set_passphrase_cb(passphrase_cb, passphrase)
c.op_encrypt([], 0, source, sink)
+
# Returning an invalid type.
def passphrase_cb(hint, desc, prev_bad, hook=None):
return 0
+
c.set_passphrase_cb(passphrase_cb, None)
try:
c.op_encrypt([], 0, source, sink)
@@ -55,9 +59,12 @@ else:
# Raising an exception inside callback.
myException = Exception()
+
+
def passphrase_cb(hint, desc, prev_bad, hook=None):
raise myException
+
c.set_passphrase_cb(passphrase_cb, None)
try:
c.op_encrypt([], 0, source, sink)
@@ -66,10 +73,12 @@ except Exception as e:
else:
assert False, "Expected an error, got none"
+
# Wrong kind of callback function.
def bad_passphrase_cb():
pass
+
c.set_passphrase_cb(bad_passphrase_cb, None)
try:
c.op_encrypt([], 0, source, sink)
@@ -78,8 +87,6 @@ except Exception as e:
else:
assert False, "Expected an error, got none"
-
-
# Test the progress callback.
parms = """<GnupgKeyParms format="internal">
Key-Type: RSA
@@ -93,21 +100,26 @@ Expire-Date: 2099-12-31
"""
messages = []
+
+
def progress_cb(what, typ, current, total, hook=None):
assert hook == messages
messages.append(
"PROGRESS UPDATE: what = {}, type = {}, current = {}, total = {}"
.format(what, typ, current, total))
+
c = gpg.Context()
c.set_progress_cb(progress_cb, messages)
c.op_genkey(parms, None, None)
assert len(messages) > 0
+
# Test exception handling.
def progress_cb(what, typ, current, total, hook=None):
raise myException
+
c = gpg.Context()
c.set_progress_cb(progress_cb, None)
try:
@@ -117,7 +129,6 @@ except Exception as e:
else:
assert False, "Expected an error, got none"
-
# Test the edit callback.
c = gpg.Context()
c.set_pinentry_mode(gpg.constants.PINENTRY_MODE_LOOPBACK)
@@ -127,11 +138,15 @@ alpha = c.get_key("A0FF4590BB6122EDEF6E3C542D727CC768697734", False)
cookie = object()
edit_cb_called = False
+
+
def edit_cb(status, args, hook):
global edit_cb_called
edit_cb_called = True
assert hook == cookie
return "quit" if args == "keyedit.prompt" else None
+
+
c.op_edit(alpha, edit_cb, cookie, sink)
assert edit_cb_called
@@ -141,8 +156,11 @@ c.set_pinentry_mode(gpg.constants.PINENTRY_MODE_LOOPBACK)
c.set_passphrase_cb(lambda *args: "abc")
sink = gpg.Data()
+
def edit_cb(status, args):
raise myException
+
+
try:
c.op_edit(alpha, edit_cb, None, sink)
except Exception as e:
@@ -150,18 +168,19 @@ except Exception as e:
else:
assert False, "Expected an error, got none"
-
-
# Test the status callback.
source = gpg.Data("Hallo Leute\n")
sink = gpg.Data()
status_cb_called = False
+
+
def status_cb(keyword, args, hook=None):
global status_cb_called
status_cb_called = True
assert hook == cookie
+
c = gpg.Context()
c.set_status_cb(status_cb, cookie)
c.set_ctx_flag("full-status", "1")
@@ -172,9 +191,11 @@ assert status_cb_called
source = gpg.Data("Hallo Leute\n")
sink = gpg.Data()
+
def status_cb(keyword, args):
raise myException
+
c = gpg.Context()
c.set_status_cb(status_cb, None)
c.set_ctx_flag("full-status", "1")
@@ -186,13 +207,16 @@ else:
assert False, "Expected an error, got none"
-
# Test the data callbacks.
def read_cb(amount, hook=None):
assert hook == cookie
return 0
+
+
def release_cb(hook=None):
assert hook == cookie
+
+
data = gpg.Data(cbs=(read_cb, None, None, release_cb, cookie))
try:
data.read()
@@ -201,8 +225,11 @@ except Exception as e:
else:
assert False, "Expected an error, got none"
+
def read_cb(amount):
raise myException
+
+
data = gpg.Data(cbs=(read_cb, None, None, lambda: None))
try:
data.read()
@@ -215,6 +242,8 @@ else:
def write_cb(what, hook=None):
assert hook == cookie
return "wrong type"
+
+
data = gpg.Data(cbs=(None, write_cb, None, release_cb, cookie))
try:
data.write(b'stuff')
@@ -223,8 +252,11 @@ except Exception as e:
else:
assert False, "Expected an error, got none"
+
def write_cb(what):
raise myException
+
+
data = gpg.Data(cbs=(None, write_cb, None, lambda: None))
try:
data.write(b'stuff')
@@ -237,6 +269,8 @@ else:
def seek_cb(offset, whence, hook=None):
assert hook == cookie
return "wrong type"
+
+
data = gpg.Data(cbs=(None, None, seek_cb, release_cb, cookie))
try:
data.seek(0, os.SEEK_SET)
@@ -245,8 +279,11 @@ except Exception as e:
else:
assert False, "Expected an error, got none"
+
def seek_cb(offset, whence):
raise myException
+
+
data = gpg.Data(cbs=(None, None, seek_cb, lambda: None))
try:
data.seek(0, os.SEEK_SET)