summaryrefslogtreecommitdiff
path: root/libnm-core/tests/test-general.c
diff options
context:
space:
mode:
Diffstat (limited to 'libnm-core/tests/test-general.c')
-rw-r--r--libnm-core/tests/test-general.c235
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 ();