summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Untz <vuntz@novell.com>2010-02-16 20:53:00 +0100
committerVincent Untz <vuntz@novell.com>2010-02-16 20:53:00 +0100
commit760f8c470c4da0269b1e036d5f8b572c0cd7fe15 (patch)
treec02ab93cbd309986902bbd9ad3be90bacb825f32
parent19362203486ff2f4ef50027a0de55bc41c48ba67 (diff)
Port the tests to PolicyKit 1
-rw-r--r--src/test-cups-pk.c91
-rwxr-xr-xsrc/test-cups-pk.py53
2 files changed, 18 insertions, 126 deletions
diff --git a/src/test-cups-pk.c b/src/test-cups-pk.c
index d797d04..4300dc0 100644
--- a/src/test-cups-pk.c
+++ b/src/test-cups-pk.c
@@ -21,55 +21,16 @@
*
*/
-#include <unistd.h>
#include <gtk/gtk.h>
#include <glib.h>
-#include <glib-object.h>
#include <dbus/dbus-glib.h>
-#include <dbus/dbus-glib-lowlevel.h>
#define MECHANISM_BUS "org.opensuse.CupsPkHelper.Mechanism"
static gboolean
-do_auth (DBusGConnection *bus,
- const gchar *action,
- const gchar *result)
-{
- DBusGProxy *proxy;
- GError *error;
- gboolean ret;
- gboolean ret_gained_privilege;
-
- proxy = dbus_g_proxy_new_for_name (bus,
- "org.freedesktop.PolicyKit.AuthenticationAgent",
- "/",
- "org.freedesktop.PolicyKit.AuthenticationAgent");
-
- if (!proxy)
- return FALSE;
-
- error = NULL;
- ret_gained_privilege = FALSE;
- ret = dbus_g_proxy_call (proxy, "ObtainAuthorization", &error,
- G_TYPE_STRING, action, /* action_id */
- G_TYPE_UINT, 0, /* xid */
- G_TYPE_UINT, getpid (), /* pid */
- G_TYPE_INVALID,
- G_TYPE_BOOLEAN, &ret_gained_privilege,
- G_TYPE_INVALID);
-
- if (!ret) {
- g_print ("dbus error: %s\n", error->message);
- g_error_free (error);
- }
-
- return ret_gained_privilege;
-}
-
-static gboolean
printer_add (DBusGConnection *bus,
const char *printer_name,
const char *printer_uri,
@@ -117,8 +78,6 @@ int
main (int argc, char **argv)
{
DBusGConnection *system_bus;
- DBusGConnection *session_bus;
- gboolean try;
gboolean ret;
GError *error;
@@ -134,46 +93,18 @@ main (int argc, char **argv)
}
error = NULL;
- session_bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
- if (session_bus == NULL) {
- g_warning ("Could not connect to session bus: %s",
- error->message);
- g_error_free (error);
- return 1;
- }
+ ret = printer_add (system_bus,
+ "MyPrinter", "smb://really/cool",
+ "HP/Business_Inkjet_2200-chp2200.ppd.gz",
+ "This is my printer", "At home",
+ &error);
- try = TRUE;
- while (try) {
- try = FALSE;
- error = NULL;
- ret = printer_add (system_bus,
- "MyPrinter", "smb://really/cool",
- "HP/Business_Inkjet_2200-chp2200.ppd.gz",
- "This is my printer", "At home",
- &error);
-
- if (!ret) {
- if (dbus_g_error_has_name (error, MECHANISM_BUS".NotPrivileged")) {
- gchar **tokens;
-
- tokens = g_strsplit (error->message, " ", 2);
- g_error_free (error);
- if (g_strv_length (tokens) == 2) {
- /* Note: the async version fails
- * because of timeout if the user waits
- * too long */
- try = do_auth (session_bus, tokens[0], tokens[1]);
- if (!try)
- g_print ("not authorized\n");
- } else
- g_warning ("helper return string malformed");
- g_strfreev (tokens);
- } else if (error) {
- g_print ("dbus error: %s\n", error->message);
- g_error_free (error);
- } else
- g_print ("unknown error\n");
- }
+ if (!ret) {
+ if (error) {
+ g_print ("error: %s\n", error->message);
+ g_error_free (error);
+ } else
+ g_print ("unknown error\n");
}
return 0;
diff --git a/src/test-cups-pk.py b/src/test-cups-pk.py
index 901c7cf..532a68b 100755
--- a/src/test-cups-pk.py
+++ b/src/test-cups-pk.py
@@ -25,40 +25,6 @@ import sys
import dbus
-def pk_auth(bus, action, result):
- pk_auth_object =bus.get_object('org.freedesktop.PolicyKit.AuthenticationAgent', '/')
- pk_auth = dbus.Interface(pk_auth_object, 'org.freedesktop.PolicyKit.AuthenticationAgent')
-
- ret = pk_auth.ObtainAuthorization(action, dbus.UInt32(0), dbus.UInt32(os.getpid()))
-
- if not type(ret) == dbus.Boolean:
- return False
-
- return ret != 0
-
-def handle_exception_with_auth(session_bus, e):
- if e.get_dbus_name() != 'org.opensuse.CupsPkHelper.Mechanism.NotPrivileged':
- print 'dbus error: %s' % e
- return False
-
- tokens = e.get_dbus_message().split(' ', 2)
- if len(tokens) != 3:
- print 'helper return string malformed'
- return False
-
- try:
- # Note: the async version fails because of timeout if the user waits
- # too long
- ret = pk_auth(session_bus, tokens[0], tokens[1])
- except dbus.exceptions.DBusException, e_auth:
- print 'dbus error: %s' % e_auth
- return False
-
- if not ret:
- print 'not authorized'
-
- return ret
-
def removeprinter(cups_pk, printer_name):
error = cups_pk.PrinterRemove(printer_name)
@@ -108,23 +74,18 @@ def changeoption(cups_pk, printer_name, option, value):
print 'ouch: %s' % error
def main(args):
- session_bus = dbus.SessionBus()
system_bus = dbus.SystemBus()
cups_pk_object = system_bus.get_object('org.opensuse.CupsPkHelper.Mechanism', '/')
cups_pk_interface = dbus.Interface(cups_pk_object, 'org.opensuse.CupsPkHelper.Mechanism')
- while True:
- try:
- #removeprinter(cups_pk_interface, "MyPrinter")
- addprinter(cups_pk_interface, "MyPrinter", "smb://really/cool", "HP/Business_Inkjet_2200-chp2200.ppd.gz", "This is my printer", "At home")
- #changeoption(cups_pk_interface, "MyPrinter", "toto", "At home")
- #acceptjobs(cups_pk_interface, "MyPrinter", True, "")
- break
- except dbus.exceptions.DBusException, e:
- if handle_exception_with_auth(session_bus, e):
- continue
- break
+ try:
+ #removeprinter(cups_pk_interface, "MyPrinter")
+ addprinter(cups_pk_interface, "MyPrinter", "smb://really/cool", "HP/Business_Inkjet_2200-chp2200.ppd.gz", "This is my printer", "At home")
+ #changeoption(cups_pk_interface, "MyPrinter", "toto", "At home")
+ #acceptjobs(cups_pk_interface, "MyPrinter", True, "")
+ except dbus.exceptions.DBusException, e:
+ print 'Error: %s' % e
if __name__ == '__main__':