mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-05 18:08:05 +02:00
libnm/tests: extend tests for handling invalid connections in NMClient
This commit is contained in:
parent
72216f7359
commit
c5786f3839
1 changed files with 142 additions and 35 deletions
|
|
@ -1243,10 +1243,12 @@ _test_connection_invalid_find_connections (gpointer element, gpointer needle, gp
|
|||
}
|
||||
|
||||
#define ASSERT_IDX(i) \
|
||||
g_assert_cmpint (idx[i], >=, 0); \
|
||||
g_assert (path##i && *path##i); \
|
||||
g_assert (NM_IS_REMOTE_CONNECTION (connections->pdata[idx[i]])); \
|
||||
g_assert_cmpstr (nm_connection_get_path (connections->pdata[idx[i]]), ==, path##i);
|
||||
G_STMT_START { \
|
||||
g_assert_cmpint (idx[i], >=, 0); \
|
||||
g_assert (path##i && *path##i); \
|
||||
g_assert (NM_IS_REMOTE_CONNECTION (connections->pdata[idx[i]])); \
|
||||
g_assert_cmpstr (nm_connection_get_path (connections->pdata[idx[i]]), ==, path##i); \
|
||||
} G_STMT_END
|
||||
|
||||
static void
|
||||
test_connection_invalid (void)
|
||||
|
|
@ -1260,12 +1262,14 @@ test_connection_invalid (void)
|
|||
gs_free char *path0 = NULL;
|
||||
gs_free char *path1 = NULL;
|
||||
gs_free char *path2 = NULL;
|
||||
gs_free char *path3 = NULL;
|
||||
gs_free char *uuid2 = NULL;
|
||||
gsize n_found;
|
||||
gssize idx[3];
|
||||
gssize idx[4];
|
||||
gs_unref_variant GVariant *variant = NULL;
|
||||
|
||||
/**************************************************************************
|
||||
* Add two connection before starting libnm. One valid, one invalid.
|
||||
* Add three connections before starting libnm. One valid, two invalid.
|
||||
*************************************************************************/
|
||||
|
||||
connection = nmtst_create_minimal_connection ("test-connection-invalid-0", NULL, NM_SETTING_WIRED_SETTING_NAME, &s_con);
|
||||
|
|
@ -1289,26 +1293,45 @@ test_connection_invalid (void)
|
|||
FALSE,
|
||||
&path1);
|
||||
|
||||
g_object_set (s_con,
|
||||
NM_SETTING_CONNECTION_ID, "test-connection-invalid-2",
|
||||
NM_SETTING_CONNECTION_TYPE, "invalid-type-2",
|
||||
NM_SETTING_CONNECTION_UUID, nmtst_uuid_generate (),
|
||||
NULL);
|
||||
variant = nm_connection_to_dbus (connection, NM_CONNECTION_SERIALIZE_ALL);
|
||||
NMTST_VARIANT_EDITOR (variant,
|
||||
NMTST_VARIANT_ADD_SETTING ("invalid-type-2",
|
||||
nmtst_variant_new_vardict ("some-key1", g_variant_new_string ("some-value1"),
|
||||
"some-key2", g_variant_new_uint32 (4722))));
|
||||
g_variant_ref_sink (variant);
|
||||
nmtstc_service_add_connection_variant (my_sinfo,
|
||||
variant,
|
||||
FALSE,
|
||||
&path2);
|
||||
|
||||
g_test_expect_message ("libnm", G_LOG_LEVEL_WARNING, "*replace_settings: error updating connection /org/freedesktop/NetworkManager/Settings/Connection/3 settings: *");
|
||||
client = nm_client_new (NULL, &error);
|
||||
g_test_assert_expected_messages ();
|
||||
g_assert_no_error (error);
|
||||
|
||||
connections = nm_client_get_connections (client);
|
||||
g_assert (connections);
|
||||
|
||||
g_assert_cmpint (connections->len, ==, 2);
|
||||
g_assert_cmpint (connections->len, ==, 3);
|
||||
n_found = nmtst_find_all_indexes (connections->pdata,
|
||||
connections->len,
|
||||
(gpointer *) ((const char *[]) { path0, path1 }),
|
||||
2,
|
||||
(gpointer *) ((const char *[]) { path0, path1, path2 }),
|
||||
3,
|
||||
_test_connection_invalid_find_connections,
|
||||
NULL,
|
||||
idx);
|
||||
g_assert_cmpint (n_found, ==, 2);
|
||||
g_assert_cmpint (n_found, ==, 3);
|
||||
ASSERT_IDX (0);
|
||||
ASSERT_IDX (1);
|
||||
ASSERT_IDX (2);
|
||||
nmtst_assert_connection_verifies_without_normalization (connections->pdata[idx[0]]);
|
||||
nmtst_assert_connection_unnormalizable (connections->pdata[idx[1]], 0, 0);
|
||||
nmtst_assert_connection_unnormalizable (connections->pdata[idx[2]], 0, 0);
|
||||
|
||||
/**************************************************************************
|
||||
* After having the client up and running, add another invalid connection
|
||||
|
|
@ -1322,7 +1345,7 @@ test_connection_invalid (void)
|
|||
nmtstc_service_add_connection (my_sinfo,
|
||||
connection,
|
||||
FALSE,
|
||||
&path2);
|
||||
&path3);
|
||||
|
||||
|
||||
nmtst_main_loop_run (loop, 100);
|
||||
|
|
@ -1331,21 +1354,99 @@ test_connection_invalid (void)
|
|||
connections = nm_client_get_connections (client);
|
||||
g_assert (connections);
|
||||
|
||||
g_assert_cmpint (connections->len, ==, 3);
|
||||
g_assert_cmpint (connections->len, ==, 4);
|
||||
n_found = nmtst_find_all_indexes (connections->pdata,
|
||||
connections->len,
|
||||
(gpointer *) ((const char *[]) { path0, path1, path2 }),
|
||||
3,
|
||||
(gpointer *) ((const char *[]) { path0, path1, path2, path3 }),
|
||||
4,
|
||||
_test_connection_invalid_find_connections,
|
||||
NULL,
|
||||
idx);
|
||||
g_assert_cmpint (n_found, ==, 3);
|
||||
g_assert_cmpint (n_found, ==, 4);
|
||||
ASSERT_IDX (0);
|
||||
ASSERT_IDX (1);
|
||||
ASSERT_IDX (2);
|
||||
ASSERT_IDX (3);
|
||||
nmtst_assert_connection_verifies_without_normalization (connections->pdata[idx[0]]);
|
||||
nmtst_assert_connection_unnormalizable (connections->pdata[idx[1]], 0, 0);
|
||||
nmtst_assert_connection_unnormalizable (connections->pdata[idx[2]], 0, 0);
|
||||
nmtst_assert_connection_unnormalizable (connections->pdata[idx[3]], 0, 0);
|
||||
|
||||
/**************************************************************************
|
||||
* Modify the invalid connection (still invalid)
|
||||
*************************************************************************/
|
||||
|
||||
NMTST_VARIANT_EDITOR (variant,
|
||||
NMTST_VARIANT_CHANGE_PROPERTY ("invalid-type-2",
|
||||
"some-key2", "u", 4721));
|
||||
g_variant_ref_sink (variant);
|
||||
nmtstc_service_update_connection_variant (my_sinfo,
|
||||
path2,
|
||||
variant,
|
||||
FALSE);
|
||||
|
||||
g_test_expect_message ("libnm", G_LOG_LEVEL_WARNING, "*replace_settings: error updating connection /org/freedesktop/NetworkManager/Settings/Connection/3 settings: *");
|
||||
nmtst_main_loop_run (loop, 100);
|
||||
g_test_assert_expected_messages ();
|
||||
|
||||
connections = nm_client_get_connections (client);
|
||||
g_assert (connections);
|
||||
|
||||
g_assert_cmpint (connections->len, ==, 4);
|
||||
n_found = nmtst_find_all_indexes (connections->pdata,
|
||||
connections->len,
|
||||
(gpointer *) ((const char *[]) { path0, path1, path2, path3 }),
|
||||
4,
|
||||
_test_connection_invalid_find_connections,
|
||||
NULL,
|
||||
idx);
|
||||
g_assert_cmpint (n_found, ==, 4);
|
||||
ASSERT_IDX (0);
|
||||
ASSERT_IDX (1);
|
||||
ASSERT_IDX (2);
|
||||
ASSERT_IDX (3);
|
||||
nmtst_assert_connection_verifies_without_normalization (connections->pdata[idx[0]]);
|
||||
nmtst_assert_connection_unnormalizable (connections->pdata[idx[1]], 0, 0);
|
||||
nmtst_assert_connection_unnormalizable (connections->pdata[idx[2]], 0, 0);
|
||||
nmtst_assert_connection_unnormalizable (connections->pdata[idx[3]], 0, 0);
|
||||
|
||||
/**************************************************************************
|
||||
* Modify the invalid connection (becomes valid)
|
||||
*************************************************************************/
|
||||
|
||||
NMTST_VARIANT_EDITOR (variant,
|
||||
NMTST_VARIANT_DROP_SETTING ("invalid-type-2"));
|
||||
NMTST_VARIANT_EDITOR (variant,
|
||||
NMTST_VARIANT_CHANGE_PROPERTY (NM_SETTING_CONNECTION_SETTING_NAME,
|
||||
NM_SETTING_CONNECTION_TYPE, "s", NM_SETTING_WIRED_SETTING_NAME));
|
||||
g_variant_ref_sink (variant);
|
||||
nmtstc_service_update_connection_variant (my_sinfo,
|
||||
path2,
|
||||
variant,
|
||||
FALSE);
|
||||
|
||||
nmtst_main_loop_run (loop, 100);
|
||||
|
||||
connections = nm_client_get_connections (client);
|
||||
g_assert (connections);
|
||||
|
||||
g_assert_cmpint (connections->len, ==, 4);
|
||||
n_found = nmtst_find_all_indexes (connections->pdata,
|
||||
connections->len,
|
||||
(gpointer *) ((const char *[]) { path0, path1, path2, path3 }),
|
||||
4,
|
||||
_test_connection_invalid_find_connections,
|
||||
NULL,
|
||||
idx);
|
||||
g_assert_cmpint (n_found, ==, 4);
|
||||
ASSERT_IDX (0);
|
||||
ASSERT_IDX (1);
|
||||
ASSERT_IDX (2);
|
||||
ASSERT_IDX (3);
|
||||
nmtst_assert_connection_verifies_without_normalization (connections->pdata[idx[0]]);
|
||||
nmtst_assert_connection_unnormalizable (connections->pdata[idx[1]], 0, 0);
|
||||
nmtst_assert_connection_verifies_after_normalization (connections->pdata[idx[2]], 0, 0);
|
||||
nmtst_assert_connection_unnormalizable (connections->pdata[idx[3]], 0, 0);
|
||||
|
||||
/**************************************************************************
|
||||
* Modify the invalid connection (still invalid)
|
||||
|
|
@ -1355,7 +1456,7 @@ test_connection_invalid (void)
|
|||
NM_SETTING_CONNECTION_ID, "test-connection-invalid-2x",
|
||||
NULL);
|
||||
nmtstc_service_update_connection (my_sinfo,
|
||||
path2,
|
||||
path3,
|
||||
connection,
|
||||
FALSE);
|
||||
|
||||
|
|
@ -1364,22 +1465,24 @@ test_connection_invalid (void)
|
|||
connections = nm_client_get_connections (client);
|
||||
g_assert (connections);
|
||||
|
||||
g_assert_cmpint (connections->len, ==, 3);
|
||||
g_assert_cmpint (connections->len, ==, 4);
|
||||
n_found = nmtst_find_all_indexes (connections->pdata,
|
||||
connections->len,
|
||||
(gpointer *) ((const char *[]) { path0, path1, path2 }),
|
||||
3,
|
||||
(gpointer *) ((const char *[]) { path0, path1, path2, path3 }),
|
||||
4,
|
||||
_test_connection_invalid_find_connections,
|
||||
NULL,
|
||||
idx);
|
||||
g_assert_cmpint (n_found, ==, 3);
|
||||
g_assert_cmpint (n_found, ==, 4);
|
||||
ASSERT_IDX (0);
|
||||
ASSERT_IDX (1);
|
||||
ASSERT_IDX (2);
|
||||
ASSERT_IDX (3);
|
||||
nmtst_assert_connection_verifies_without_normalization (connections->pdata[idx[0]]);
|
||||
nmtst_assert_connection_unnormalizable (connections->pdata[idx[1]], 0, 0);
|
||||
nmtst_assert_connection_unnormalizable (connections->pdata[idx[2]], 0, 0);
|
||||
g_assert_cmpstr ("test-connection-invalid-2x", ==, nm_connection_get_id (connections->pdata[idx[2]]));
|
||||
nmtst_assert_connection_verifies_after_normalization (connections->pdata[idx[2]], 0, 0);
|
||||
nmtst_assert_connection_unnormalizable (connections->pdata[idx[3]], 0, 0);
|
||||
g_assert_cmpstr ("test-connection-invalid-2x", ==, nm_connection_get_id (connections->pdata[idx[3]]));
|
||||
|
||||
/**************************************************************************
|
||||
* Modify the invalid connection (now becomes valid)
|
||||
|
|
@ -1395,7 +1498,7 @@ test_connection_invalid (void)
|
|||
NULL);
|
||||
|
||||
nmtstc_service_update_connection (my_sinfo,
|
||||
path2,
|
||||
path3,
|
||||
connection,
|
||||
FALSE);
|
||||
|
||||
|
|
@ -1404,22 +1507,24 @@ test_connection_invalid (void)
|
|||
connections = nm_client_get_connections (client);
|
||||
g_assert (connections);
|
||||
|
||||
g_assert_cmpint (connections->len, ==, 3);
|
||||
g_assert_cmpint (connections->len, ==, 4);
|
||||
n_found = nmtst_find_all_indexes (connections->pdata,
|
||||
connections->len,
|
||||
(gpointer *) ((const char *[]) { path0, path1, path2 }),
|
||||
3,
|
||||
(gpointer *) ((const char *[]) { path0, path1, path2, path3 }),
|
||||
4,
|
||||
_test_connection_invalid_find_connections,
|
||||
NULL,
|
||||
idx);
|
||||
g_assert_cmpint (n_found, ==, 3);
|
||||
g_assert_cmpint (n_found, ==, 4);
|
||||
ASSERT_IDX (0);
|
||||
ASSERT_IDX (1);
|
||||
ASSERT_IDX (2);
|
||||
ASSERT_IDX (3);
|
||||
nmtst_assert_connection_verifies_without_normalization (connections->pdata[idx[0]]);
|
||||
nmtst_assert_connection_unnormalizable (connections->pdata[idx[1]], 0, 0);
|
||||
nmtst_assert_connection_verifies_without_normalization (connections->pdata[idx[2]]);
|
||||
g_assert_cmpstr ("test-connection-invalid-2z", ==, nm_connection_get_id (connections->pdata[idx[2]]));
|
||||
nmtst_assert_connection_verifies_after_normalization (connections->pdata[idx[2]], 0, 0);
|
||||
nmtst_assert_connection_verifies_without_normalization (connections->pdata[idx[3]]);
|
||||
g_assert_cmpstr ("test-connection-invalid-2z", ==, nm_connection_get_id (connections->pdata[idx[3]]));
|
||||
|
||||
/**************************************************************************
|
||||
* Modify the invalid connection and make it valid
|
||||
|
|
@ -1444,23 +1549,25 @@ test_connection_invalid (void)
|
|||
connections = nm_client_get_connections (client);
|
||||
g_assert (connections);
|
||||
|
||||
g_assert_cmpint (connections->len, ==, 3);
|
||||
g_assert_cmpint (connections->len, ==, 4);
|
||||
n_found = nmtst_find_all_indexes (connections->pdata,
|
||||
connections->len,
|
||||
(gpointer *) ((const char *[]) { path0, path1, path2 }),
|
||||
3,
|
||||
(gpointer *) ((const char *[]) { path0, path1, path2, path3 }),
|
||||
4,
|
||||
_test_connection_invalid_find_connections,
|
||||
NULL,
|
||||
idx);
|
||||
g_assert_cmpint (n_found, ==, 3);
|
||||
g_assert_cmpint (n_found, ==, 4);
|
||||
ASSERT_IDX (0);
|
||||
ASSERT_IDX (1);
|
||||
ASSERT_IDX (2);
|
||||
ASSERT_IDX (3);
|
||||
nmtst_assert_connection_verifies_without_normalization (connections->pdata[idx[0]]);
|
||||
nmtst_assert_connection_verifies_without_normalization (connections->pdata[idx[1]]);
|
||||
nmtst_assert_connection_verifies_without_normalization (connections->pdata[idx[2]]);
|
||||
nmtst_assert_connection_verifies_after_normalization (connections->pdata[idx[2]], 0, 0);
|
||||
nmtst_assert_connection_verifies_without_normalization (connections->pdata[idx[3]]);
|
||||
g_assert_cmpstr ("test-connection-invalid-1x", ==, nm_connection_get_id (connections->pdata[idx[1]]));
|
||||
g_assert_cmpstr ("test-connection-invalid-2z", ==, nm_connection_get_id (connections->pdata[idx[2]]));
|
||||
g_assert_cmpstr ("test-connection-invalid-2z", ==, nm_connection_get_id (connections->pdata[idx[3]]));
|
||||
|
||||
#undef ASSERT_IDX
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue