# pygpgme - a Python wrapper for the gpgme library
# Copyright (C) 2006 James Henstridge
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library 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 library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
import os
import unittest
import gpgme
from gpgme.tests.util import GpgHomeTestCase
class ContextTestCase(GpgHomeTestCase):
def test_constructor(self):
ctx = gpgme.Context()
def test_protocol(self):
ctx = gpgme.Context()
# XXX: this should use symbolic constant names
self.assertEqual(ctx.protocol, gpgme.PROTOCOL_OpenPGP)
ctx.protocol = gpgme.PROTOCOL_CMS
self.assertEqual(ctx.protocol, gpgme.PROTOCOL_CMS)
ctx.protocol = gpgme.PROTOCOL_OpenPGP
self.assertEqual(ctx.protocol, gpgme.PROTOCOL_OpenPGP)
# check error on setting to invalid protocol value
def set_protocol(ctx, value):
ctx.protocol = value
self.assertRaises(gpgme.GpgmeError, set_protocol, ctx, 999)
def del_protocol(ctx):
del ctx.protocol
self.assertRaises(TypeError, del_protocol, ctx)
def test_armor(self):
ctx = gpgme.Context()
self.assertEqual(ctx.armor, False)
ctx.armor = True
self.assertEqual(ctx.armor, True)
ctx.armor = False
self.assertEqual(ctx.armor, False)
def del_armor(ctx):
del ctx.armor
self.assertRaises(TypeError, del_armor, ctx)
def test_textmode(self):
ctx = gpgme.Context()
self.assertEqual(ctx.textmode, False)
ctx.textmode = True
self.assertEqual(ctx.textmode, True)
ctx.textmode = False
self.assertEqual(ctx.textmode, False)
def del_textmode(ctx):
del ctx.textmode
self.assertRaises(TypeError, del_textmode, ctx)
def test_include_certs(self):
ctx = gpgme.Context()
# XXX: 20060413 jamesh
# gpgme 1.0.x and 1.1.x have different default values for
# include_certs, so I am disabling this test for now.
#self.assertEqual(ctx.include_certs, 1)
ctx.include_certs = 2
self.assertEqual(ctx.include_certs, 2)
def del_include_certs(ctx):
del ctx.include_certs
self.assertRaises(TypeError, del_include_certs, ctx)
def test_keylist_mode(self):
ctx = gpgme.Context()
self.assertEqual(ctx.keylist_mode, gpgme.KEYLIST_MODE_LOCAL)
ctx.keylist_mode = gpgme.KEYLIST_MODE_EXTERN
self.assertEqual(ctx.keylist_mode, gpgme.KEYLIST_MODE_EXTERN)
ctx.keylist_mode = gpgme.KEYLIST_MODE_LOCAL | gpgme.KEYLIST_MODE_EXTERN
self.assertEqual(ctx.keylist_mode,
gpgme.KEYLIST_MODE_LOCAL | gpgme.KEYLIST_MODE_EXTERN)
def del_keylist_mode(ctx):
del ctx.keylist_mode
self.assertRaises(TypeError, del_keylist_mode, ctx)
def test_passphrase_cb(self):
ctx = gpgme.Context()
def passphrase_cb(uid_hint, passphrase_info, prev_was_bad, fd):
pass
self.assertEqual(ctx.passphrase_cb, None)
ctx.passphrase_cb = passphrase_cb
self.assertEqual(ctx.passphrase_cb, passphrase_cb)
ctx.passphrase_cb = None
self.assertEqual(ctx.passphrase_cb, None)
ctx.passphrase_cb = passphrase_cb
del ctx.passphrase_cb
self.assertEqual(ctx.passphrase_cb, None)
def test_progress_cb(self):
ctx = gpgme.Context()
def progress_cb(what, type, current, total):
pass
self.assertEqual(ctx.progress_cb, None)
ctx.progress_cb = progress_cb
self.assertEqual(ctx.progress_cb, progress_cb)
ctx.progress_cb = None
self.assertEqual(ctx.progress_cb, None)
ctx.progress_cb = progress_cb
del ctx.progress_cb
self.assertEqual(ctx.progress_cb, None)
def test_set_engine_info(self):
# Add a key using the default $GNUPGHOME based keyring.
ctx = gpgme.Context()
ctx.import_(self.keyfile('key1.pub'))
# If we set $GNUPGHOME to a dummy value, we can't read in the
# keywe just loaded.
os.environ['GNUPGHOME'] = '/no/such/dir'
ctx = gpgme.Context()
self.assertRaises(gpgme.GpgmeError, ctx.get_key,
'E79A842DA34A1CA383F64A1546BB55F0885C65A4')
# But if we configure the context using set_engine_info(), it
# will find the key.
ctx = gpgme.Context()
ctx.set_engine_info(gpgme.PROTOCOL_OpenPGP, None, self._gpghome)
key = ctx.get_key('E79A842DA34A1CA383F64A1546BB55F0885C65A4')
self.assertTrue(key)
def test_suite():
loader = unittest.TestLoader()
return loader.loadTestsFromName(__name__)
Copyright 2K16 - 2K18 Indonesian Hacker Rulez