Add test extension
authorJussi Laako <jussi.laako@linux.intel.com>
Tue, 15 Jan 2013 14:18:28 +0000 (16:18 +0200)
committerJussi Laako <jussi.laako@linux.intel.com>
Tue, 15 Jan 2013 14:18:28 +0000 (16:18 +0200)
13 files changed:
configure.ac
include/gsignond/gsignond-secret-storage.h
src/Makefile.am
src/common/db/gsignond-secret-storage.c
src/extensions/Makefile.am [new file with mode: 0644]
src/extensions/test/Makefile.am [new file with mode: 0644]
src/extensions/test/test-access-control-manager.c [new file with mode: 0644]
src/extensions/test/test-access-control-manager.h [new file with mode: 0644]
src/extensions/test/test-extension.c
src/extensions/test/test-secret-storage.c [new file with mode: 0644]
src/extensions/test/test-secret-storage.h [new file with mode: 0644]
src/extensions/test/test-storage-manager.c
src/extensions/test/test-storage-manager.h

index e34a3ad..7d7483c 100644 (file)
@@ -49,6 +49,8 @@ src/daemon/Makefile
 src/daemon/db/Makefile
 src/daemon/dbus/Makefile
 src/daemon/dbus/services/com.google.code.AccountsSSO.SingleSignOn.service
+src/extensions/Makefile
+src/extensions/test/Makefile
 src/plugins/Makefile
 src/plugins/password/Makefile
 test/Makefile
