tests: Add VPN related tests
This adds tests for the VPN section. Note that the tests to check sorting are disabled currently as sorting is not implemented.
This commit is contained in:
parent
870b64b848
commit
e1e82ccda4
1 changed files with 293 additions and 0 deletions
|
@ -379,6 +379,264 @@ test_connection_multi_add_activate (NetworkPanelFixture *fixture,
|
||||||
g_assert_false (bt_header && gtk_widget_is_visible(bt_header));
|
g_assert_false (bt_header && gtk_widget_is_visible(bt_header));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_vpn_add (NetworkPanelFixture *fixture,
|
||||||
|
gconstpointer user_data)
|
||||||
|
{
|
||||||
|
NMConnection *conn;
|
||||||
|
NMSettingConnection *connsetting;
|
||||||
|
NMSettingVpn *setting;
|
||||||
|
g_autoptr(GError) error = NULL;
|
||||||
|
WAIT_DECL()
|
||||||
|
|
||||||
|
conn = nmtst_create_minimal_connection ("test_vpn_a", NULL, NM_SETTING_VPN_SETTING_NAME, &connsetting);
|
||||||
|
setting = nm_connection_get_setting_vpn (conn);
|
||||||
|
g_object_set (G_OBJECT (connsetting), NM_SETTING_CONNECTION_ID, "A", NULL);
|
||||||
|
g_object_set (G_OBJECT (setting), NM_SETTING_VPN_SERVICE_TYPE, "org.freedesktop.NetworkManager.vpnc", NULL);
|
||||||
|
|
||||||
|
nm_client_add_connection_async (fixture->client, conn, TRUE, NULL, add_cb, &info);
|
||||||
|
|
||||||
|
info.other_remaining = 1;
|
||||||
|
WAIT_CLIENT(fixture->client, 2, NM_CLIENT_CONNECTIONS, NM_CLIENT_CONNECTION_ADDED);
|
||||||
|
|
||||||
|
g_object_unref (conn);
|
||||||
|
|
||||||
|
WAIT_FINISHED(5)
|
||||||
|
|
||||||
|
g_clear_object (&info.rc);
|
||||||
|
|
||||||
|
/* Make sure it shows up. */
|
||||||
|
g_assert_nonnull (gtk_test_find_label (fixture->shell, "A VPN"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_vpn_add_remove (NetworkPanelFixture *fixture,
|
||||||
|
gconstpointer user_data)
|
||||||
|
{
|
||||||
|
NMConnection *conn;
|
||||||
|
NMSettingConnection *connsetting;
|
||||||
|
NMSettingVpn *setting;
|
||||||
|
g_autoptr(GError) error = NULL;
|
||||||
|
WAIT_DECL()
|
||||||
|
|
||||||
|
conn = nmtst_create_minimal_connection ("test_vpn_a", NULL, NM_SETTING_VPN_SETTING_NAME, &connsetting);
|
||||||
|
setting = nm_connection_get_setting_vpn (conn);
|
||||||
|
g_object_set (G_OBJECT (connsetting), NM_SETTING_CONNECTION_ID, "A", NULL);
|
||||||
|
g_object_set (G_OBJECT (setting), NM_SETTING_VPN_SERVICE_TYPE, "org.freedesktop.NetworkManager.vpnc", NULL);
|
||||||
|
|
||||||
|
nm_client_add_connection_async (fixture->client, conn, TRUE, NULL, add_cb, &info);
|
||||||
|
|
||||||
|
info.other_remaining = 1;
|
||||||
|
WAIT_CLIENT(fixture->client, 2, NM_CLIENT_CONNECTIONS, NM_CLIENT_CONNECTION_ADDED);
|
||||||
|
|
||||||
|
WAIT_FINISHED(5)
|
||||||
|
|
||||||
|
/* Make sure it shows up. */
|
||||||
|
g_assert_nonnull (gtk_test_find_label (fixture->shell, "A VPN"));
|
||||||
|
|
||||||
|
/* And delete again */
|
||||||
|
nm_remote_connection_delete_async (info.rc, NULL, delete_cb, &info);
|
||||||
|
|
||||||
|
info.other_remaining = 1;
|
||||||
|
WAIT_CLIENT(fixture->client, 2, NM_CLIENT_CONNECTIONS, NM_CLIENT_CONNECTION_REMOVED);
|
||||||
|
|
||||||
|
WAIT_FINISHED(5)
|
||||||
|
|
||||||
|
g_clear_object (&info.rc);
|
||||||
|
g_object_unref (conn);
|
||||||
|
|
||||||
|
/* Make sure it does not show up. */
|
||||||
|
g_assert_null (gtk_test_find_label (fixture->shell, "A VPN"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_vpn_updating (NetworkPanelFixture *fixture,
|
||||||
|
gconstpointer user_data)
|
||||||
|
{
|
||||||
|
NMConnection *conn;
|
||||||
|
NMSettingConnection *connsetting;
|
||||||
|
NMSettingVpn *setting;
|
||||||
|
g_autoptr(GError) error = NULL;
|
||||||
|
GVariantBuilder builder;
|
||||||
|
WAIT_DECL()
|
||||||
|
|
||||||
|
conn = nmtst_create_minimal_connection ("test_vpn_a", NULL, NM_SETTING_VPN_SETTING_NAME, &connsetting);
|
||||||
|
setting = nm_connection_get_setting_vpn (conn);
|
||||||
|
g_object_set (G_OBJECT (connsetting), NM_SETTING_CONNECTION_ID, "A", NULL);
|
||||||
|
g_object_set (G_OBJECT (setting), NM_SETTING_VPN_SERVICE_TYPE, "org.freedesktop.NetworkManager.vpnc", NULL);
|
||||||
|
|
||||||
|
nm_client_add_connection_async (fixture->client, conn, TRUE, NULL, add_cb, &info);
|
||||||
|
|
||||||
|
info.other_remaining = 1;
|
||||||
|
WAIT_CLIENT(fixture->client, 2, NM_CLIENT_CONNECTIONS, NM_CLIENT_CONNECTION_ADDED);
|
||||||
|
|
||||||
|
WAIT_FINISHED(5)
|
||||||
|
|
||||||
|
g_object_unref (conn);
|
||||||
|
|
||||||
|
/* Make sure it shows up. */
|
||||||
|
g_assert_nonnull (gtk_test_find_label (fixture->shell, "A VPN"));
|
||||||
|
|
||||||
|
/* Rename VPN from A to B */
|
||||||
|
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sa{sv}}"));
|
||||||
|
|
||||||
|
g_variant_builder_open (&builder, G_VARIANT_TYPE ("{sa{sv}}"));
|
||||||
|
g_variant_builder_add (&builder, "s", "connection");
|
||||||
|
|
||||||
|
g_variant_builder_open (&builder, G_VARIANT_TYPE ("a{sv}"));
|
||||||
|
g_variant_builder_open (&builder, G_VARIANT_TYPE ("{sv}"));
|
||||||
|
g_variant_builder_add (&builder, "s", "id");
|
||||||
|
g_variant_builder_add (&builder, "v", g_variant_new_string ("B"));
|
||||||
|
g_variant_builder_close (&builder);
|
||||||
|
|
||||||
|
g_variant_builder_open (&builder, G_VARIANT_TYPE ("{sv}"));
|
||||||
|
g_variant_builder_add (&builder, "s", "type");
|
||||||
|
g_variant_builder_add (&builder, "v", g_variant_new_string (nm_connection_get_connection_type (NM_CONNECTION (info.rc))));
|
||||||
|
g_variant_builder_close (&builder);
|
||||||
|
|
||||||
|
g_variant_builder_open (&builder, G_VARIANT_TYPE ("{sv}"));
|
||||||
|
g_variant_builder_add (&builder, "s", "uuid");
|
||||||
|
g_variant_builder_add (&builder, "v", g_variant_new_string (nm_connection_get_uuid (NM_CONNECTION (info.rc))));
|
||||||
|
g_variant_builder_close (&builder);
|
||||||
|
|
||||||
|
g_variant_builder_close (&builder);
|
||||||
|
g_variant_builder_close (&builder);
|
||||||
|
|
||||||
|
nmtstc_service_update_connection_variant (
|
||||||
|
fixture->sinfo,
|
||||||
|
nm_object_get_path (NM_OBJECT (info.rc)),
|
||||||
|
g_variant_builder_end (&builder),
|
||||||
|
FALSE);
|
||||||
|
g_variant_builder_clear (&builder);
|
||||||
|
|
||||||
|
WAIT_CONNECTION(info.rc, 1, "changed");
|
||||||
|
|
||||||
|
WAIT_FINISHED(5)
|
||||||
|
|
||||||
|
g_clear_object (&info.rc);
|
||||||
|
|
||||||
|
/* Make sure it the label got renamed. */
|
||||||
|
g_assert_null (gtk_test_find_label (fixture->shell, "A VPN"));
|
||||||
|
g_assert_nonnull (gtk_test_find_label (fixture->shell, "B VPN"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_vpn_sorting (NetworkPanelFixture *fixture,
|
||||||
|
gconstpointer user_data)
|
||||||
|
{
|
||||||
|
NMConnection *conn;
|
||||||
|
NMSettingConnection *connsetting;
|
||||||
|
NMSettingVpn *setting;
|
||||||
|
g_autoptr(GError) error = NULL;
|
||||||
|
GVariantBuilder builder;
|
||||||
|
GtkWidget *a, *b, *container;
|
||||||
|
GList *list;
|
||||||
|
WAIT_DECL()
|
||||||
|
|
||||||
|
conn = nmtst_create_minimal_connection ("test_vpn_a", NULL, NM_SETTING_VPN_SETTING_NAME, &connsetting);
|
||||||
|
setting = nm_connection_get_setting_vpn (conn);
|
||||||
|
g_object_set (G_OBJECT (connsetting), NM_SETTING_CONNECTION_ID, "A", NULL);
|
||||||
|
g_object_set (G_OBJECT (setting), NM_SETTING_VPN_SERVICE_TYPE, "org.freedesktop.NetworkManager.vpnc", NULL);
|
||||||
|
|
||||||
|
nm_client_add_connection_async (fixture->client, conn, TRUE, NULL, add_cb, &info);
|
||||||
|
|
||||||
|
info.other_remaining = 1;
|
||||||
|
WAIT_CLIENT(fixture->client, 2, NM_CLIENT_CONNECTIONS, NM_CLIENT_CONNECTION_ADDED);
|
||||||
|
|
||||||
|
WAIT_FINISHED(5)
|
||||||
|
|
||||||
|
g_object_unref (conn);
|
||||||
|
g_clear_object (&info.rc);
|
||||||
|
|
||||||
|
/* Create a second VPN which should be in front in the list */
|
||||||
|
conn = nmtst_create_minimal_connection ("test_vpn_b", NULL, NM_SETTING_VPN_SETTING_NAME, &connsetting);
|
||||||
|
setting = nm_connection_get_setting_vpn (conn);
|
||||||
|
g_object_set (G_OBJECT (connsetting), NM_SETTING_CONNECTION_ID, "1", NULL);
|
||||||
|
g_object_set (G_OBJECT (setting), NM_SETTING_VPN_SERVICE_TYPE, "org.freedesktop.NetworkManager.vpnc", NULL);
|
||||||
|
|
||||||
|
nm_client_add_connection_async (fixture->client, conn, TRUE, NULL, add_cb, &info);
|
||||||
|
|
||||||
|
info.other_remaining = 1;
|
||||||
|
WAIT_CLIENT(fixture->client, 2, NM_CLIENT_CONNECTIONS, NM_CLIENT_CONNECTION_ADDED);
|
||||||
|
|
||||||
|
WAIT_FINISHED(5)
|
||||||
|
|
||||||
|
g_object_unref (conn);
|
||||||
|
|
||||||
|
/* Make sure both VPNs are there. */
|
||||||
|
g_assert_nonnull (gtk_test_find_label (fixture->shell, "A VPN"));
|
||||||
|
g_assert_nonnull (gtk_test_find_label (fixture->shell, "1 VPN"));
|
||||||
|
|
||||||
|
/* And test that A is after 1 */
|
||||||
|
a = find_parent_of_type (gtk_test_find_label (fixture->shell, "A VPN"), GTK_TYPE_STACK);
|
||||||
|
b = find_parent_of_type (gtk_test_find_label (fixture->shell, "1 VPN"), GTK_TYPE_STACK);
|
||||||
|
container = gtk_widget_get_parent (a);
|
||||||
|
list = gtk_container_get_children (GTK_CONTAINER (container));
|
||||||
|
g_assert_cmpint (g_list_index (list, a), >, g_list_index (list, b));
|
||||||
|
g_list_free (list);
|
||||||
|
|
||||||
|
/* Rename VPN from 1 to B */
|
||||||
|
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sa{sv}}"));
|
||||||
|
|
||||||
|
g_variant_builder_open (&builder, G_VARIANT_TYPE ("{sa{sv}}"));
|
||||||
|
g_variant_builder_add (&builder, "s", "connection");
|
||||||
|
|
||||||
|
g_variant_builder_open (&builder, G_VARIANT_TYPE ("a{sv}"));
|
||||||
|
g_variant_builder_open (&builder, G_VARIANT_TYPE ("{sv}"));
|
||||||
|
g_variant_builder_add (&builder, "s", "id");
|
||||||
|
g_variant_builder_add (&builder, "v", g_variant_new_string ("B"));
|
||||||
|
g_variant_builder_close (&builder);
|
||||||
|
|
||||||
|
g_variant_builder_open (&builder, G_VARIANT_TYPE ("{sv}"));
|
||||||
|
g_variant_builder_add (&builder, "s", "type");
|
||||||
|
g_variant_builder_add (&builder, "v", g_variant_new_string (nm_connection_get_connection_type (NM_CONNECTION (info.rc))));
|
||||||
|
g_variant_builder_close (&builder);
|
||||||
|
|
||||||
|
g_variant_builder_open (&builder, G_VARIANT_TYPE ("{sv}"));
|
||||||
|
g_variant_builder_add (&builder, "s", "uuid");
|
||||||
|
g_variant_builder_add (&builder, "v", g_variant_new_string (nm_connection_get_uuid (NM_CONNECTION (info.rc))));
|
||||||
|
g_variant_builder_close (&builder);
|
||||||
|
|
||||||
|
g_variant_builder_close (&builder);
|
||||||
|
g_variant_builder_close (&builder);
|
||||||
|
|
||||||
|
nmtstc_service_update_connection_variant (
|
||||||
|
fixture->sinfo,
|
||||||
|
nm_object_get_path (NM_OBJECT (info.rc)),
|
||||||
|
g_variant_builder_end (&builder),
|
||||||
|
FALSE);
|
||||||
|
g_variant_builder_clear (&builder);
|
||||||
|
|
||||||
|
WAIT_CONNECTION(info.rc, 1, "changed");
|
||||||
|
|
||||||
|
WAIT_FINISHED(5)
|
||||||
|
|
||||||
|
g_clear_object (&info.rc);
|
||||||
|
|
||||||
|
/* Make sure it the label got renamed. */
|
||||||
|
g_assert_null (gtk_test_find_label (fixture->shell, "1 VPN"));
|
||||||
|
g_assert_nonnull (gtk_test_find_label (fixture->shell, "A VPN"));
|
||||||
|
g_assert_nonnull (gtk_test_find_label (fixture->shell, "B VPN"));
|
||||||
|
|
||||||
|
/* And test that A is before B */
|
||||||
|
a = find_parent_of_type (gtk_test_find_label (fixture->shell, "A VPN"), GTK_TYPE_STACK);
|
||||||
|
b = find_parent_of_type (gtk_test_find_label (fixture->shell, "B VPN"), GTK_TYPE_STACK);
|
||||||
|
container = gtk_widget_get_parent (a);
|
||||||
|
list = gtk_container_get_children (GTK_CONTAINER (container));
|
||||||
|
g_assert_cmpint (g_list_index (list, a), <, g_list_index (list, b));
|
||||||
|
g_list_free (list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
int
|
int
|
||||||
main (int argc, char **argv)
|
main (int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
@ -444,6 +702,41 @@ main (int argc, char **argv)
|
||||||
test_connection_multi_add_activate,
|
test_connection_multi_add_activate,
|
||||||
fixture_tear_down);
|
fixture_tear_down);
|
||||||
|
|
||||||
|
g_test_add ("/network-panel-wired/vpn-add",
|
||||||
|
NetworkPanelFixture,
|
||||||
|
NULL,
|
||||||
|
fixture_set_up_empty,
|
||||||
|
test_vpn_add,
|
||||||
|
fixture_tear_down);
|
||||||
|
|
||||||
|
g_test_add ("/network-panel-wired/vpn-add-remove",
|
||||||
|
NetworkPanelFixture,
|
||||||
|
NULL,
|
||||||
|
fixture_set_up_empty,
|
||||||
|
test_vpn_add_remove,
|
||||||
|
fixture_tear_down);
|
||||||
|
|
||||||
|
g_test_add ("/network-panel-wired/vpn-updating",
|
||||||
|
NetworkPanelFixture,
|
||||||
|
NULL,
|
||||||
|
fixture_set_up_empty,
|
||||||
|
test_vpn_updating,
|
||||||
|
fixture_tear_down);
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
/*
|
||||||
|
* FIXME: Currently broken, so test is disabled. Test will likely need
|
||||||
|
* updating when this is fixed to look for GTK_TYPE_LIST_BOX_ROW rather
|
||||||
|
* than GTK_TYPE_STACK.
|
||||||
|
*/
|
||||||
|
g_test_add ("/network-panel-wired/vpn-sorting",
|
||||||
|
NetworkPanelFixture,
|
||||||
|
NULL,
|
||||||
|
fixture_set_up_empty,
|
||||||
|
test_vpn_sorting,
|
||||||
|
fixture_tear_down);
|
||||||
|
#endif
|
||||||
|
|
||||||
return g_test_run ();
|
return g_test_run ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue