summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/test-utils-glib.c24
-rw-r--r--test/test-utils-glib.h4
2 files changed, 28 insertions, 0 deletions
diff --git a/test/test-utils-glib.c b/test/test-utils-glib.c
index 2caef25f..ccf87699 100644
--- a/test/test-utils-glib.c
+++ b/test/test-utils-glib.c
@@ -473,6 +473,30 @@ test_try_connect_to_bus_as_user (TestMainContext *ctx,
return conn;
}
+/*
+ * Raise G_IO_ERROR_NOT_SUPPORTED if the requested user is impossible.
+ */
+GDBusConnection *
+test_try_connect_gdbus_as_user (const char *address,
+ TestUser user,
+ GError **error)
+{
+ GDBusConnection *conn;
+
+ if (user != TEST_USER_ME && !become_other_user (user, error))
+ return NULL;
+
+ conn = g_dbus_connection_new_for_address_sync (address,
+ (G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION |
+ G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT),
+ NULL, NULL, error);
+
+ if (user != TEST_USER_ME)
+ back_to_root ();
+
+ return conn;
+}
+
static void
pid_died (GPid pid,
gint status,
diff --git a/test/test-utils-glib.h b/test/test-utils-glib.h
index bebd5dd6..9822a36d 100644
--- a/test/test-utils-glib.h
+++ b/test/test-utils-glib.h
@@ -29,6 +29,7 @@
#include <dbus/dbus.h>
+#include <gio/gio.h>
#include <glib.h>
#include "test-utils.h"
@@ -81,6 +82,9 @@ DBusConnection *test_try_connect_to_bus_as_user (TestMainContext *ctx,
const char *address,
TestUser user,
GError **error);
+GDBusConnection *test_try_connect_gdbus_as_user (const char *address,
+ TestUser user,
+ GError **error);
void test_kill_pid (GPid pid);