index 9a5f98e..b6d9ff0 100644 (file)
@@ -60,6 +60,7 @@ typedef struct _GSignondSecretStoragePrivate GSignondSecretStoragePrivate;
 
 typedef struct {
     GObject parent_instance;
+    GSignondConfig *config;
 
     /*< private >*/
     GSignondSecretStoragePrivate *priv;
index 5d77223..236aae9 100644 (file)
@@ -1 +1 @@
-SUBDIRS=common daemon plugins
+SUBDIRS=common daemon extensions plugins
index 9591481..8d43fd4 100644 (file)
@@ -47,7 +47,6 @@
 struct _GSignondSecretStoragePrivate
 {
     GSignondDbSecretDatabase *database;
-    GSignondConfig *config;
 };
 
 G_DEFINE_TYPE (GSignondSecretStorage, gsignond_secret_storage,
@@ -75,8 +74,8 @@ _set_property (GObject *object, guint prop_id, const GValue *value,
 
     switch (prop_id) {
         case PROP_CONFIG:
-            g_assert (self->priv->config == NULL);
-            self->priv->config = g_value_dup_object (value);
+            g_assert (self->config == NULL);
+            self->config = g_value_dup_object (value);
             break;
         default:
             G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -90,7 +89,7 @@ _get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
 
     switch (prop_id) {
         case PROP_CONFIG:
-            g_value_set_object (value, self->priv->config);
+            g_value_set_object (value, self->config);
             break;
         default:
             G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -111,9 +110,9 @@ _gsignond_secret_storage_dispose (GObject *gobject)
         self->priv->database = NULL;
     }
 
-    if (self->priv->config) {
-        g_object_unref (self->priv->config);
-        self->priv->config = NULL;
+    if (self->config) {
+        g_object_unref (self->config);
+        self->config = NULL;
     }
 
     /* Chain up to the parent class */
@@ -161,7 +160,7 @@ gsignond_secret_storage_init (GSignondSecretStorage *self)
 {
     self->priv = GSIGNOND_SECRET_STORAGE_GET_PRIVATE (self);
     self->priv->database = NULL;
-    self->priv->config = NULL;
+    self->config = NULL;
 }
 
 gboolean
@@ -171,9 +170,9 @@ gsignond_secret_storage_open_db (GSignondSecretStorage *self)
     const GHashTable *config_table = NULL;
 
     g_return_val_if_fail (GSIGNOND_IS_SECRET_STORAGE (self), FALSE);
-    g_return_val_if_fail (self->priv->config != NULL, FALSE);
+    g_return_val_if_fail (self->config != NULL, FALSE);
 
-    config_table = gsignond_config_get_config_table(self->priv->config);
+    config_table = gsignond_config_get_config_table(self->config);
     g_return_val_if_fail (config_table != NULL, FALSE);
 
     /* TODO: Fix it when config is updated
diff --git a/src/extensions/Makefile.am b/src/extensions/Makefile.am
new file mode 100644 (file)
index 0000000..02af5b3
--- /dev/null
@@ -0,0 +1 @@
+SUBDIRS = test
diff --git a/src/extensions/test/Makefile.am b/src/extensions/test/Makefile.am
new file mode 100644 (file)
index 0000000..cd4f835
--- /dev/null
@@ -0,0 +1,16 @@
+lib_LTLIBRARIES = libextension-test.la
+
+libextension_test_la_CPPFLAGS = \
+       -I$(top_srcdir) \
+       -I$(top_srcdir)/include \
+       $(GSIGNOND_CFLAGS)
+
+libextension_test_la_LIBS = \
+       $(GSIGNOND_LIBS)
+
+libextension_test_la_SOURCES = \
+       test-access-control-manager.c \
+       test-extension.c \
+       test-secret-storage.c \
+       test-storage-manager.c
+
diff --git a/src/extensions/test/test-access-control-manager.c b/src/extensions/test/test-access-control-manager.c
new file mode 100644 (file)
index 0000000..4d5d036
--- /dev/null
@@ -0,0 +1,59 @@
+/* vi: set et sw=4 ts=4 cino=t0,(0: */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of gsignond
+ *
+ * Copyright (C) 2013 Intel Corporation.
+ *
+ * Contact: Jussi Laako <jussi.laako@linux.intel.com>
+ *
+ * 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
+ */
+
+#include "test-access-control-manager.h"
+
+#define EXTENSION_TEST_ACCESS_CONTROL_MANAGER_GET_PRIVATE(obj) \
+    (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
+                                  EXTENSION_TYPE_TEST_ACCESS_CONTROL_MANAGER, \
+                                  ExtensionTestAccessControlManagerPrivate))
+
+struct _ExtensionTestAccessControlManagerPrivate
+{
+};
+
+G_DEFINE_TYPE (ExtensionTestAccessControlManager,
+               extension_test_access_control_manager,
+               GSIGNOND_TYPE_ACCESS_CONTROL_MANAGER);
+
+static void
+extension_test_access_control_manager_class_init (
+                                  ExtensionTestAccessControlManagerClass *klass)
+{
+    (void) klass;
+
+    /*GObjectClass *base = G_OBJECT_CLASS (klass);
+
+    g_type_class_add_private (klass,
+                              sizeof(ExtensionTestAccessControlManagerPrivate));*/
+}
+
+static void
+extension_test_access_control_manager_init (
+                                        ExtensionTestAccessControlManager *self)
+{
+    /*self->priv = EXTENSION_TEST_ACCESS_CONTROL_MANAGER_GET_PRIVATE (self);*/
+}
+
diff --git a/src/extensions/test/test-access-control-manager.h b/src/extensions/test/test-access-control-manager.h
new file mode 100644 (file)
index 0000000..9a0e1d6
--- /dev/null
@@ -0,0 +1,78 @@
+/* vi: set et sw=4 ts=4 cino=t0,(0: */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of gsignond
+ *
+ * Copyright (C) 2013 Intel Corporation.
+ *
+ * Contact: Jussi Laako <jussi.laako@linux.intel.com>
+ *
+ * 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
+ */
+
+#ifndef _TEST_ACCESS_CONTROL_MANAGER_H_
+#define _TEST_ACCESS_CONTROL_MANAGER_H_
+
+#include <glib-object.h>
+#include <gsignond/gsignond-extension-interface.h>
+
+G_BEGIN_DECLS
+
+#define EXTENSION_TYPE_TEST_ACCESS_CONTROL_MANAGER \
+    (extension_test_access_control_manager_get_type ())
+#define EXTENSION_TEST_ACCESS_CONTROL_MANAGER(obj) \
+    (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
+                                 EXTENSION_TYPE_TEST_ACCESS_CONTROL_MANAGER, \
+                                 ExtensionTestAccessControlManager))
+#define EXTENSION_IS_TEST_ACCESS_CONTROL_MANAGER(obj) \
+    (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
+                                 EXTENSION_TYPE_TEST_ACCESS_CONTROL_MANAGER))
+#define EXTENSION_TEST_ACCESS_CONTROL_MANAGER_CLASS(klass) \
+    (G_TYPE_CHECK_CLASS_CAST ((klass), \
+                              EXTENSION_TYPE_TEST_ACCESS_CONTROL_MANAGER, \
+                              ExtensionTestAccessControlManagerClass))
+#define EXTENSION_IS_TEST_ACCESS_CONTROL_MANAGER_CLASS(klass) \
+    (G_TYPE_CHECK_CLASS_TYPE ((klass), \
+                              EXTENSION_TYPE_TEST_ACCESS_CONTROL_MANAGER))
+#define EXTENSION_TEST_ACCESS_CONTROL_MANAGER_GET_CLASS(obj) \
+    (G_TYPE_INSTANCE_GET_CLASS ((obj), \
+                                EXTENSION_TYPE_TEST_ACCESS_CONTROL_MANAGER, \
+                                ExtensionTestAccessControlManagerClass))
+
+typedef struct _ExtensionTestAccessControlManager
+    ExtensionTestAccessControlManager;
+typedef struct _ExtensionTestAccessControlManagerClass
+    ExtensionTestAccessControlManagerClass;
+typedef struct _ExtensionTestAccessControlManagerPrivate
+    ExtensionTestAccessControlManagerPrivate;
+
+struct _ExtensionTestAccessControlManager
+{
+    GSignondAccessControlManager parent_instance;
+    ExtensionTestAccessControlManagerPrivate *priv;
+};
+
+struct _ExtensionTestAccessControlManagerClass
+{
+    GSignondAccessControlManagerClass parent_class;
+};
+
+GType extension_test_access_control_manager_get_type ();
+
+G_END_DECLS
+
+#endif  /* _TEST_ACCESS_CONTROL_MANAGER_H_ */
+
index 31f150c..a9ff6bd 100644 (file)
@@ -95,11 +95,13 @@ _get_access_control_manager (GSignondExtension *self, GSignondConfig *config)
 static void
 extension_test_class_init (ExtensionTestClass *klass)
 {
-    klass->get_extension_name = _get_extension_name;
-    klass->get_extension_version = _get_extension_version;
-    klass->get_storage_manager = _get_storage_manager;
-    klass->get_secret_storage = _get_secret_storage;
-    klass->get_access_control_manager = _get_access_control_manager;
+    GSignondExtensionClass *parent_class = GSIGNOND_EXTENSION_CLASS (klass);
+
+    parent_class->get_extension_name = _get_extension_name;
+    parent_class->get_extension_version = _get_extension_version;
+    parent_class->get_storage_manager = _get_storage_manager;
+    parent_class->get_secret_storage = _get_secret_storage;
+    parent_class->get_access_control_manager = _get_access_control_manager;
 }
 
 static void
diff --git a/src/extensions/test/test-secret-storage.c b/src/extensions/test/test-secret-storage.c
new file mode 100644 (file)
index 0000000..114efd5
--- /dev/null
@@ -0,0 +1,58 @@
+/* vi: set et sw=4 ts=4 cino=t0,(0: */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of gsignond
+ *
+ * Copyright (C) 2013 Intel Corporation.
+ *
+ * Contact: Jussi Laako <jussi.laako@linux.intel.com>
+ *
+ * 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
+ */
+
+#include "test-secret-storage.h"
+
+#define EXTENSION_TEST_SECRET_STORAGE_GET_PRIVATE(obj) \
+    (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
+                                  EXTENSION_TYPE_TEST_SECRET_STORAGE, \
+                                  ExtensionTestSecretStoragePrivate))
+
+struct _ExtensionTestSecretStoragePrivate
+{
+};
+
+G_DEFINE_TYPE (ExtensionTestSecretStorage,
+               extension_test_secret_storage,
+               GSIGNOND_TYPE_SECRET_STORAGE);
+
+static void
+extension_test_secret_storage_class_init (
+                                         ExtensionTestSecretStorageClass *klass)
+{
+    (void) klass;
+
+    /*GObjectClass *base = G_OBJECT_CLASS (klass);
+
+    g_type_class_add_private (klass,
+                              sizeof(ExtensionTestSecretStoragePrivate));*/
+}
+
+static void
+extension_test_secret_storage_init (ExtensionTestSecretStorage *self)
+{
+    /*self->priv = EXTENSION_TEST_SECRET_STORAGE_GET_PRIVATE (self);*/
+}
+
diff --git a/src/extensions/test/test-secret-storage.h b/src/extensions/test/test-secret-storage.h
new file mode 100644 (file)
index 0000000..ec7ce14
--- /dev/null
@@ -0,0 +1,73 @@
+/* vi: set et sw=4 ts=4 cino=t0,(0: */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of gsignond
+ *
+ * Copyright (C) 2013 Intel Corporation.
+ *
+ * Contact: Jussi Laako <jussi.laako@linux.intel.com>
+ *
+ * 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
+ */
+
+#ifndef _TEST_SECRET_STORAGE_H_
+#define _TEST_SECRET_STORAGE_H_
+
+#include <glib-object.h>
+#include <gsignond/gsignond-extension-interface.h>
+
+G_BEGIN_DECLS
+
+#define EXTENSION_TYPE_TEST_SECRET_STORAGE \
+    (extension_test_secret_storage_get_type ())
+#define EXTENSION_TEST_SECRET_STORAGE(obj) \
+    (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXTENSION_TYPE_TEST_SECRET_STORAGE, \
+                                 ExtensionTestSecretStorage))
+#define EXTENSION_IS_TEST_SECRET_STORAGE(obj) \
+    (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXTENSION_TYPE_TEST_SECRET_STORAGE))
+#define EXTENSION_TEST_SECRET_STORAGE_CLASS(klass) \
+    (G_TYPE_CHECK_CLASS_CAST ((klass), EXTENSION_TYPE_TEST_SECRET_STORAGE, \
+                              ExtensionTestSecretStorageClass))
+#define EXTENSION_IS_TEST_SECRET_STORAGE_CLASS(klass) \
+    (G_TYPE_CHECK_CLASS_TYPE ((klass), EXTENSION_TYPE_TEST_SECRET_STORAGE))
+#define EXTENSION_TEST_SECRET_STORAGE_GET_CLASS(obj) \
+    (G_TYPE_INSTANCE_GET_CLASS ((obj), EXTENSION_TYPE_TEST_SECRET_STORAGE, \
+                                ExtensionTestSecretStorageClass))
+
+typedef struct _ExtensionTestSecretStorage
+    ExtensionTestSecretStorage;
+typedef struct _ExtensionTestSecretStorageClass
+    ExtensionTestSecretStorageClass;
+typedef struct _ExtensionTestSecretStoragePrivate
+    ExtensionTestSecretStoragePrivate;
+
+struct _ExtensionTestSecretStorage
+{
+    GSignondSecretStorage parent_instance;
+    ExtensionTestSecretStoragePrivate *priv;
+};
+
+struct _ExtensionTestSecretStorageClass
+{
+    GSignondSecretStorageClass parent_class;
+};
+
+GType extension_test_secret_storage_get_type ();
+
+G_END_DECLS
+
+#endif  /* _TEST_SECRET_STORAGE_H_ */
+
index f55f726..3e25f55 100644 (file)
@@ -23,7 +23,7 @@
  * 02110-1301 USA
  */
 
