[libsecret] Fix introspection for secret_value_get() to return a uint8



commit ddd9bdd2e9fcc6009e54a17751d1002a039d180a
Author: Stef Walter <stefw gnome org>
Date:   Mon Feb 25 13:56:32 2013 +0100

    Fix introspection for secret_value_get() to return a uint8
    
    This works around a crash in pygobject.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=694448

 libsecret/secret-value.c         |    4 ++--
 libsecret/tests/test-unstable.py |   34 +++++++++++++++++++++++++++++++---
 2 files changed, 33 insertions(+), 5 deletions(-)
---
diff --git a/libsecret/secret-value.c b/libsecret/secret-value.c
index 7bd7bc2..a6fc5b8 100644
--- a/libsecret/secret-value.c
+++ b/libsecret/secret-value.c
@@ -151,13 +151,13 @@ secret_value_new_full (gchar *secret,
 /**
  * secret_value_get:
  * @value: the value
- * @length: (out): the length of the secret
+ * @length: the length of the secret
  *
  * Get the secret data in the #SecretValue. The value is not necessarily
  * null-terminated unless it was created with secret_value_new() or a
  * null-terminated string was passed to secret_value_new_full().
  *
- * Returns: (array length=length): the secret data
+ * Returns: (array length=length) (element-type guint8): the secret data
  */
 const gchar *
 secret_value_get (SecretValue *value,
diff --git a/libsecret/tests/test-unstable.py b/libsecret/tests/test-unstable.py
index 7f611e7..2aa6d2b 100644
--- a/libsecret/tests/test-unstable.py
+++ b/libsecret/tests/test-unstable.py
@@ -14,22 +14,50 @@
 import unittest
 
 from gi.repository import MockService as Mock
-from gi.repository import SecretUnstable as Secret, GLib
+from gi.repository import SecretUnstable, Secret, GLib
+
+EXAMPLE_SCHEMA = Secret.Schema.new('org.mock.type.Store',
+       Secret.SchemaFlags.NONE,
+       {
+               'number': Secret.SchemaAttributeType.INTEGER,
+               'string': Secret.SchemaAttributeType.STRING,
+               'even': Secret.SchemaAttributeType.BOOLEAN,
+       }
+)
+
+attributes = {
+       'number': '8',
+       'string': 'eight',
+       'even': 'true'
+}
 
 class TestStore(unittest.TestCase):
        def setUp(self):
                Mock.start("mock-service-normal.py")
 
        def tearDown(self):
-               Secret.Service.disconnect()
+               SecretUnstable.Service.disconnect()
                Mock.stop()
 
        def testSynchronous(self):
-               service = Secret.Service.get_sync(Secret.ServiceFlags.NONE, None);
+               service = SecretUnstable.Service.get_sync(SecretUnstable.ServiceFlags.NONE, None);
                path = service.read_alias_dbus_path_sync("default", None);
 
                # Just running this without error is good enough for us to test the unstable gir
                self.assertNotEqual(path, None);
 
+       def testValueGet(self):
+               Secret.password_store_sync(EXAMPLE_SCHEMA, attributes, Secret.COLLECTION_DEFAULT,
+                                          'the label', 'the password', None)
+
+               service = SecretUnstable.Service.get_sync(SecretUnstable.ServiceFlags.NONE, None)
+               items = service.search_sync(EXAMPLE_SCHEMA, { 'even': 'true' },
+                                                  SecretUnstable.SearchFlags.ALL | 
SecretUnstable.SearchFlags.LOAD_SECRETS,
+                                                  None)
+
+               item = items[0]
+               item_secret = item.get_secret()
+               self.assertEqual(item_secret.get(), "the password")
+
 if __name__ == '__main__':
                unittest.main()


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]