diff options
Diffstat (limited to 'libnm-core/tests/test-general.c')
-rw-r--r-- | libnm-core/tests/test-general.c | 235 |
1 files changed, 119 insertions, 116 deletions
diff --git a/libnm-core/tests/test-general.c b/libnm-core/tests/test-general.c index 59ff7df39e..9607940584 100644 --- a/libnm-core/tests/test-general.c +++ b/libnm-core/tests/test-general.c @@ -20,7 +20,6 @@ */ #include <glib.h> -#include <dbus/dbus-glib.h> #include <string.h> #include <nm-utils.h> @@ -40,7 +39,6 @@ #include "nm-setting-bond.h" #include "nm-utils.h" #include "nm-utils-private.h" -#include "nm-dbus-glib-types.h" #include "nm-test-utils.h" @@ -181,8 +179,8 @@ test_setting_vpn_update_secrets (void) { NMConnection *connection; NMSettingVpn *s_vpn; - GHashTable *settings, *vpn, *secrets; - GValue val = G_VALUE_INIT; + GVariantBuilder settings_builder, vpn_builder, secrets_builder; + GVariant *settings; gboolean success; GError *error = NULL; const char *tmp; @@ -202,18 +200,20 @@ test_setting_vpn_update_secrets (void) "error creating vpn setting"); nm_connection_add_setting (connection, NM_SETTING (s_vpn)); - settings = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_hash_table_destroy); - vpn = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_value_unset); - g_hash_table_insert (settings, NM_SETTING_VPN_SETTING_NAME, vpn); + g_variant_builder_init (&settings_builder, NM_VARIANT_TYPE_CONNECTION); + g_variant_builder_init (&vpn_builder, NM_VARIANT_TYPE_SETTING); + g_variant_builder_init (&secrets_builder, G_VARIANT_TYPE ("a{ss}")); - secrets = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, NULL); - g_value_init (&val, G_TYPE_HASH_TABLE); - g_value_take_boxed (&val, secrets); - g_hash_table_insert (vpn, NM_SETTING_VPN_SECRETS, &val); + g_variant_builder_add (&secrets_builder, "{ss}", key1, val1); + g_variant_builder_add (&secrets_builder, "{ss}", key2, val2); - /* Add some secrets */ - g_hash_table_insert (secrets, (char *) key1, (char *) val1); - g_hash_table_insert (secrets, (char *) key2, (char *) val2); + g_variant_builder_add (&vpn_builder, "{sv}", + NM_SETTING_VPN_SECRETS, + g_variant_builder_end (&secrets_builder)); + g_variant_builder_add (&settings_builder, "{sa{sv}}", + NM_SETTING_VPN_SETTING_NAME, + &vpn_builder); + settings = g_variant_builder_end (&settings_builder); success = nm_connection_update_secrets (connection, NM_SETTING_VPN_SETTING_NAME, settings, &error); ASSERT (success == TRUE, @@ -232,7 +232,7 @@ test_setting_vpn_update_secrets (void) ASSERT (strcmp (tmp, val2) == 0, "vpn-update-secrets", "unexpected key #2 value"); - g_hash_table_destroy (settings); + g_variant_unref (settings); g_object_unref (connection); } @@ -581,117 +581,132 @@ make_test_wsec_setting (const char *detail) return s_wsec; } +#define ASSERT_CONTAINS(vardict, key, test_name, msg) \ + { \ + GVariant *value; \ + value = g_variant_lookup_value (vardict, key, NULL); \ + ASSERT (value != NULL, test_name, msg); \ + g_variant_unref (value); \ + } + +#define ASSERT_NOT_CONTAINS(vardict, key, test_name, msg) \ + { \ + GVariant *value; \ + value = g_variant_lookup_value (vardict, key, NULL); \ + ASSERT (value == NULL, test_name, msg); \ + } + static void -test_setting_to_hash_all (void) +test_setting_to_variant_all (void) { NMSettingWirelessSecurity *s_wsec; - GHashTable *hash; + GVariant *hash; s_wsec = make_test_wsec_setting ("setting-to-hash-all"); - hash = nm_setting_to_hash (NM_SETTING (s_wsec), NM_SETTING_HASH_FLAG_ALL); + hash = nm_setting_to_variant (NM_SETTING (s_wsec), NM_SETTING_HASH_FLAG_ALL); /* Make sure all keys are there */ - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT), + ASSERT_CONTAINS (hash, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "setting-to-hash-all", "unexpectedly missing " NM_SETTING_WIRELESS_SECURITY_KEY_MGMT); - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME), + ASSERT_CONTAINS (hash, NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME, "setting-to-hash-all", "unexpectedly missing " NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME); - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_PSK), + ASSERT_CONTAINS (hash, NM_SETTING_WIRELESS_SECURITY_PSK, "setting-to-hash-all", "unexpectedly missing " NM_SETTING_WIRELESS_SECURITY_PSK); - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_WEP_KEY0), + ASSERT_CONTAINS (hash, NM_SETTING_WIRELESS_SECURITY_WEP_KEY0, "setting-to-hash-all", "unexpectedly missing " NM_SETTING_WIRELESS_SECURITY_WEP_KEY0); - g_hash_table_destroy (hash); + g_variant_unref (hash); g_object_unref (s_wsec); } static void -test_setting_to_hash_no_secrets (void) +test_setting_to_variant_no_secrets (void) { NMSettingWirelessSecurity *s_wsec; - GHashTable *hash; + GVariant *hash; s_wsec = make_test_wsec_setting ("setting-to-hash-no-secrets"); - hash = nm_setting_to_hash (NM_SETTING (s_wsec), NM_SETTING_HASH_FLAG_NO_SECRETS); + hash = nm_setting_to_variant (NM_SETTING (s_wsec), NM_SETTING_HASH_FLAG_NO_SECRETS); /* Make sure non-secret keys are there */ - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT), - "setting-to-hash-no-secrets", "unexpectedly missing " NM_SETTING_WIRELESS_SECURITY_KEY_MGMT); - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME), - "setting-to-hash-no-secrets", "unexpectedly missing " NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME); + ASSERT_CONTAINS (hash, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, + "setting-to-hash-no-secrets", "unexpectedly missing " NM_SETTING_WIRELESS_SECURITY_KEY_MGMT); + ASSERT_CONTAINS (hash, NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME, + "setting-to-hash-no-secrets", "unexpectedly missing " NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME); /* Make sure secrets are not there */ - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_PSK) == NULL, - "setting-to-hash-no-secrets", "unexpectedly present " NM_SETTING_WIRELESS_SECURITY_PSK); - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_WEP_KEY0) == NULL, - "setting-to-hash-no-secrets", "unexpectedly present " NM_SETTING_WIRELESS_SECURITY_WEP_KEY0); + ASSERT_NOT_CONTAINS (hash, NM_SETTING_WIRELESS_SECURITY_PSK, + "setting-to-hash-no-secrets", "unexpectedly present " NM_SETTING_WIRELESS_SECURITY_PSK); + ASSERT_NOT_CONTAINS (hash, NM_SETTING_WIRELESS_SECURITY_WEP_KEY0, + "setting-to-hash-no-secrets", "unexpectedly present " NM_SETTING_WIRELESS_SECURITY_WEP_KEY0); - g_hash_table_destroy (hash); + g_variant_unref (hash); g_object_unref (s_wsec); } static void -test_setting_to_hash_only_secrets (void) +test_setting_to_variant_only_secrets (void) { NMSettingWirelessSecurity *s_wsec; - GHashTable *hash; + GVariant *hash; s_wsec = make_test_wsec_setting ("setting-to-hash-only-secrets"); - hash = nm_setting_to_hash (NM_SETTING (s_wsec), NM_SETTING_HASH_FLAG_ONLY_SECRETS); + hash = nm_setting_to_variant (NM_SETTING (s_wsec), NM_SETTING_HASH_FLAG_ONLY_SECRETS); - /* Make sure non-secret keys are there */ - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT) == NULL, - "setting-to-hash-only-secrets", "unexpectedly present " NM_SETTING_WIRELESS_SECURITY_KEY_MGMT); - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME) == NULL, - "setting-to-hash-only-secrets", "unexpectedly present " NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME); + /* Make sure non-secret keys are not there */ + ASSERT_NOT_CONTAINS (hash, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, + "setting-to-hash-only-secrets", "unexpectedly present " NM_SETTING_WIRELESS_SECURITY_KEY_MGMT); + ASSERT_NOT_CONTAINS (hash, NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME, + "setting-to-hash-only-secrets", "unexpectedly present " NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME); - /* Make sure secrets are not there */ - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_PSK), - "setting-to-hash-only-secrets", "unexpectedly missing " NM_SETTING_WIRELESS_SECURITY_PSK); - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_WEP_KEY0), - "setting-to-hash-only-secrets", "unexpectedly missing " NM_SETTING_WIRELESS_SECURITY_WEP_KEY0); + /* Make sure secrets are there */ + ASSERT_CONTAINS (hash, NM_SETTING_WIRELESS_SECURITY_PSK, + "setting-to-hash-only-secrets", "unexpectedly missing " NM_SETTING_WIRELESS_SECURITY_PSK); + ASSERT_CONTAINS (hash, NM_SETTING_WIRELESS_SECURITY_WEP_KEY0, + "setting-to-hash-only-secrets", "unexpectedly missing " NM_SETTING_WIRELESS_SECURITY_WEP_KEY0); - g_hash_table_destroy (hash); + g_variant_unref (hash); g_object_unref (s_wsec); } static void -test_connection_to_hash_setting_name (void) +test_connection_to_variant_setting_name (void) { NMConnection *connection; NMSettingWirelessSecurity *s_wsec; - GHashTable *hash; + GVariant *hash; connection = nm_connection_new (); s_wsec = make_test_wsec_setting ("connection-to-hash-setting-name"); nm_connection_add_setting (connection, NM_SETTING (s_wsec)); - hash = nm_connection_to_hash (connection, NM_SETTING_HASH_FLAG_ALL); + hash = nm_connection_to_variant (connection, NM_SETTING_HASH_FLAG_ALL); /* Make sure the keys of the first level hash are setting names, not * the GType name of the setting objects. */ - ASSERT (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME) != NULL, - "connection-to-hash-setting-name", "unexpectedly missing " NM_SETTING_WIRELESS_SECURITY_SETTING_NAME); + ASSERT_CONTAINS (hash, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, + "connection-to-hash-setting-name", "unexpectedly missing " NM_SETTING_WIRELESS_SECURITY_SETTING_NAME); - g_hash_table_destroy (hash); + g_variant_unref (hash); g_object_unref (connection); } static void -test_setting_new_from_hash (void) +test_setting_new_from_variant (void) { NMSettingWirelessSecurity *s_wsec; - GHashTable *hash; + GVariant *hash; s_wsec = make_test_wsec_setting ("setting-to-hash-all"); - hash = nm_setting_to_hash (NM_SETTING (s_wsec), NM_SETTING_HASH_FLAG_ALL); + hash = nm_setting_to_variant (NM_SETTING (s_wsec), NM_SETTING_HASH_FLAG_ALL); g_object_unref (s_wsec); - s_wsec = (NMSettingWirelessSecurity *) nm_setting_new_from_hash (NM_TYPE_SETTING_WIRELESS_SECURITY, hash); - g_hash_table_destroy (hash); + s_wsec = (NMSettingWirelessSecurity *) nm_setting_new_from_variant (NM_TYPE_SETTING_WIRELESS_SECURITY, hash); + g_variant_unref (hash); g_assert (s_wsec); g_assert_cmpstr (nm_setting_wireless_security_get_key_mgmt (s_wsec), ==, "wpa-psk"); @@ -737,73 +752,61 @@ new_test_connection (void) return connection; } -static GValue * -string_to_gvalue (const char *str) -{ - GValue *val; - - val = g_slice_new0 (GValue); - g_value_init (val, G_TYPE_STRING); - g_value_set_string (val, str); - return val; -} - -static void -destroy_gvalue (gpointer data) -{ - g_value_unset ((GValue *) data); - g_slice_free (GValue, data); -} - -static GHashTable * +static GVariant * new_connection_hash (char **out_uuid, const char **out_expected_id, const char **out_expected_ip6_method) { - GHashTable *hash; - GHashTable *setting; + GVariantBuilder conn_builder, setting_builder; - hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_hash_table_destroy); + g_variant_builder_init (&conn_builder, NM_VARIANT_TYPE_CONNECTION); *out_uuid = nm_utils_uuid_generate (); *out_expected_id = "My happy connection"; *out_expected_ip6_method = NM_SETTING_IP6_CONFIG_METHOD_LINK_LOCAL; /* Connection setting */ - setting = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, destroy_gvalue); - g_hash_table_insert (setting, - g_strdup (NM_SETTING_NAME), - string_to_gvalue (NM_SETTING_CONNECTION_SETTING_NAME)); - g_hash_table_insert (setting, - g_strdup (NM_SETTING_CONNECTION_ID), - string_to_gvalue (*out_expected_id)); - g_hash_table_insert (setting, - g_strdup (NM_SETTING_CONNECTION_UUID), - string_to_gvalue (*out_uuid)); - g_hash_table_insert (setting, - g_strdup (NM_SETTING_CONNECTION_TYPE), - string_to_gvalue (NM_SETTING_WIRED_SETTING_NAME)); - g_hash_table_insert (hash, g_strdup (NM_SETTING_CONNECTION_SETTING_NAME), setting); + g_variant_builder_init (&setting_builder, NM_VARIANT_TYPE_SETTING); + g_variant_builder_add (&setting_builder, "{sv}", + NM_SETTING_NAME, + g_variant_new_string (NM_SETTING_CONNECTION_SETTING_NAME)); + g_variant_builder_add (&setting_builder, "{sv}", + NM_SETTING_CONNECTION_ID, + g_variant_new_string (*out_expected_id)); + g_variant_builder_add (&setting_builder, "{sv}", + NM_SETTING_CONNECTION_UUID, + g_variant_new_string (*out_uuid)); + g_variant_builder_add (&setting_builder, "{sv}", + NM_SETTING_CONNECTION_TYPE, + g_variant_new_string (NM_SETTING_WIRED_SETTING_NAME)); + + g_variant_builder_add (&conn_builder, "{sa{sv}}", + NM_SETTING_CONNECTION_SETTING_NAME, + &setting_builder); /* Wired setting */ - setting = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, destroy_gvalue); - g_hash_table_insert (hash, g_strdup (NM_SETTING_WIRED_SETTING_NAME), setting); + g_variant_builder_init (&setting_builder, NM_VARIANT_TYPE_SETTING); + g_variant_builder_add (&conn_builder, "{sa{sv}}", + NM_SETTING_WIRED_SETTING_NAME, + &setting_builder); /* IP6 */ - setting = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, destroy_gvalue); - g_hash_table_insert (setting, - g_strdup (NM_SETTING_IP6_CONFIG_METHOD), - string_to_gvalue (*out_expected_ip6_method)); - g_hash_table_insert (hash, g_strdup (NM_SETTING_IP6_CONFIG_SETTING_NAME), setting); + g_variant_builder_init (&setting_builder, NM_VARIANT_TYPE_SETTING); + g_variant_builder_add (&setting_builder, "{sv}", + NM_SETTING_IP6_CONFIG_METHOD, + g_variant_new_string (*out_expected_ip6_method)); + g_variant_builder_add (&conn_builder, "{sa{sv}}", + NM_SETTING_IP6_CONFIG_SETTING_NAME, + &setting_builder); - return hash; + return g_variant_builder_end (&conn_builder); } static void test_connection_replace_settings () { NMConnection *connection; - GHashTable *new_settings; + GVariant *new_settings; GError *error = NULL; gboolean success; NMSettingConnection *s_con; @@ -834,7 +837,7 @@ test_connection_replace_settings () g_assert_cmpstr (nm_setting_ip6_config_get_method (s_ip6), ==, expected_method); g_free (uuid); - g_hash_table_destroy (new_settings); + g_variant_unref (new_settings); g_object_unref (connection); } @@ -900,10 +903,10 @@ test_connection_replace_settings_from_connection () } static void -test_connection_new_from_hash () +test_connection_new_from_variant () { NMConnection *connection; - GHashTable *new_settings; + GVariant *new_settings; GError *error = NULL; NMSettingConnection *s_con; NMSettingIP6Config *s_ip6; @@ -914,7 +917,7 @@ test_connection_new_from_hash () g_assert (new_settings); /* Replace settings and test */ - connection = nm_connection_new_from_hash (new_settings, &error); + connection = nm_connection_new_from_variant (new_settings, &error); g_assert_no_error (error); g_assert (connection); @@ -931,7 +934,7 @@ test_connection_new_from_hash () g_assert_cmpstr (nm_setting_ip6_config_get_method (s_ip6), ==, expected_method); g_free (uuid); - g_hash_table_destroy (new_settings); + g_variant_unref (new_settings); g_object_unref (connection); } @@ -2579,9 +2582,9 @@ int main (int argc, char **argv) test_setting_gsm_apn_bad_chars (); test_setting_gsm_apn_underscore (); test_setting_gsm_without_number (); - test_setting_to_hash_all (); - test_setting_to_hash_no_secrets (); - test_setting_to_hash_only_secrets (); + test_setting_to_variant_all (); + test_setting_to_variant_no_secrets (); + test_setting_to_variant_only_secrets (); test_setting_compare_id (); test_setting_compare_secrets (NM_SETTING_SECRET_FLAG_AGENT_OWNED, NM_SETTING_COMPARE_FLAG_IGNORE_AGENT_OWNED_SECRETS, TRUE); test_setting_compare_secrets (NM_SETTING_SECRET_FLAG_NOT_SAVED, NM_SETTING_COMPARE_FLAG_IGNORE_NOT_SAVED_SECRETS, TRUE); @@ -2593,11 +2596,11 @@ int main (int argc, char **argv) test_setting_compare_vpn_secrets (NM_SETTING_SECRET_FLAG_NONE, NM_SETTING_COMPARE_FLAG_EXACT, FALSE); test_setting_old_uuid (); - test_connection_to_hash_setting_name (); - test_setting_new_from_hash (); + test_connection_to_variant_setting_name (); + test_setting_new_from_variant (); test_connection_replace_settings (); test_connection_replace_settings_from_connection (); - test_connection_new_from_hash (); + test_connection_new_from_variant (); test_connection_verify_sets_interface_name (); test_connection_normalize_virtual_iface_name (); |