-#include "gsignond/gsignond-storage-manager.h"
+#include "test-storage-manager.h"
 
 #define EXTENSION_TEST_STORAGE_MANAGER_GET_PRIVATE(obj) \
     (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
@@ -34,11 +34,13 @@ struct _ExtensionTestStorageManagerPrivate
 {
 };
 
-G_DEFINE_TYPE (ExtensionTestStorageManager, extension_test_storage_manager,
+G_DEFINE_TYPE (ExtensionTestStorageManager,
+               extension_test_storage_manager,
                GSIGNOND_TYPE_STORAGE_MANAGER);
 
 static void
-gsignond_storage_manager_class_init (ExtensionTestStorageManagerClass *klass)
+extension_test_storage_manager_class_init (
+                                        ExtensionTestStorageManagerClass *klass)
 {
     (void) klass;
 
@@ -49,16 +51,16 @@ gsignond_storage_manager_class_init (ExtensionTestStorageManagerClass *klass)
 }
 
 static void
-gsignond_storage_manager_init (ExtensionTestStorageManager *self)
+extension_test_storage_manager_init (ExtensionTestStorageManager *self)
 {
+    GSignondStorageManager *parent;
     /*self->priv = EXTENSION_TEST_STORAGE_MANAGER_GET_PRIVATE (self);*/
 
-    self->location = g_strdup (g_getenv ("EXTENSION_TEST_DATADIR"));
-    if (!self->location) {
-        self->location =
+    parent = GSIGNOND_STORAGE_MANAGER (self);
+    parent->location = g_strdup (g_getenv ("EXTENSION_TEST_DATADIR"));
+    if (!parent->location) {
+        parent->location =
             g_build_filename (g_get_tmp_dir (), "gsignond-test");
     }
-
-    self->config = NULL;
 }
 
index 5ceea00..be81ec7 100644 (file)
@@ -23,8 +23,8 @@
  * 02110-1301 USA
  */
 
-#ifndef _TEST_EXTENSION_H_
-#define _TEST_EXTENSION_H_
+#ifndef _TEST_STORAGE_MANAGER_H_
+#define _TEST_STORAGE_MANAGER_H_
 
 #include <glib-object.h>
 #include <gsignond/gsignond-extension-interface.h>
@@ -36,12 +36,12 @@ G_BEGIN_DECLS
 #define EXTENSION_TEST_STORAGE_MANAGER(obj) \
     (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXTENSION_TYPE_TEST_STORAGE_MANAGER, \
                                  ExtensionTestStorageManager))
-#define EXTENSION_IS_TEST(obj) \
+#define EXTENSION_IS_TEST_STORAGE_MANAGER(obj) \
     (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXTENSION_TYPE_TEST_STORAGE_MANAGER))
 #define EXTENSION_TEST_STORAGE_MANAGER_CLASS(klass) \
     (G_TYPE_CHECK_CLASS_CAST ((klass), EXTENSION_TYPE_TEST_STORAGE_MANAGER, \
                               ExtensionTestStorageManagerClass))
-#define EXTENSION_IS_TEST_CLASS(klass) \
+#define EXTENSION_IS_TEST_STORAGE_MANAGER_CLASS(klass) \
     (G_TYPE_CHECK_CLASS_TYPE ((klass), EXTENSION_TYPE_TEST_STORAGE_MANAGER))
 #define EXTENSION_TEST_STORAGE_MANAGER_GET_CLASS(obj) \
     (G_TYPE_INSTANCE_GET_CLASS ((obj), EXTENSION_TYPE_TEST_STORAGE_MANAGER, \
@@ -69,5 +69,5 @@ GType extension_test_storage_manager_get_type ();
 
 G_END_DECLS
 
-#endif  /* _TEST_EXTENSION_H_ */
+#endif  /* _TEST_STORAGE_MANAGER_H_ */