PolicyKit: Branch 'master'
David Zeuthen
david at kemper.freedesktop.org
Sun Nov 4 08:08:40 PST 2007
polkit/polkit-policy-file-entry.c | 96 ++++++++++++++++++++++++++++++++++----
polkit/polkit-private.h | 11 +---
polkit/polkit-test.c | 1
polkit/polkit-test.h | 1
4 files changed, 92 insertions(+), 17 deletions(-)
New commits:
commit 93cf08d61764887af6fbf6896d333d9b30a31ce8
Author: David Zeuthen <davidz at redhat.com>
Date: Sun Nov 4 11:05:58 2007 -0500
add unit tests for PolKitPolicyFileEntry
We're only at 78@ coverage; need to reimplement GHashTable...
diff --git a/polkit/polkit-policy-file-entry.c b/polkit/polkit-policy-file-entry.c
index 71dbca4..1538522 100644
--- a/polkit/polkit-policy-file-entry.c
+++ b/polkit/polkit-policy-file-entry.c
@@ -43,6 +43,8 @@
#include "polkit-policy-file-entry.h"
#include "polkit-authorization-db.h"
#include "polkit-private.h"
+#include "polkit-test.h"
+#include "polkit-memory.h"
/**
* SECTION:polkit-policy-file-entry
@@ -80,9 +82,15 @@ _polkit_policy_file_entry_new (const char *action_id,
{
PolKitPolicyFileEntry *pfe;
- pfe = g_new0 (PolKitPolicyFileEntry, 1);
+ g_return_val_if_fail (action_id != NULL, NULL);
+
+ pfe = p_new0 (PolKitPolicyFileEntry, 1);
+ if (pfe == NULL)
+ goto error;
pfe->refcount = 1;
- pfe->action = g_strdup (action_id);
+ pfe->action = p_strdup (action_id);
+ if (pfe->action == NULL)
+ goto error;
if (! (polkit_authorization_db_get_capabilities () & POLKIT_AUTHORIZATION_DB_CAPABILITY_CAN_OBTAIN)) {
/* if we don't support obtaining authorizations
@@ -108,14 +116,28 @@ error:
return NULL;
}
-void
-_polkit_policy_file_entry_set_descriptions (PolKitPolicyFileEntry *policy_file_entry,
+polkit_bool_t
+_polkit_policy_file_entry_set_descriptions (PolKitPolicyFileEntry *pfe,
const char *policy_description,
const char *policy_message)
{
- g_return_if_fail (policy_file_entry != NULL);
- policy_file_entry->policy_description = g_strdup (policy_description);
- policy_file_entry->policy_message = g_strdup (policy_message);
+ g_return_val_if_fail (pfe != NULL, FALSE);
+
+ if (pfe->policy_description != NULL)
+ p_free (pfe->policy_description);
+ if (pfe->policy_message != NULL)
+ p_free (pfe->policy_message);
+
+ pfe->policy_description = p_strdup (policy_description);
+ pfe->policy_message = p_strdup (policy_message);
+
+ if (policy_description != NULL && pfe->policy_description == NULL)
+ return FALSE;
+
+ if (policy_message != NULL && pfe->policy_message == NULL)
+ return FALSE;
+
+ return TRUE;
}
/**
@@ -195,7 +217,7 @@ polkit_policy_file_entry_unref (PolKitPolicyFileEntry *policy_file_entry)
if (policy_file_entry->refcount > 0)
return;
- g_free (policy_file_entry->action);
+ p_free (policy_file_entry->action);
if (policy_file_entry->defaults != NULL)
polkit_policy_default_unref (policy_file_entry->defaults);
@@ -203,9 +225,10 @@ polkit_policy_file_entry_unref (PolKitPolicyFileEntry *policy_file_entry)
if (policy_file_entry->annotations != NULL)
g_hash_table_destroy (policy_file_entry->annotations);
- g_free (policy_file_entry->policy_description);
+ p_free (policy_file_entry->policy_description);
+ p_free (policy_file_entry->policy_message);
- g_free (policy_file_entry);
+ p_free (policy_file_entry);
}
/**
@@ -320,3 +343,56 @@ polkit_policy_file_entry_get_annotation (PolKitPolicyFileEntry *policy_file_entr
}
return value;
}
+
+#ifdef POLKIT_BUILD_TESTS
+
+static polkit_bool_t
+_run_test (void)
+{
+ PolKitPolicyFileEntry *pfe;
+ PolKitPolicyDefault *d;
+
+ if ((pfe = _polkit_policy_file_entry_new ("org.example-action",
+ POLKIT_RESULT_NO,
+ POLKIT_RESULT_ONLY_VIA_SELF_AUTH,
+ POLKIT_RESULT_ONLY_VIA_ADMIN_AUTH,
+ NULL)) != NULL) {
+
+ g_assert (strcmp (polkit_policy_file_entry_get_id (pfe), "org.example-action") == 0);
+
+ if (_polkit_policy_file_entry_set_descriptions (pfe,
+ "the desc",
+ "the msg")) {
+ g_assert (strcmp (polkit_policy_file_entry_get_action_description (pfe), "the desc") == 0);
+ g_assert (strcmp (polkit_policy_file_entry_get_action_message (pfe), "the msg") == 0);
+ }
+
+ if (_polkit_policy_file_entry_set_descriptions (pfe,
+ "the desc2",
+ "the msg2")) {
+ g_assert (strcmp (polkit_policy_file_entry_get_action_description (pfe), "the desc2") == 0);
+ g_assert (strcmp (polkit_policy_file_entry_get_action_message (pfe), "the msg2") == 0);
+ }
+
+ g_assert ((d = polkit_policy_file_entry_get_default (pfe)) != NULL);
+ g_assert (polkit_policy_default_get_allow_any (d) == POLKIT_RESULT_NO);
+ g_assert (polkit_policy_default_get_allow_inactive (d) == POLKIT_RESULT_ONLY_VIA_SELF_AUTH);
+ g_assert (polkit_policy_default_get_allow_active (d) == POLKIT_RESULT_ONLY_VIA_ADMIN_AUTH);
+
+ polkit_policy_file_entry_ref (pfe);
+ polkit_policy_file_entry_unref (pfe);
+ polkit_policy_file_entry_debug (pfe);
+ polkit_policy_file_entry_unref (pfe);
+ }
+
+ return TRUE;
+}
+
+PolKitTest _test_policy_file_entry = {
+ "polkit_policy_file_entry",
+ NULL,
+ NULL,
+ _run_test
+};
+
+#endif /* POLKIT_BUILD_TESTS */
diff --git a/polkit/polkit-private.h b/polkit/polkit-private.h
index e0c8c14..0274bd6 100644
--- a/polkit/polkit-private.h
+++ b/polkit/polkit-private.h
@@ -32,6 +32,7 @@
#include <glib.h>
#include <polkit/polkit.h>
+#include <polkit/polkit-memory.h>
POLKIT_BEGIN_DECLS
@@ -67,9 +68,9 @@ PolKitPolicyFileEntry *_polkit_policy_file_entry_new (const char *action_id,
PolKitResult defaults_allow_active,
GHashTable *annotations);
-void _polkit_policy_file_entry_set_descriptions (PolKitPolicyFileEntry *pfe,
- const char *policy_description,
- const char *policy_message);
+polkit_bool_t _polkit_policy_file_entry_set_descriptions (PolKitPolicyFileEntry *pfe,
+ const char *policy_description,
+ const char *policy_message);
PolKitPolicyDefault *_polkit_policy_default_new (PolKitResult defaults_allow_any,
@@ -82,10 +83,6 @@ PolKitPolicyFileEntry *_polkit_policy_file_entry_new (const char *action_id,
PolKitResult defaults_allow_active,
GHashTable *annotations);
-void _polkit_policy_file_entry_set_descriptions (PolKitPolicyFileEntry *pfe,
- const char *policy_description,
- const char *policy_message);
-
#ifdef POLKIT_AUTHDB_DUMMY
struct _PolKitAuthorizationDB
diff --git a/polkit/polkit-test.c b/polkit/polkit-test.c
index 071b7e3..a0a9569 100644
--- a/polkit/polkit-test.c
+++ b/polkit/polkit-test.c
@@ -38,6 +38,7 @@ static PolKitTest *tests[] = {
&_test_session,
&_test_caller,
&_test_policy_default,
+ &_test_policy_file_entry,
};
int
diff --git a/polkit/polkit-test.h b/polkit/polkit-test.h
index 7683441..6ccfb0d 100644
--- a/polkit/polkit-test.h
+++ b/polkit/polkit-test.h
@@ -51,6 +51,7 @@ extern PolKitTest _test_seat;
extern PolKitTest _test_session;
extern PolKitTest _test_caller;
extern PolKitTest _test_policy_default;
+extern PolKitTest _test_policy_file_entry;
POLKIT_END_DECLS
More information about the hal-commit
mailing list