[libgnome-keyring] Add Python test script for GI binding
- From: Martin Pitt <martinpitt src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgnome-keyring] Add Python test script for GI binding
- Date: Wed, 18 Jan 2012 09:15:03 +0000 (UTC)
commit fdf82e6ab47af17d3646a49cf53d70859e78de3e
Author: Martin Pitt <martin pitt ubuntu com>
Date: Sun Jan 15 11:30:47 2012 +0100
Add Python test script for GI binding
Run this with
LD_LIBRARY_PATH=library/.libs/ library/tests/test-gi.py -v
to test the locally built GI binding.
library/tests/Makefile.am | 3 +
library/tests/test-gi.py | 155 +++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 158 insertions(+), 0 deletions(-)
---
diff --git a/library/tests/Makefile.am b/library/tests/Makefile.am
index 6022eb1..55bcb43 100644
--- a/library/tests/Makefile.am
+++ b/library/tests/Makefile.am
@@ -23,6 +23,9 @@ noinst_PROGRAMS = \
frob-list-modified \
frob-default-keyring
+EXTRA_DIST = \
+ test-gi.py
+
test: $(TEST_PROGS)
gtester -k --verbose $(TEST_PROGS)
diff --git a/library/tests/test-gi.py b/library/tests/test-gi.py
new file mode 100755
index 0000000..c9a9b34
--- /dev/null
+++ b/library/tests/test-gi.py
@@ -0,0 +1,155 @@
+#!/usr/bin/python3
+#
+# Test GnomeKeyring GI binding
+# Copyright (C) 2012 Martin Pitt <martin pitt ubuntu com>
+#
+# The Gnome Keyring Library 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 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.
+
+import sys
+import os
+import unittest
+
+# use source tree typelib
+os.environ['GI_TYPELIB_PATH'] = 'library:' + os.environ.get('GI_TYPELIB_PATH', '')
+
+from gi.repository import GLib
+from gi.repository import GnomeKeyring
+
+# name of test keyring
+TEST_KEYRING = '__gnomekeyring_test'
+TEST_PWD = 'secret'
+
+class KeyringTest(unittest.TestCase):
+ def tearDown(self):
+ '''Ensure that we do no leave test keyring behind.'''
+
+ GnomeKeyring.delete_sync(TEST_KEYRING)
+
+ def test_info_default(self):
+ '''get_info_sync() for default keyring'''
+
+ # we cannot assume too much about the default keyring; it might be
+ # locked or not, and we should avoid poking in it too much
+ (result, info) = GnomeKeyring.get_info_sync(None)
+ self.assertEqual(result, GnomeKeyring.Result.OK)
+ self.assertTrue(info.get_is_locked() in (False, True))
+
+ def test_info_unknown(self):
+ '''get_info_sync() for unknown keyring'''
+
+ (result, info) = GnomeKeyring.get_info_sync(TEST_KEYRING + '_nonexisting')
+ self.assertEqual(result, GnomeKeyring.Result.NO_SUCH_KEYRING)
+
+ def test_create_lock(self):
+ '''create_sync() and locking/unlocking'''
+
+ # create
+ self.assertEqual(GnomeKeyring.create_sync(TEST_KEYRING, TEST_PWD),
+ GnomeKeyring.Result.OK)
+ (result, info) = GnomeKeyring.get_info_sync(TEST_KEYRING)
+ self.assertEqual(result, GnomeKeyring.Result.OK)
+ self.assertFalse(info.get_is_locked())
+
+ # try to create already existing ring
+ self.assertEqual(GnomeKeyring.create_sync(TEST_KEYRING, TEST_PWD),
+ GnomeKeyring.Result.KEYRING_ALREADY_EXISTS)
+
+ # lock
+ self.assertEqual(GnomeKeyring.lock_sync(TEST_KEYRING),
+ GnomeKeyring.Result.OK)
+ self.assertTrue(GnomeKeyring.get_info_sync(TEST_KEYRING)[1].get_is_locked())
+
+ # unlock with wrong password
+ self.assertEqual(GnomeKeyring.unlock_sync(TEST_KEYRING, 'h4ck'),
+ GnomeKeyring.Result.IO_ERROR)
+
+ # unlock with correct password
+ self.assertEqual(GnomeKeyring.unlock_sync(TEST_KEYRING, TEST_PWD),
+ GnomeKeyring.Result.OK)
+
+ def test_find_items(self):
+ '''find_items_sync()'''
+
+ search_attrs = GnomeKeyring.Attribute.list_new()
+
+ # no attributes, finds everything
+ (result, items) = GnomeKeyring.find_items_sync(
+ GnomeKeyring.ItemType.GENERIC_SECRET,
+ search_attrs)
+ self.assertEqual(result, GnomeKeyring.Result.OK)
+ print('(no attributes: %i matches) ' % len(items), end='', file=sys.stderr)
+ for item in items:
+ self.assertNotEqual(item.keyring, '')
+ for attr in GnomeKeyring.Attribute.list_to_glist(item.attributes):
+ self.assertTrue(attr.type in (GnomeKeyring.AttributeType.STRING,
+ GnomeKeyring.AttributeType.UINT32))
+ self.assertEqual(type(attr.name), type(''))
+ self.assertGreater(len(attr.name), 0)
+
+ # check that we can get the value
+ if attr.type == GnomeKeyring.AttributeType.STRING:
+ self.assertEqual(type(attr.get_string()), type(''))
+ else:
+ self.assertTrue(isinstance(attr.get_uint32()), long)
+
+ # search for unknown attribute, should have no results
+ GnomeKeyring.Attribute.list_append_string(search_attrs, 'unknown!_attr', '')
+ (result, items) = GnomeKeyring.find_items_sync(
+ GnomeKeyring.ItemType.GENERIC_SECRET,
+ search_attrs)
+ self.assertEqual(result, GnomeKeyring.Result.NO_MATCH)
+ self.assertEqual(len(items), 0)
+
+ def test_item_create_info(self):
+ '''item_create_sync(), item_get_info_sync(), list_item_ids_sync()'''
+
+ self.assertEqual(GnomeKeyring.create_sync(TEST_KEYRING, TEST_PWD),
+ GnomeKeyring.Result.OK)
+ self.assertEqual(GnomeKeyring.get_info_sync(TEST_KEYRING)[0], GnomeKeyring.Result.OK)
+
+ attrs = GnomeKeyring.Attribute.list_new()
+ GnomeKeyring.Attribute.list_append_string(attrs, 'context', 'testsuite')
+ GnomeKeyring.Attribute.list_append_uint32(attrs, 'answer', 42)
+
+ (result, id) = GnomeKeyring.item_create_sync(TEST_KEYRING,
+ GnomeKeyring.ItemType.GENERIC_SECRET, 'my_password', attrs,
+ 'my_secret', False)
+ self.assertEqual(result, GnomeKeyring.Result.OK)
+
+ # now query for it
+ (result, info) = GnomeKeyring.item_get_info_sync(TEST_KEYRING, id)
+ self.assertEqual(result, GnomeKeyring.Result.OK)
+ self.assertEqual(info.get_display_name(), 'my_password')
+ self.assertEqual(info.get_secret(), 'my_secret')
+
+ # list_item_ids_sync()
+ (result, items) = GnomeKeyring.list_item_ids_sync(TEST_KEYRING)
+ self.assertEqual(result, GnomeKeyring.Result.OK)
+ self.assertEqual(items, [id])
+
+ def test_result_str(self):
+ '''result_to_message()'''
+
+ self.assertEqual(GnomeKeyring.result_to_message(GnomeKeyring.Result.OK),
+ '')
+ self.assertEqual(
+ type(GnomeKeyring.result_to_message(GnomeKeyring.Result.NO_SUCH_KEYRING)),
+ type(''))
+
+
+#
+# main
+#
+
+if not GnomeKeyring.is_available():
+ print('GNOME keyring not available', file=sys.stderr)
+ sys.exit(0)
+unittest.main()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]