diff options
| author | Michael Biebl <biebl@debian.org> | 2015-05-05 17:48:57 +0200 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2015-05-05 17:48:57 +0200 |
| commit | f408e27bccfacf347605a8d98649975a68f38a17 (patch) | |
| tree | 654fd6695c31511baf919b1c0870d119a352ed75 /libnm-core/tests/test-general.c | |
| parent | 2c032d8f1c6292c1338a615e6ec40252889ba85c (diff) | |
Imported Upstream version 1.0.2 upstream/1.0.2
Diffstat (limited to 'libnm-core/tests/test-general.c')
| -rw-r--r-- | libnm-core/tests/test-general.c | 202 |
1 files changed, 192 insertions, 10 deletions
diff --git a/libnm-core/tests/test-general.c b/libnm-core/tests/test-general.c index d309c800..7df4e57a 100644 --- a/libnm-core/tests/test-general.c +++ b/libnm-core/tests/test-general.c @@ -25,6 +25,7 @@ #include <string.h> #include <nm-utils.h> +#include "gsystem-local-alloc.h" #include "nm-setting-private.h" #include "nm-utils.h" @@ -648,7 +649,7 @@ test_setting_ip4_config_address_data (void) static void test_setting_gsm_apn_spaces (void) { - NMSettingGsm *s_gsm; + gs_unref_object NMSettingGsm *s_gsm = NULL; const char *tmp; s_gsm = (NMSettingGsm *) nm_setting_gsm_new (); @@ -676,7 +677,7 @@ test_setting_gsm_apn_spaces (void) static void test_setting_gsm_apn_bad_chars (void) { - NMSettingGsm *s_gsm; + gs_unref_object NMSettingGsm *s_gsm = NULL; s_gsm = (NMSettingGsm *) nm_setting_gsm_new (); ASSERT (s_gsm != NULL, @@ -714,7 +715,7 @@ test_setting_gsm_apn_bad_chars (void) static void test_setting_gsm_apn_underscore (void) { - NMSettingGsm *s_gsm; + gs_unref_object NMSettingGsm *s_gsm = NULL; s_gsm = (NMSettingGsm *) nm_setting_gsm_new (); g_assert (s_gsm); @@ -729,7 +730,7 @@ test_setting_gsm_apn_underscore (void) static void test_setting_gsm_without_number (void) { - NMSettingGsm *s_gsm; + gs_unref_object NMSettingGsm *s_gsm = NULL; s_gsm = (NMSettingGsm *) nm_setting_gsm_new (); g_assert (s_gsm); @@ -1140,6 +1141,183 @@ test_setting_new_from_dbus_enum (void) g_object_unref (s_serial); } +static void +test_setting_new_from_dbus_bad (void) +{ + NMSetting *setting; + NMConnection *conn; + GBytes *ssid; + GPtrArray *addrs; + GVariant *orig_dict, *dict; + GError *error = NULL; + + /* We want to test: + * - ordinary scalar properties + * - string properties + * - GBytes-valued properties (which are handled specially by set_property_from_dbus()) + * - enum/flags-valued properties + * - overridden properties + * - transformed properties + * + * No single setting class has examples of all of these, so we need two settings. + */ + + conn = nm_simple_connection_new (); + + setting = nm_setting_connection_new (); + g_object_set (setting, + NM_SETTING_CONNECTION_ID, "test", + NM_SETTING_CONNECTION_UUID, "83c5a841-1759-4cdb-bfce-8d4087956497", + NULL); + nm_connection_add_setting (conn, setting); + + setting = nm_setting_wireless_new (); + ssid = g_bytes_new ("my-ssid", 7); + g_object_set (setting, + /* scalar */ + NM_SETTING_WIRELESS_RATE, 100, + /* string */ + NM_SETTING_WIRELESS_MODE, NM_SETTING_WIRELESS_MODE_INFRA, + /* GBytes */ + NM_SETTING_WIRELESS_SSID, ssid, + /* transformed */ + NM_SETTING_WIRELESS_BSSID, "00:11:22:33:44:55", + NULL); + g_bytes_unref (ssid); + nm_connection_add_setting (conn, setting); + + setting = nm_setting_ip6_config_new (); + addrs = g_ptr_array_new_with_free_func ((GDestroyNotify) nm_ip_address_unref); + g_ptr_array_add (addrs, nm_ip_address_new (AF_INET6, "1234::5678", 64, NULL)); + g_object_set (setting, + /* enum */ + NM_SETTING_IP6_CONFIG_IP6_PRIVACY, NM_SETTING_IP6_CONFIG_PRIVACY_PREFER_PUBLIC_ADDR, + /* overridden */ + NM_SETTING_IP_CONFIG_ADDRESSES, addrs, + /* (needed in order to verify()) */ + NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_AUTO, + NULL); + g_ptr_array_unref (addrs); + nm_connection_add_setting (conn, setting); + + orig_dict = nm_connection_to_dbus (conn, NM_CONNECTION_SERIALIZE_ALL); + g_object_unref (conn); + + /* sanity-check */ + conn = nm_simple_connection_new_from_dbus (orig_dict, &error); + g_assert_no_error (error); + g_assert (conn); + g_object_unref (conn); + + /* Compatible mismatches */ + + dict = g_variant_ref (orig_dict); + NMTST_VARIANT_EDITOR (dict, + NMTST_VARIANT_CHANGE_PROPERTY (NM_SETTING_WIRELESS_SETTING_NAME, + NM_SETTING_WIRELESS_RATE, + "i", 10); + ); + conn = nm_simple_connection_new_from_dbus (dict, &error); + g_assert (conn); + g_assert_no_error (error); + setting = nm_connection_get_setting (conn, NM_TYPE_SETTING_WIRELESS); + g_assert (setting); + g_assert_cmpint (nm_setting_wireless_get_rate (NM_SETTING_WIRELESS (setting)), ==, 10); + g_object_unref (conn); + g_variant_unref (dict); + + dict = g_variant_ref (orig_dict); + NMTST_VARIANT_EDITOR (dict, + NMTST_VARIANT_CHANGE_PROPERTY (NM_SETTING_IP6_CONFIG_SETTING_NAME, + NM_SETTING_IP6_CONFIG_IP6_PRIVACY, + "i", NM_SETTING_IP6_CONFIG_PRIVACY_PREFER_TEMP_ADDR); + ); + conn = nm_simple_connection_new_from_dbus (dict, &error); + g_assert (conn); + g_assert_no_error (error); + setting = nm_connection_get_setting (conn, NM_TYPE_SETTING_IP6_CONFIG); + g_assert (setting); + g_assert_cmpint (nm_setting_ip6_config_get_ip6_privacy (NM_SETTING_IP6_CONFIG (setting)), ==, NM_SETTING_IP6_CONFIG_PRIVACY_PREFER_TEMP_ADDR); + g_object_unref (conn); + g_variant_unref (dict); + + /* Incompatible mismatches */ + + dict = g_variant_ref (orig_dict); + NMTST_VARIANT_EDITOR (dict, + NMTST_VARIANT_CHANGE_PROPERTY (NM_SETTING_WIRELESS_SETTING_NAME, + NM_SETTING_WIRELESS_RATE, + "s", "ten"); + ); + conn = nm_simple_connection_new_from_dbus (dict, &error); + g_assert_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_INVALID_PROPERTY); + g_assert (g_str_has_prefix (error->message, "802-11-wireless.rate:")); + g_clear_error (&error); + g_variant_unref (dict); + + dict = g_variant_ref (orig_dict); + NMTST_VARIANT_EDITOR (dict, + NMTST_VARIANT_CHANGE_PROPERTY (NM_SETTING_WIRELESS_SETTING_NAME, + NM_SETTING_WIRELESS_MODE, + "b", FALSE); + ); + conn = nm_simple_connection_new_from_dbus (dict, &error); + g_assert_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_INVALID_PROPERTY); + g_assert (g_str_has_prefix (error->message, "802-11-wireless.mode:")); + g_clear_error (&error); + g_variant_unref (dict); + + dict = g_variant_ref (orig_dict); + NMTST_VARIANT_EDITOR (dict, + NMTST_VARIANT_CHANGE_PROPERTY (NM_SETTING_WIRELESS_SETTING_NAME, + NM_SETTING_WIRELESS_SSID, + "s", "fred"); + ); + conn = nm_simple_connection_new_from_dbus (dict, &error); + g_assert_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_INVALID_PROPERTY); + g_assert (g_str_has_prefix (error->message, "802-11-wireless.ssid:")); + g_clear_error (&error); + g_variant_unref (dict); + + dict = g_variant_ref (orig_dict); + NMTST_VARIANT_EDITOR (dict, + NMTST_VARIANT_CHANGE_PROPERTY (NM_SETTING_WIRELESS_SETTING_NAME, + NM_SETTING_WIRELESS_BSSID, + "i", 42); + ); + conn = nm_simple_connection_new_from_dbus (dict, &error); + g_assert_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_INVALID_PROPERTY); + g_assert (g_str_has_prefix (error->message, "802-11-wireless.bssid:")); + g_clear_error (&error); + g_variant_unref (dict); + + dict = g_variant_ref (orig_dict); + NMTST_VARIANT_EDITOR (dict, + NMTST_VARIANT_CHANGE_PROPERTY (NM_SETTING_IP6_CONFIG_SETTING_NAME, + NM_SETTING_IP6_CONFIG_IP6_PRIVACY, + "s", "private"); + ); + conn = nm_simple_connection_new_from_dbus (dict, &error); + g_assert_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_INVALID_PROPERTY); + g_assert (g_str_has_prefix (error->message, "ipv6.ip6-privacy:")); + g_clear_error (&error); + g_variant_unref (dict); + + dict = g_variant_ref (orig_dict); + NMTST_VARIANT_EDITOR (dict, + NMTST_VARIANT_CHANGE_PROPERTY (NM_SETTING_IP6_CONFIG_SETTING_NAME, + NM_SETTING_IP_CONFIG_ADDRESSES, + "s", "1234::5678"); + ); + conn = nm_simple_connection_new_from_dbus (dict, &error); + g_assert_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_INVALID_PROPERTY); + g_assert (g_str_has_prefix (error->message, "ipv6.addresses:")); + g_clear_error (&error); + g_variant_unref (dict); + + g_variant_unref (orig_dict); +} + static NMConnection * new_test_connection (void) { @@ -1374,6 +1552,7 @@ test_connection_replace_settings_bad (void) connection = new_test_connection (); success = nm_connection_replace_settings (connection, new_settings, &error); g_assert_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_INVALID_SETTING); + g_clear_error (&error); g_assert (!success); g_assert (nm_connection_verify (connection, NULL)); @@ -2211,7 +2390,7 @@ test_connection_bad_base_types (void) static void test_setting_compare_id (void) { - NMSetting *old, *new; + gs_unref_object NMSetting *old = NULL, *new = NULL; gboolean success; old = nm_setting_connection_new (); @@ -2235,7 +2414,7 @@ test_setting_compare_id (void) static void test_setting_compare_timestamp (void) { - NMSetting *old, *new; + gs_unref_object NMSetting *old = NULL, *new = NULL; gboolean success; old = nm_setting_connection_new (); @@ -2280,7 +2459,7 @@ static void test_setting_compare_secrets (gconstpointer test_data) { const TestDataCompareSecrets *data = test_data; - NMSetting *old, *new; + gs_unref_object NMSetting *old = NULL, *new = NULL; gboolean success; /* Make sure that a connection with transient/unsaved secrets compares @@ -2311,7 +2490,7 @@ static void test_setting_compare_vpn_secrets (gconstpointer test_data) { const TestDataCompareSecrets *data = test_data; - NMSetting *old, *new; + gs_unref_object NMSetting *old = NULL, *new = NULL; gboolean success; /* Make sure that a connection with transient/unsaved secrets compares @@ -2587,7 +2766,7 @@ test_setting_connection_changed_signal (void) NMConnection *connection; gboolean changed = FALSE; NMSettingConnection *s_con; - char *uuid; + gs_free char *uuid = NULL; connection = nm_simple_connection_new (); g_signal_connect (connection, @@ -2993,7 +3172,7 @@ test_setting_802_1x_changed_signal (void) static void test_setting_old_uuid (void) { - NMSetting *setting; + gs_unref_object NMSetting *setting = NULL; /* NetworkManager-0.9.4.0 generated 40-character UUIDs with no dashes, * like this one. Test that we maintain compatibility. */ @@ -3702,6 +3881,7 @@ test_setting_ip6_gateway (void) value = g_variant_lookup_value (ip6_dict, NM_SETTING_IP_CONFIG_GATEWAY, G_VARIANT_TYPE_STRING); g_assert (value != NULL); g_assert_cmpstr (g_variant_get_string (value, NULL), ==, "abcd::1"); + g_variant_unref (value); value = g_variant_lookup_value (ip6_dict, NM_SETTING_IP_CONFIG_ADDRESSES, G_VARIANT_TYPE ("a(ayuay)")); g_assert (value != NULL); @@ -3798,6 +3978,7 @@ test_hexstr2bin (void) g_assert (b); g_assert_cmpint (g_bytes_get_size (b), ==, items[i].expected_len); g_assert (memcmp (g_bytes_get_data (b, NULL), items[i].expected, g_bytes_get_size (b)) == 0); + g_bytes_unref (b); } else g_assert (b == NULL); } @@ -3901,6 +4082,7 @@ int main (int argc, char **argv) g_test_add_func ("/core/general/test_setting_new_from_dbus", test_setting_new_from_dbus); g_test_add_func ("/core/general/test_setting_new_from_dbus_transform", test_setting_new_from_dbus_transform); g_test_add_func ("/core/general/test_setting_new_from_dbus_enum", test_setting_new_from_dbus_enum); + g_test_add_func ("/core/general/test_setting_new_from_dbus_bad", test_setting_new_from_dbus_bad); g_test_add_func ("/core/general/test_connection_replace_settings", test_connection_replace_settings); g_test_add_func ("/core/general/test_connection_replace_settings_from_connection", test_connection_replace_settings_from_connection); g_test_add_func ("/core/general/test_connection_replace_settings_bad", test_connection_replace_settings_bad); |