summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Winship <danw@gnome.org>2014-10-10 17:10:28 -0400
committerDan Winship <danw@gnome.org>2014-10-19 09:27:48 -0400
commitbe8060f42fd3b3c15755e97f0c35886596a4732c (patch)
tree760061cb20094e9f86befa784fc74b406be42283
parentf96835b83c1a3a8e1f4046ef6899a4ec85e2b25e (diff)
downloadNetworkManager-be8060f42fd3b3c15755e97f0c35886596a4732c.tar.gz
libnm: add an object-creation-failed test
-rw-r--r--libnm/tests/test-nm-client.c52
-rwxr-xr-xtools/test-networkmanager-service.py8
2 files changed, 58 insertions, 2 deletions
diff --git a/libnm/tests/test-nm-client.c b/libnm/tests/test-nm-client.c
index 76469aac53..26ffbec4ac 100644
--- a/libnm/tests/test-nm-client.c
+++ b/libnm/tests/test-nm-client.c
@@ -1008,8 +1008,57 @@ test_activate_virtual (void)
g_clear_pointer (&sinfo, nm_test_service_cleanup);
}
+static void
+activate_failed_cb (GObject *object,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ NMClient *client = NM_CLIENT (object);
+ NMActiveConnection *ac;
+ GError *error = NULL;
+
+ ac = nm_client_activate_connection_finish (client, result, &error);
+ g_assert (ac == NULL);
+ g_assert_error (error, NM_OBJECT_ERROR, NM_OBJECT_ERROR_OBJECT_CREATION_FAILURE);
+ g_clear_error (&error);
+
+ g_main_loop_quit (loop);
+}
+
+static void
+test_activate_failed (void)
+{
+ NMClient *client;
+ NMDevice *device;
+ NMConnection *conn;
+ GError *error = NULL;
+
+ sinfo = nm_test_service_init ();
+ client = nm_client_new (NULL, &error);
+ g_assert_no_error (error);
+
+ device = nm_test_service_add_device (sinfo, client, "AddWiredDevice", "eth0");
+
+ /* Note that test-networkmanager-service.py checks for this exact name */
+ conn = nmtst_create_minimal_connection ("object-creation-failed-test", NULL,
+ NM_SETTING_WIRED_SETTING_NAME, NULL);
+
+ nm_client_add_and_activate_connection_async (client, conn, device, NULL,
+ NULL, activate_failed_cb, NULL);
+ g_test_expect_message ("libnm", G_LOG_LEVEL_WARNING, "*Method*doesn't exist*");
+ g_main_loop_run (loop);
+ g_test_assert_expected_messages ();
+
+ g_object_unref (conn);
+ g_object_unref (client);
+
+ g_clear_pointer (&sinfo, nm_test_service_cleanup);
+}
+
/*******************************************************************/
+NMTST_DEFINE ();
+
int
main (int argc, char **argv)
{
@@ -1019,7 +1068,7 @@ main (int argc, char **argv)
g_type_init ();
#endif
- g_test_init (&argc, &argv, NULL);
+ nmtst_init (&argc, &argv, TRUE);
loop = g_main_loop_new (NULL, FALSE);
@@ -1030,6 +1079,7 @@ main (int argc, char **argv)
g_test_add_func ("/libnm/client-nm-running", test_client_nm_running);
g_test_add_func ("/libnm/active-connections", test_active_connections);
g_test_add_func ("/libnm/activate-virtual", test_activate_virtual);
+ g_test_add_func ("/libnm/activate-failed", test_activate_failed);
return g_test_run ();
}
diff --git a/tools/test-networkmanager-service.py b/tools/test-networkmanager-service.py
index 064336fa39..d98174ce20 100755
--- a/tools/test-networkmanager-service.py
+++ b/tools/test-networkmanager-service.py
@@ -717,7 +717,13 @@ class NetworkManager(ExportedObj):
ac = ActiveConnection(self._bus, device, connection, None)
self.active_connections.append(ac)
self.__notify(PM_ACTIVE_CONNECTIONS)
- GLib.timeout_add(50, set_device_ac_cb, device, ac)
+
+ if s_con['id'] == 'object-creation-failed-test':
+ self.active_connections.remove(ac)
+ ac.remove_from_connection()
+ else:
+ GLib.timeout_add(50, set_device_ac_cb, device, ac)
+
return to_path(ac)
@dbus.service.method(dbus_interface=IFACE_NM, in_signature='a{sa{sv}}oo', out_signature='oo')