about summary refs log tree commit diff
path: root/libnm-util/tests
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2019-07-31 10:51:42 +0200
committerMichael Biebl <biebl@debian.org>2019-07-31 10:51:42 +0200
commit2e5fa45ddfbb5cffa1e78221f1cea706e2f298af (patch)
tree86f69d36c56de3074280456eddc854a780b8e04b /libnm-util/tests
parent85563b7fc7ec2cd21e38debb9b28db342e2e8e7c (diff)
New upstream version 1.19.90 upstream/1.19.90
Diffstat (limited to 'libnm-util/tests')
-rw-r--r--libnm-util/tests/meson.build45
-rw-r--r--libnm-util/tests/test-crypto.c403
-rw-r--r--libnm-util/tests/test-general.c2560
-rw-r--r--libnm-util/tests/test-libnm-linking.c45
-rw-r--r--libnm-util/tests/test-secrets.c684
-rw-r--r--libnm-util/tests/test-setting-8021x.c407
-rw-r--r--libnm-util/tests/test-setting-dcb.c319
-rw-r--r--libnm-util/tests/test-settings-defaults.c127
8 files changed, 0 insertions, 4590 deletions
diff --git a/libnm-util/tests/meson.build b/libnm-util/tests/meson.build
deleted file mode 100644
index 09642f31..00000000
--- a/libnm-util/tests/meson.build
+++ /dev/null
@@ -1,45 +0,0 @@
-deps = [
-  dbus_dep,
-  dbus_glib_dep,
-  libnm_util_dep,
-  shared_nm_glib_aux_dep,
-]
-
-cflags = common_cflags + [
-  '-DNETWORKMANAGER_COMPILATION_TEST',
-]
-
-test = 'test-libnm-linking'
-
-test_libnm_linking = executable(
-  test,
-  test + '.c',
-  dependencies: deps + [libnm_dep],
-  c_args: cflags,
-)
-
-test_units = [
-  ['test-crypto', [libtest_crypto], []],
-  ['test-general', [], [test_libnm_linking]],
-  ['test-secrets', [], []],
-  ['test-setting-8021x', [], []],
-  ['test-setting-dcb', [], []],
-  ['test-settings-defaults', [], []],
-]
-
-foreach test_unit: test_units
-  exe = executable(
-    'libnm-util-' + test_unit[0],
-    test_unit[0] + '.c',
-    dependencies: deps,
-    c_args: cflags,
-    link_with: test_unit[1],
-    link_depends: test_unit[2],
-  )
-
-  test(
-    'libnm-util/' + test_unit[0],
-    test_script,
-    args: test_args + [exe.full_path()],
-  )
-endforeach
diff --git a/libnm-util/tests/test-crypto.c b/libnm-util/tests/test-crypto.c
deleted file mode 100644
index af6028a5..00000000
--- a/libnm-util/tests/test-crypto.c
+++ /dev/null
@@ -1,403 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
-
-/*
- * Dan Williams <dcbw@redhat.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301 USA.
- *
- * Copyright 2007 - 2011 Red Hat, Inc.
- */
-
-#include "nm-default.h"
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "crypto.h"
-#include "nm-utils.h"
-
-#include "nm-utils/nm-test-utils.h"
-
-#define TEST_CERT_DIR                         NM_BUILD_SRCDIR"/libnm-core/tests/certs"
-
-#if 0
-static const char *pem_rsa_key_begin = "-----BEGIN RSA PRIVATE KEY-----";
-static const char *pem_rsa_key_end = "-----END RSA PRIVATE KEY-----";
-
-static const char *pem_dsa_key_begin = "-----BEGIN DSA PRIVATE KEY-----";
-static const char *pem_dsa_key_end = "-----END DSA PRIVATE KEY-----";
-
-static void
-dump_key_to_pem (const char *key, gsize key_len, int key_type)
-{
-	char *b64 = NULL;
-	GString *str = NULL;
-	const char *start_tag;
-	const char *end_tag;
-	char *p;
-
-	switch (key_type) {
-	case NM_CRYPTO_KEY_TYPE_RSA:
-		start_tag = pem_rsa_key_begin;
-		end_tag = pem_rsa_key_end;
-		break;
-	case NM_CRYPTO_KEY_TYPE_DSA:
-		start_tag = pem_dsa_key_begin;
-		end_tag = pem_dsa_key_end;
-		break;
-	default:
-		g_warning ("Unknown key type %d", key_type);
-		return;
-	}
-
-	b64 = g_base64_encode ((const unsigned char *) key, key_len);
-	if (!b64) {
-		g_warning ("Couldn't base64 encode the key.");
-		goto out;
-	}
-
-	str = g_string_new (NULL);
-
-	g_string_append (str, start_tag);
-	g_string_append_c (str, '\n');
-
-	for (p = b64; p < (b64 + strlen (b64)); p += 64) {
-		g_string_append_len (str, p, strnlen (p, 64));
-		g_string_append_c (str, '\n');
-	}
-
-	g_string_append (str, end_tag);
-	g_string_append_c (str, '\n');
-
-	g_message ("Decrypted private key:\n\n%s", str->str);
-
-out:
-	g_free (b64);
-	if (str)
-		g_string_free (str, TRUE);
-}
-#endif
-
-static void
-test_cert (gconstpointer test_data)
-{
-	gs_free char *path = NULL;
-	GByteArray *array;
-	NMCryptoFileFormat format = NM_CRYPTO_FILE_FORMAT_UNKNOWN;
-	GError *error = NULL;
-
-	path = g_build_filename (TEST_CERT_DIR, (const char *) test_data, NULL);
-
-	array = crypto_load_and_verify_certificate (path, &format, &error);
-	nmtst_assert_success (array != NULL, error);
-	g_assert (format == NM_CRYPTO_FILE_FORMAT_X509);
-
-	g_byte_array_free (array, TRUE);
-}
-
-static GByteArray *
-file_to_byte_array (const char *filename)
-{
-	char *contents;
-	GByteArray *array = NULL;
-	gsize length = 0;
-
-	if (g_file_get_contents (filename, &contents, &length, NULL)) {
-		array = g_byte_array_sized_new (length);
-		g_byte_array_append (array, (guint8 *) contents, length);
-		g_assert (array->len == length);
-		g_free (contents);
-	}
-	return array;
-}
-
-static void
-test_load_private_key (const char *path,
-                       const char *password,
-                       const char *decrypted_path,
-                       gboolean expect_fail,
-                       const char *desc)
-{
-	NMCryptoKeyType key_type = NM_CRYPTO_KEY_TYPE_UNKNOWN;
-	GByteArray *array, *decrypted;
-	GError *error = NULL;
-
-	array = crypto_decrypt_private_key (path, password, &key_type, &error);
-	if (expect_fail) {
-		g_assert (!array);
-		g_assert ((password && error) || (!password && !error));
-		g_assert (key_type != NM_CRYPTO_KEY_TYPE_UNKNOWN);
-		g_clear_error (&error);
-		return;
-	}
-
-	g_assert (array);
-	g_assert (key_type == NM_CRYPTO_KEY_TYPE_RSA);
-
-	if (decrypted_path) {
-		/* Compare the crypto decrypted key against a known-good decryption */
-		decrypted = file_to_byte_array (decrypted_path);
-		g_assert (decrypted);
-		g_assert_cmpint (decrypted->len, >, 0);
-		g_assert_cmpmem (decrypted->data, decrypted->len, array->data, array->len);
-
-		g_byte_array_free (decrypted, TRUE);
-	}
-
-	g_clear_error (&error);
-	g_byte_array_free (array, TRUE);
-}
-
-static void
-test_load_pkcs12 (const char *path,
-                  const char *password,
-                  gboolean expect_fail,
-                  const char *desc)
-{
-	NMCryptoFileFormat format = NM_CRYPTO_FILE_FORMAT_UNKNOWN;
-	GError *error = NULL;
-
-	format = crypto_verify_private_key (path, password, &error);
-	if (expect_fail)
-		g_assert (format == NM_CRYPTO_FILE_FORMAT_UNKNOWN);
-	else
-		g_assert (format == NM_CRYPTO_FILE_FORMAT_PKCS12);
-	g_clear_error (&error);
-}
-
-static void
-test_load_pkcs12_no_password (const char *path, const char *desc)
-{
-	NMCryptoFileFormat format = NM_CRYPTO_FILE_FORMAT_UNKNOWN;
-	GError *error = NULL;
-
-	/* We should still get a valid returned crypto file format */
-	format = crypto_verify_private_key (path, NULL, &error);
-	g_assert (format == NM_CRYPTO_FILE_FORMAT_PKCS12);
-}
-
-static void
-test_is_pkcs12 (const char *path, gboolean expect_fail, const char *desc)
-{
-	gboolean is_pkcs12;
-
-	is_pkcs12 = crypto_is_pkcs12_file (path, NULL);
-	if (expect_fail)
-		g_assert (!is_pkcs12);
-	else
-		g_assert (is_pkcs12);
-}
-
-static void
-test_load_pkcs8 (const char *path,
-                 const char *password,
-                 gboolean expect_fail,
-                 const char *desc)
-{
-	NMCryptoFileFormat format = NM_CRYPTO_FILE_FORMAT_UNKNOWN;
-	GError *error = NULL;
-
-	format = crypto_verify_private_key (path, password, &error);
-	if (expect_fail)
-		g_assert (format == NM_CRYPTO_FILE_FORMAT_UNKNOWN);
-	else
-		g_assert (format == NM_CRYPTO_FILE_FORMAT_RAW_KEY);
-}
-
-static gboolean
-is_cipher_aes (const char *path)
-{
-	char *contents;
-	gsize length = 0;
-	const char *cipher;
-	gboolean is_aes = FALSE;
-
-	if (!g_file_get_contents (path, &contents, &length, NULL))
-		return FALSE;
-
-	cipher = strstr (contents, "DEK-Info: ");
-	if (cipher) {
-		cipher += strlen ("DEK-Info: ");
-		if (g_str_has_prefix (cipher, "AES-128-CBC"))
-			is_aes = TRUE;
-	}
-
-	g_free (contents);
-	return is_aes;
-}
-
-static void
-test_encrypt_private_key (const char *path,
-                          const char *password,
-                          const char *desc)
-{
-	NMCryptoKeyType key_type = NM_CRYPTO_KEY_TYPE_UNKNOWN;
-	GByteArray *array, *encrypted, *re_decrypted;
-	GError *error = NULL;
-
-	array = crypto_decrypt_private_key (path, password, &key_type, &error);
-	g_assert (array);
-	g_assert_no_error (error);
-	g_assert (key_type == NM_CRYPTO_KEY_TYPE_RSA);
-
-	/* Now re-encrypt the private key */
-	if (is_cipher_aes (path))
-		encrypted = nm_utils_rsa_key_encrypt_aes (array, password, NULL, &error);
-	else
-		encrypted = nm_utils_rsa_key_encrypt (array, password, NULL, &error);
-	g_assert (encrypted);
-	g_assert_no_error (error);
-
-	/* Then re-decrypt the private key */
-	key_type = NM_CRYPTO_KEY_TYPE_UNKNOWN;
-	re_decrypted = crypto_decrypt_private_key_data (encrypted, password, &key_type, &error);
-	g_assert (re_decrypted);
-	g_assert_no_error (error);
-	g_assert (key_type == NM_CRYPTO_KEY_TYPE_RSA);
-
-	/* Compare the original decrypted key with the re-decrypted key */
-	g_assert_cmpmem (array->data, array->len, re_decrypted->data, re_decrypted->len);
-
-	g_byte_array_free (re_decrypted, TRUE);
-	g_byte_array_free (encrypted, TRUE);
-	g_byte_array_free (array, TRUE);
-}
-
-static void
-test_key (gconstpointer test_data)
-{
-	char **parts, *path, *password, *decrypted_path;
-	int len;
-
-	parts = g_strsplit ((const char *) test_data, ", ", -1);
-	len = g_strv_length (parts);
-	g_assert (len == 2 || len == 3);
-
-	path = g_build_filename (TEST_CERT_DIR, parts[0], NULL);
-	password = parts[1];
-	decrypted_path = parts[2] ? g_build_filename (TEST_CERT_DIR, parts[2], NULL) : NULL;
-
-	test_is_pkcs12 (path, TRUE, "not-pkcs12");
-	test_load_private_key (path, password, decrypted_path, FALSE, "private-key");
-	test_load_private_key (path, "blahblahblah", NULL, TRUE, "private-key-bad-password");
-	test_load_private_key (path, NULL, NULL, TRUE, "private-key-no-password");
-	test_encrypt_private_key (path, password, "private-key-rencrypt");
-
-	g_free (path);
-	g_free (decrypted_path);
-	g_strfreev (parts);
-}
-
-static void
-test_pkcs12 (gconstpointer test_data)
-{
-	char **parts, *path, *password;
-
-	parts = g_strsplit ((const char *) test_data, ", ", -1);
-	g_assert_cmpint (g_strv_length (parts), ==, 2);
-
-	path = g_build_filename (TEST_CERT_DIR, parts[0], NULL);
-	password = parts[1];
-
-	test_is_pkcs12 (path, FALSE, "is-pkcs12");
-	test_load_pkcs12 (path, password, FALSE, "pkcs12-private-key");
-	test_load_pkcs12 (path, "blahblahblah", TRUE, "pkcs12-private-key-bad-password");
-	test_load_pkcs12_no_password (path, "pkcs12-private-key-no-password");
-
-	g_free (path);
-	g_strfreev (parts);
-}
-
-static void
-test_pkcs8 (gconstpointer test_data)
-{
-	char **parts, *path, *password;
-
-	parts = g_strsplit ((const char *) test_data, ", ", -1);
-	g_assert_cmpint (g_strv_length (parts), ==, 2);
-
-	path = g_build_filename (TEST_CERT_DIR, parts[0], NULL);
-	password = parts[1];
-
-	test_is_pkcs12 (path, TRUE, "not-pkcs12");
-	test_load_pkcs8 (path, password, FALSE, "pkcs8-private-key");
-
-	g_free (path);
-	g_strfreev (parts);
-}
-
-NMTST_DEFINE ();
-
-int
-main (int argc, char **argv)
-{
-	GError *error = NULL;
-	gboolean success;
-
-	nmtst_init (&argc, &argv, TRUE);
-
-	success = crypto_init (&error);
-	g_assert_no_error (error);
-	g_assert (success);
-
-	g_test_add_data_func ("/libnm/crypto/cert/pem",
-	                      "test_ca_cert.pem",
-	                      test_cert);
-	g_test_add_data_func ("/libnm/crypto/cert/pem-2",
-	                      "test2_ca_cert.pem",
-	                      test_cert);
-	g_test_add_data_func ("/libnm/crypto/cert/der",
-	                      "test_ca_cert.der",
-	                      test_cert);
-	g_test_add_data_func ("/libnm/crypto/cert/pem-no-ending-newline",
-	                      "ca-no-ending-newline.pem",
-	                      test_cert);
-	g_test_add_data_func ("/libnm/crypto/cert/pem-combined",
-	                      "test_key_and_cert.pem",
-	                      test_cert);
-	g_test_add_data_func ("/libnm/crypto/cert/pem-combined-2",
-	                      "test2_key_and_cert.pem",
-	                      test_cert);
-
-	g_test_add_data_func ("/libnm/crypto/key/padding-6",
-	                      "test_key_and_cert.pem, test, test-key-only-decrypted.der",
-	                      test_key);
-	g_test_add_data_func ("/libnm/crypto/key/key-only",
-	                      "test-key-only.pem, test, test-key-only-decrypted.der",
-	                      test_key);
-	g_test_add_data_func ("/libnm/crypto/key/padding-8",
-	                      "test2_key_and_cert.pem, 12345testing",
-	                      test_key);
-	g_test_add_data_func ("/libnm/crypto/key/aes-128",
-	                      "test-aes-128-key.pem, test-aes-password",
-	                      test_key);
-
-	g_test_add_data_func ("/libnm/crypto/PKCS#12/1",
-	                      "test-cert.p12, test",
-	                      test_pkcs12);
-	g_test_add_data_func ("/libnm/crypto/PKCS#12/2",
-	                      "test2-cert.p12, 12345testing",
-	                      test_pkcs12);
-
-	g_test_add_data_func ("/libnm/crypto/PKCS#8",
-	                      "pkcs8-enc-key.pem, 1234567890",
-	                      test_pkcs8);
-
-	return g_test_run ();
-}
-
diff --git a/libnm-util/tests/test-general.c b/libnm-util/tests/test-general.c
deleted file mode 100644
index 9e097f19..00000000
--- a/libnm-util/tests/test-general.c
+++ /dev/null
@@ -1,2560 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
-/*
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Copyright 2008 - 2011 Red Hat, Inc.
- *
- */
-
-#include "nm-default.h"
-
-#include <dbus/dbus-glib.h>
-#include <string.h>
-#include <netinet/ether.h>
-#include <linux/if_infiniband.h>
-#include <sys/wait.h>
-#include <sys/resource.h>
-
-#include "nm-utils.h"
-#include "nm-gvaluearray-compat.h"
-
-#include "nm-setting-private.h"
-#include "nm-setting-connection.h"
-#include "nm-setting-vpn.h"
-#include "nm-setting-gsm.h"
-#include "nm-setting-cdma.h"
-#include "nm-setting-wired.h"
-#include "nm-setting-wireless-security.h"
-#include "nm-setting-ip6-config.h"
-#include "nm-setting-ip4-config.h"
-#include "nm-setting-pppoe.h"
-#include "nm-setting-serial.h"
-#include "nm-setting-vlan.h"
-#include "nm-setting-bond.h"
-#include "nm-utils.h"
-#include "nm-dbus-glib-types.h"
-
-#include "nm-utils/nm-test-utils.h"
-
-static void
-vpn_check_func (const char *key, const char *value, gpointer user_data)
-{
-	if (!strcmp (key, "foobar1")) {
-		g_assert_cmpstr (value, ==, "blahblah1");
-		return;
-	}
-
-	if (!strcmp (key, "foobar2")) {
-		g_assert_cmpstr (value, ==, "blahblah2");
-		return;
-	}
-
-	if (!strcmp (key, "foobar3")) {
-		g_assert_cmpstr (value, ==, "blahblah3");
-		return;
-	}
-
-	if (!strcmp (key, "foobar4")) {
-		g_assert_cmpstr (value, ==, "blahblah4");
-		return;
-	}
-
-	g_assert_not_reached ();
-}
-
-static void
-vpn_check_empty_func (const char *key, const char *value, gpointer user_data)
-{
-	g_assert_not_reached ();
-}
-
-static void
-test_setting_vpn_items (void)
-{
-	NMSettingVPN *s_vpn;
-
-	s_vpn = (NMSettingVPN *) nm_setting_vpn_new ();
-	g_assert (s_vpn);
-
-	nm_setting_vpn_add_data_item (s_vpn, "foobar1", "blahblah1");
-	nm_setting_vpn_add_data_item (s_vpn, "foobar2", "blahblah2");
-	nm_setting_vpn_add_data_item (s_vpn, "foobar3", "blahblah3");
-	nm_setting_vpn_add_data_item (s_vpn, "foobar4", "blahblah4");
-
-	/* Ensure that added values are all present */
-	nm_setting_vpn_foreach_data_item (s_vpn, vpn_check_func, NULL);
-	nm_setting_vpn_remove_data_item (s_vpn, "foobar1");
-	nm_setting_vpn_remove_data_item (s_vpn, "foobar2");
-	nm_setting_vpn_remove_data_item (s_vpn, "foobar3");
-	nm_setting_vpn_remove_data_item (s_vpn, "foobar4");
-
-	nm_setting_vpn_add_secret (s_vpn, "foobar1", "blahblah1");
-	nm_setting_vpn_add_secret (s_vpn, "foobar2", "blahblah2");
-	nm_setting_vpn_add_secret (s_vpn, "foobar3", "blahblah3");
-	nm_setting_vpn_add_secret (s_vpn, "foobar4", "blahblah4");
-
-	/* Ensure that added values are all present */
-	nm_setting_vpn_foreach_secret (s_vpn, vpn_check_func, NULL);
-	nm_setting_vpn_remove_secret (s_vpn, "foobar1");
-	nm_setting_vpn_remove_secret (s_vpn, "foobar2");
-	nm_setting_vpn_remove_secret (s_vpn, "foobar3");
-	nm_setting_vpn_remove_secret (s_vpn, "foobar4");
-
-	/* Try to add some blank values and make sure they are rejected */
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (key != NULL));
-	nm_setting_vpn_add_data_item (s_vpn, NULL, NULL);
-	g_test_assert_expected_messages ();
-
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (strlen (key) > 0));
-	nm_setting_vpn_add_data_item (s_vpn, "", "");
-	g_test_assert_expected_messages ();
-
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (item != NULL));
-	nm_setting_vpn_add_data_item (s_vpn, "foobar1", NULL);
-	g_test_assert_expected_messages ();
-
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (strlen (item) > 0));
-	nm_setting_vpn_add_data_item (s_vpn, "foobar1", "");
-	g_test_assert_expected_messages ();
-
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (key != NULL));
-	nm_setting_vpn_add_data_item (s_vpn, NULL, "blahblah1");
-	g_test_assert_expected_messages ();
-
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (strlen (key) > 0));
-	nm_setting_vpn_add_data_item (s_vpn, "", "blahblah1");
-	g_test_assert_expected_messages ();
-
-	nm_setting_vpn_foreach_data_item (s_vpn, vpn_check_empty_func, NULL);
-
-	/* Try to add some blank secrets and make sure they are rejected */
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (key != NULL));
-	nm_setting_vpn_add_secret (s_vpn, NULL, NULL);
-	g_test_assert_expected_messages ();
-
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (strlen (key) > 0));
-	nm_setting_vpn_add_secret (s_vpn, "", "");
-	g_test_assert_expected_messages ();
-
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (secret != NULL));
-	nm_setting_vpn_add_secret (s_vpn, "foobar1", NULL);
-	g_test_assert_expected_messages ();
-
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (strlen (secret) > 0));
-	nm_setting_vpn_add_secret (s_vpn, "foobar1", "");
-	g_test_assert_expected_messages ();
-
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (key != NULL));
-	nm_setting_vpn_add_secret (s_vpn, NULL, "blahblah1");
-	g_test_assert_expected_messages ();
-
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (strlen (key) > 0));
-	nm_setting_vpn_add_secret (s_vpn, "", "blahblah1");
-	g_test_assert_expected_messages ();
-
-	nm_setting_vpn_foreach_secret (s_vpn, vpn_check_empty_func, NULL);
-
-	g_object_unref (s_vpn);
-}
-
-static void
-test_setting_vpn_update_secrets (void)
-{
-	NMConnection *connection;
-	NMSettingVPN *s_vpn;
-	GHashTable *settings, *vpn, *secrets;
-	GValue val = G_VALUE_INIT;
-	gboolean success;
-	GError *error = NULL;
-	const char *tmp;
-	const char *key1 = "foobar";
-	const char *key2 = "blahblah";
-	const char *val1 = "value1";
-	const char *val2 = "value2";
-
-	connection = nm_connection_new ();
-	g_assert (connection);
-
-	s_vpn = (NMSettingVPN *) nm_setting_vpn_new ();
-	g_assert (s_vpn);
-	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);
-
-	secrets = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, NULL);
-	g_value_init (&val, DBUS_TYPE_G_MAP_OF_STRING);
-	g_value_take_boxed (&val, secrets);
-	g_hash_table_insert (vpn, NM_SETTING_VPN_SECRETS, &val);
-
-	/* Add some secrets */
-	g_hash_table_insert (secrets, (char *) key1, (char *) val1);
-	g_hash_table_insert (secrets, (char *) key2, (char *) val2);
-
-	success = nm_connection_update_secrets (connection, NM_SETTING_VPN_SETTING_NAME, settings, &error);
-	g_assert_no_error (error);
-	g_assert (success);
-
-	/* Read the secrets back out */
-	tmp = nm_setting_vpn_get_secret (s_vpn, key1);
-	g_assert (tmp);
-	g_assert_cmpstr (tmp, ==, val1);
-
-	tmp = nm_setting_vpn_get_secret (s_vpn, key2);
-	g_assert (tmp);
-	g_assert_cmpstr (tmp, ==, val2);
-
-	g_hash_table_destroy (settings);
-	g_object_unref (connection);
-}
-
-#define TO_DEL_NUM 50
-typedef struct {
-	NMSettingVPN *s_vpn;
-	char *to_del[TO_DEL_NUM];
-	guint called;
-} IterInfo;
-
-static void
-del_iter_func (const char *key, const char *value, gpointer user_data)
-{
-	IterInfo *info = user_data;
-	int i;
-
-	/* Record how many times this function gets called; it should get called
-	 * exactly as many times as there are keys in the hash table, regardless
-	 * of what keys we delete from the table.
-	 */
-	info->called++;
-
-	/* During the iteration, remove a bunch of stuff from the table */
-	if (info->called == 1) {
-		for (i = 0; i < TO_DEL_NUM; i++)
-			nm_setting_vpn_remove_data_item (info->s_vpn, info->to_del[i]);
-	}
-}
-
-static void
-test_setting_vpn_modify_during_foreach (void)
-{
-	NMSettingVPN *s_vpn;
-	IterInfo info;
-	char *key, *val;
-	int i, u = 0;
-
-	s_vpn = (NMSettingVPN *) nm_setting_vpn_new ();
-	g_assert (s_vpn);
-
-	for (i = 0; i < TO_DEL_NUM * 2; i++) {
-		key = g_strdup_printf ("adsfasdfadf%d", i);
-		val = g_strdup_printf ("42263236236awt%d", i);
-		nm_setting_vpn_add_data_item (s_vpn, key, val);
-
-		/* Cache some keys to delete */
-		if (i % 2)
-			info.to_del[u++] = g_strdup (key);
-
-		g_free (key);
-		g_free (val);
-	}
-
-	/* Iterate over current table keys */
-	info.s_vpn = s_vpn;
-	info.called = 0;
-	nm_setting_vpn_foreach_data_item (s_vpn, del_iter_func, &info);
-
-	/* Make sure all the things we removed during iteration are really gone */
-	for (i = 0; i < TO_DEL_NUM; i++) {
-		g_assert_cmpstr (nm_setting_vpn_get_data_item (s_vpn, info.to_del[i]), ==, NULL);
-		g_free (info.to_del[i]);
-	}
-
-	/* And make sure the foreach callback was called the same number of times
-	 * as there were keys in the table at the beginning of the foreach.
-	 */
-	g_assert_cmpint (info.called, ==, TO_DEL_NUM * 2);
-
-	g_object_unref (s_vpn);
-}
-
-static void
-_g_value_array_free (void *ptr)
-{
-	if (ptr)
-		g_value_array_free ((GValueArray *) ptr);
-}
-
-#define OLD_DBUS_TYPE_G_IP6_ADDRESS (dbus_g_type_get_struct ("GValueArray", DBUS_TYPE_G_UCHAR_ARRAY, G_TYPE_UINT, G_TYPE_INVALID))
-#define OLD_DBUS_TYPE_G_ARRAY_OF_IP6_ADDRESS (dbus_g_type_get_collection ("GPtrArray", OLD_DBUS_TYPE_G_IP6_ADDRESS))
-
-/* Test that setting the IPv6 setting's 'addresses' property using the old
- * IPv6 address format still works, i.e. that the GValue transformation function
- * from old->new is working correctly.
- */
-static void
-test_setting_ip6_config_old_address_array (void)
-{
-	NMSettingIP6Config *s_ip6;
-	GPtrArray *addresses, *read_addresses;
-	GValueArray *array, *read_array;
-	GValue element = G_VALUE_INIT, written_value = G_VALUE_INIT, read_value = G_VALUE_INIT;
-	GByteArray *ba;
-	const guint8 addr[16] = { 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11,
-	                          0x11, 0x22, 0x33, 0x44, 0x66, 0x77, 0x88, 0x99 };
-	const guint8 gw[16] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	                          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
-	guint32 prefix = 56;
-	GValue *read_addr, *read_prefix, *read_gw;
-
-	s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new ();
-	g_assert (s_ip6);
-
-	g_value_init (&written_value, OLD_DBUS_TYPE_G_ARRAY_OF_IP6_ADDRESS);
-
-	addresses = g_ptr_array_new_full (0, _g_value_array_free);
-	array = g_value_array_new (3);
-
-	/* IP address */
-	g_value_init (&element, DBUS_TYPE_G_UCHAR_ARRAY);
-	ba = g_byte_array_new ();
-	g_byte_array_append (ba, &addr[0], sizeof (addr));
-	g_value_take_boxed (&element, ba);
-	g_value_array_append (array, &element);
-	g_value_unset (&element);
-
-	/* Prefix */
-	g_value_init (&element, G_TYPE_UINT);
-	g_value_set_uint (&element, prefix);
-	g_value_array_append (array, &element);
-	g_value_unset (&element);
-
-	g_ptr_array_add (addresses, array);
-	g_value_set_boxed (&written_value, addresses);
-
-	/* Set the address array on the object */
-	g_object_set_property (G_OBJECT (s_ip6), NM_SETTING_IP6_CONFIG_ADDRESSES, &written_value);
-
-	/* Get it back so we can compare it */
-	g_value_init (&read_value, DBUS_TYPE_G_ARRAY_OF_IP6_ADDRESS);
-	g_object_get_property (G_OBJECT (s_ip6), NM_SETTING_IP6_CONFIG_ADDRESSES, &read_value);
-
-	g_assert (G_VALUE_HOLDS (&read_value, DBUS_TYPE_G_ARRAY_OF_IP6_ADDRESS));
-
-	read_addresses = (GPtrArray *) g_value_get_boxed (&read_value);
-	g_assert (read_addresses);
-	g_assert_cmpint (read_addresses->len, ==, 1);
-
-	read_array = (GValueArray *) g_ptr_array_index (read_addresses, 0);
-
-	read_addr = g_value_array_get_nth (read_array, 0);
-	ba = g_value_get_boxed (read_addr);
-	g_assert_cmpint (ba->len, ==, sizeof (addr));
-	g_assert_cmpmem (ba->data, ba->len, &addr[0], sizeof (addr));
-
-	read_prefix = g_value_array_get_nth (read_array, 1);
-	g_assert_cmpint (g_value_get_uint (read_prefix), ==, prefix);
-
-	/* Ensure the gateway is all zeros, which is how the 2-item to 3-item
-	 * conversion happens.
-	 */
-	read_gw = g_value_array_get_nth (read_array, 2);
-	ba = g_value_get_boxed (read_gw);
-	g_assert_cmpint (ba->len, ==, sizeof (gw));
-	g_assert_cmpmem (ba->data, ba->len, &gw[0], sizeof (gw));
-
-	g_ptr_array_unref (addresses);
-	g_value_unset (&written_value);
-	g_value_unset (&read_value);
-	g_object_unref (s_ip6);
-}
-
-static void
-test_setting_gsm_apn_spaces (void)
-{
-	gs_unref_object NMSettingGsm *s_gsm = NULL;
-	const char *tmp;
-
-	s_gsm = (NMSettingGsm *) nm_setting_gsm_new ();
-	g_assert (s_gsm);
-
-	/* Trailing space */
-	g_object_set (s_gsm, NM_SETTING_GSM_APN, "foobar ", NULL);
-	tmp = nm_setting_gsm_get_apn (s_gsm);
-	g_assert_cmpstr (tmp, ==, "foobar");
-
-	/* Leading space */
-	g_object_set (s_gsm, NM_SETTING_GSM_APN, " foobar", NULL);
-	tmp = nm_setting_gsm_get_apn (s_gsm);
-	g_assert_cmpstr (tmp, ==, "foobar");
-}
-
-static void
-test_setting_gsm_apn_bad_chars (void)
-{
-	gs_unref_object NMSettingGsm *s_gsm = NULL;
-
-	s_gsm = (NMSettingGsm *) nm_setting_gsm_new ();
-	g_assert (s_gsm);
-
-	g_object_set (s_gsm, NM_SETTING_GSM_NUMBER, "*99#", NULL);
-
-	/* Make sure a valid APN works */
-	g_object_set (s_gsm, NM_SETTING_GSM_APN, "foobar123.-baz", NULL);
-	g_assert (nm_setting_verify (NM_SETTING (s_gsm), NULL, NULL));
-
-	/* Random invalid chars */
-	g_object_set (s_gsm, NM_SETTING_GSM_APN, "@#%$@#%@#%", NULL);
-	g_assert (!nm_setting_verify (NM_SETTING (s_gsm), NULL, NULL));
-
-	/* Spaces */
-	g_object_set (s_gsm, NM_SETTING_GSM_APN, "foobar baz", NULL);
-	g_assert (!nm_setting_verify (NM_SETTING (s_gsm), NULL, NULL));
-
-	/* 0 characters long */
-	g_object_set (s_gsm, NM_SETTING_GSM_APN, "", NULL);
-	g_assert (!nm_setting_verify (NM_SETTING (s_gsm), NULL, NULL));
-
-	/* 65-character long */
-	g_object_set (s_gsm, NM_SETTING_GSM_APN, "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl1", NULL);
-	g_assert (!nm_setting_verify (NM_SETTING (s_gsm), NULL, NULL));
-}
-
-static void
-test_setting_gsm_apn_underscore (void)
-{
-	gs_unref_object NMSettingGsm *s_gsm = NULL;
-	GError *error = NULL;
-	gboolean success;
-
-	s_gsm = (NMSettingGsm *) nm_setting_gsm_new ();
-	g_assert (s_gsm);
-
-	g_object_set (s_gsm, NM_SETTING_GSM_NUMBER, "*99#", NULL);
-
-	/* 65-character long */
-	g_object_set (s_gsm, NM_SETTING_GSM_APN, "foobar_baz", NULL);
-	success = nm_setting_verify (NM_SETTING (s_gsm), NULL, &error);
-	g_assert_no_error (error);
-	g_assert (success == TRUE);
-}
-
-static void
-test_setting_gsm_without_number (void)
-{
-	gs_unref_object NMSettingGsm *s_gsm = NULL;
-	GError *error = NULL;
-	gboolean success;
-
-	s_gsm = (NMSettingGsm *) nm_setting_gsm_new ();
-	g_assert (s_gsm);
-
-	g_object_set (s_gsm, NM_SETTING_GSM_NUMBER, NULL, NULL);
-	success = nm_setting_verify (NM_SETTING (s_gsm), NULL, &error);
-	g_assert_no_error (error);
-	g_assert (success == TRUE);
-
-	g_object_set (s_gsm, NM_SETTING_GSM_NUMBER, "", NULL);
-	success = nm_setting_verify (NM_SETTING (s_gsm), NULL, &error);
-	g_assert_error (error, NM_SETTING_GSM_ERROR, NM_SETTING_GSM_ERROR_INVALID_PROPERTY);
-	g_error_free (error);
-}
-
-static NMSettingWirelessSecurity *
-make_test_wsec_setting (const char *detail)
-{
-	NMSettingWirelessSecurity *s_wsec;
-
-	s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new ();
-	g_assert (s_wsec);
-	g_object_set (s_wsec,
-	              NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "wpa-psk",
-	              NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME, "foobarbaz",
-	              NM_SETTING_WIRELESS_SECURITY_PSK, "random psk",
-	              NM_SETTING_WIRELESS_SECURITY_WEP_KEY0, "aaaaaaaaaa",
-	              NULL);
-	return s_wsec;
-}
-
-static void
-test_setting_to_hash_all (void)
-{
-	NMSettingWirelessSecurity *s_wsec;
-	GHashTable *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);
-
-	/* Make sure all keys are there */
-	g_assert (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT));
-	g_assert (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME));
-	g_assert (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_PSK));
-	g_assert (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_WEP_KEY0));
-
-	g_hash_table_destroy (hash);
-	g_object_unref (s_wsec);
-}
-
-static void
-test_setting_to_hash_no_secrets (void)
-{
-	NMSettingWirelessSecurity *s_wsec;
-	GHashTable *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);
-
-	/* Make sure non-secret keys are there */
-	g_assert (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT));
-	g_assert (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME));
-
-	/* Make sure secrets are not there */
-	g_assert (!g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_PSK));
-	g_assert (!g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_WEP_KEY0));
-
-	g_hash_table_destroy (hash);
-	g_object_unref (s_wsec);
-}
-
-static void
-test_setting_to_hash_only_secrets (void)
-{
-	NMSettingWirelessSecurity *s_wsec;
-	GHashTable *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);
-
-	/* Make sure non-secret keys are there */
-	g_assert (!g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT));
-	g_assert (!g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME));
-
-	/* Make sure secrets are not there */
-	g_assert (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_PSK));
-	g_assert (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_WEP_KEY0));
-
-	g_hash_table_destroy (hash);
-	g_object_unref (s_wsec);
-}
-
-static void
-test_connection_to_hash_setting_name (void)
-{
-	NMConnection *connection;
-	NMSettingWirelessSecurity *s_wsec;
-	GHashTable *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);
-
-	/* Make sure the keys of the first level hash are setting names, not
-	 * the GType name of the setting objects.
-	 */
-	g_assert (g_hash_table_lookup (hash, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME));
-
-	g_hash_table_destroy (hash);
-	g_object_unref (connection);
-}
-
-static void
-test_setting_new_from_hash (void)
-{
-	NMSettingWirelessSecurity *s_wsec;
-	GHashTable *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);
-	g_object_unref (s_wsec);
-
-	s_wsec = (NMSettingWirelessSecurity *) nm_setting_new_from_hash (NM_TYPE_SETTING_WIRELESS_SECURITY, hash);
-	g_hash_table_destroy (hash);
-
-	g_assert (s_wsec);
-	g_assert_cmpstr (nm_setting_wireless_security_get_key_mgmt (s_wsec), ==, "wpa-psk");
-	g_assert_cmpstr (nm_setting_wireless_security_get_leap_username (s_wsec), ==, "foobarbaz");
-	g_assert_cmpstr (nm_setting_wireless_security_get_psk (s_wsec), ==, "random psk");
-	g_object_unref (s_wsec);
-}
-
-static NMConnection *
-new_test_connection (void)
-{
-	NMConnection *connection;
-	NMSetting *setting;
-	char *uuid;
-	guint64 timestamp = time (NULL);
-
-	connection = nm_connection_new ();
-
-	setting = nm_setting_connection_new ();
-	uuid = nm_utils_uuid_generate ();
-	g_object_set (G_OBJECT (setting),
-	              NM_SETTING_CONNECTION_ID, "foobar",
-	              NM_SETTING_CONNECTION_UUID, uuid,
-	              NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRED_SETTING_NAME,
-	              NM_SETTING_CONNECTION_TIMESTAMP, timestamp,
-	              NULL);
-	g_free (uuid);
-	nm_connection_add_setting (connection, setting);
-
-	setting = nm_setting_wired_new ();
-	g_object_set (G_OBJECT (setting),
-	              NM_SETTING_WIRED_MTU, 1592,
-	              NULL);
-	nm_connection_add_setting (connection, setting);
-
-	setting = nm_setting_ip4_config_new ();
-	g_object_set (G_OBJECT (setting),
-	              NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO,
-	              NM_SETTING_IP4_CONFIG_DHCP_HOSTNAME, "eyeofthetiger",
-	              NULL);
-	nm_connection_add_setting (connection, setting);
-
-	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 *
-new_connection_hash (char **out_uuid,
-                     const char **out_expected_id,
-                     const char **out_expected_ip6_method)
-{
-	GHashTable *hash;
-	GHashTable *setting;
-
-	hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_hash_table_destroy);
-
-	*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);
-
-	/* 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);
-
-	/* 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);
-
-	return hash;
-}
-
-static void
-test_connection_replace_settings (void)
-{
-	NMConnection *connection;
-	GHashTable *new_settings;
-	GError *error = NULL;
-	gboolean success;
-	NMSettingConnection *s_con;
-	NMSettingIP6Config *s_ip6;
-	char *uuid = NULL;
-	const char *expected_id = NULL, *expected_method = NULL;
-
-	connection = new_test_connection ();
-
-	new_settings = new_connection_hash (&uuid, &expected_id, &expected_method);
-	g_assert (new_settings);
-
-	/* Replace settings and test */
-	success = nm_connection_replace_settings (connection, new_settings, &error);
-	g_assert_no_error (error);
-	g_assert (success);
-
-	s_con = nm_connection_get_setting_connection (connection);
-	g_assert (s_con);
-	g_assert_cmpstr (nm_setting_connection_get_id (s_con), ==, expected_id);
-	g_assert_cmpstr (nm_setting_connection_get_uuid (s_con), ==, uuid);
-
-	g_assert (nm_connection_get_setting_wired (connection));
-	g_assert (!nm_connection_get_setting_ip4_config (connection));
-
-	s_ip6 = nm_connection_get_setting_ip6_config (connection);
-	g_assert (s_ip6);
-	g_assert_cmpstr (nm_setting_ip6_config_get_method (s_ip6), ==, expected_method);
-
-	g_free (uuid);
-	g_hash_table_destroy (new_settings);
-	g_object_unref (connection);
-}
-
-static void
-test_connection_replace_settings_from_connection (void)
-{
-	NMConnection *connection, *replacement;
-	GError *error = NULL;
-	gboolean success;
-	NMSettingConnection *s_con;
-	NMSetting *setting;
-	GByteArray *ssid;
-	char *uuid = NULL;
-	const char *expected_id = "Awesome connection";
-
-	connection = new_test_connection ();
-	g_assert (connection);
-
-	replacement = nm_connection_new ();
-	g_assert (replacement);
-
-	/* New connection setting */
-	setting = nm_setting_connection_new ();
-	g_assert (setting);
-
-	uuid = nm_utils_uuid_generate ();
-	g_object_set (setting,
-	              NM_SETTING_CONNECTION_ID, expected_id,
-	              NM_SETTING_CONNECTION_UUID, uuid,
-	              NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME,
-	              NULL);
-	nm_connection_add_setting (replacement, setting);
-
-	/* New wifi setting */
-	setting = nm_setting_wireless_new ();
-	g_assert (setting);
-
-	ssid = g_byte_array_new ();
-	g_byte_array_append (ssid, (const guint8 *) "1234567", 7);
-	g_object_set (setting,
-	              NM_SETTING_WIRELESS_SSID, ssid,
-	              NM_SETTING_WIRELESS_MODE, "infrastructure",
-	              NULL);
-	g_byte_array_free (ssid, TRUE);
-	nm_connection_add_setting (replacement, setting);
-
-	/* Replace settings and test */
-	success = nm_connection_replace_settings_from_connection (connection, replacement, &error);
-	g_assert_no_error (error);
-	g_assert (success);
-
-	s_con = nm_connection_get_setting_connection (connection);
-	g_assert (s_con);
-	g_assert_cmpstr (nm_setting_connection_get_id (s_con), ==, expected_id);
-	g_assert_cmpstr (nm_setting_connection_get_uuid (s_con), ==, uuid);
-
-	g_assert (!nm_connection_get_setting_wired (connection));
-	g_assert (!nm_connection_get_setting_ip6_config (connection));
-	g_assert (nm_connection_get_setting_wireless (connection));
-
-	g_free (uuid);
-	g_object_unref (replacement);
-	g_object_unref (connection);
-}
-
-static void
-test_connection_new_from_hash (void)
-{
-	NMConnection *connection;
-	GHashTable *new_settings;
-	GError *error = NULL;
-	NMSettingConnection *s_con;
-	NMSettingIP6Config *s_ip6;
-	char *uuid = NULL;
-	const char *expected_id = NULL, *expected_method = NULL;
-
-	new_settings = new_connection_hash (&uuid, &expected_id, &expected_method);
-	g_assert (new_settings);
-
-	/* Replace settings and test */
-	connection = nm_connection_new_from_hash (new_settings, &error);
-	g_assert_no_error (error);
-	g_assert (connection);
-
-	s_con = nm_connection_get_setting_connection (connection);
-	g_assert (s_con);
-	g_assert_cmpstr (nm_setting_connection_get_id (s_con), ==, expected_id);
-	g_assert_cmpstr (nm_setting_connection_get_uuid (s_con), ==, uuid);
-
-	g_assert (nm_connection_get_setting_wired (connection));
-	g_assert (!nm_connection_get_setting_ip4_config (connection));
-
-	s_ip6 = nm_connection_get_setting_ip6_config (connection);
-	g_assert (s_ip6);
-	g_assert_cmpstr (nm_setting_ip6_config_get_method (s_ip6), ==, expected_method);
-
-	g_free (uuid);
-	g_hash_table_destroy (new_settings);
-	g_object_unref (connection);
-}
-
-static void
-check_permission (NMSettingConnection *s_con,
-                  guint32 idx,
-                  const char *expected_uname)
-{
-	gboolean success;
-	const char *ptype = NULL, *pitem = NULL, *detail = NULL;
-
-	success = nm_setting_connection_get_permission (s_con, 0, &ptype, &pitem, &detail);
-	g_assert (success);
-
-	g_assert_cmpstr (ptype, ==, "user");
-
-	g_assert (pitem);
-	g_assert_cmpstr (pitem, ==, expected_uname);
-
-	g_assert (!detail);
-}
-
-#define TEST_UNAME "asdfasfasdf"
-
-static void
-test_setting_connection_permissions_helpers (void)
-{
-	NMSettingConnection *s_con;
-	gboolean success;
-	char buf[9] = { 0x61, 0x62, 0x63, 0xff, 0xfe, 0xfd, 0x23, 0x01, 0x00 };
-	GSList *list = NULL;
-	const char *expected_perm = "user:" TEST_UNAME ":";
-
-	s_con = NM_SETTING_CONNECTION (nm_setting_connection_new ());
-
-	/* Ensure a bad [type] is rejected */
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (strcmp (ptype, "user") == 0));
-	success = nm_setting_connection_add_permission (s_con, "foobar", "blah", NULL);
-	g_test_assert_expected_messages ();
-	g_assert (!success);
-
-	/* Ensure a bad [type] is rejected */
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (ptype));
-	success = nm_setting_connection_add_permission (s_con, NULL, "blah", NULL);
-	g_test_assert_expected_messages ();
-	g_assert (!success);
-
-	/* Ensure a bad [item] is rejected */
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (uname));
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (p != NULL));
-	success = nm_setting_connection_add_permission (s_con, "user", NULL, NULL);
-	g_test_assert_expected_messages ();
-	g_assert (!success);
-
-	/* Ensure a bad [item] is rejected */
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (uname[0] != '\0'));
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (p != NULL));
-	success = nm_setting_connection_add_permission (s_con, "user", "", NULL);
-	g_test_assert_expected_messages ();
-	g_assert (!success);
-
-	/* Ensure an [item] with ':' is rejected */
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (strchr (uname, ':') == NULL));
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (p != NULL));
-	success = nm_setting_connection_add_permission (s_con, "user", "ad:asdf", NULL);
-	g_test_assert_expected_messages ();
-	g_assert (!success);
-
-	/* Ensure a non-UTF-8 [item] is rejected */
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (g_utf8_validate (uname, -1, NULL) == TRUE));
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (p != NULL));
-	success = nm_setting_connection_add_permission (s_con, "user", buf, NULL);
-	g_test_assert_expected_messages ();
-	g_assert (!success);
-
-	/* Ensure a non-NULL [detail] is rejected */
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (detail == NULL));
-	success = nm_setting_connection_add_permission (s_con, "user", "dafasdf", "asdf");
-	g_test_assert_expected_messages ();
-	g_assert (!success);
-
-	/* Ensure a valid call results in success */
-	success = nm_setting_connection_add_permission (s_con, "user", TEST_UNAME, NULL);
-	g_assert (success);
-
-	g_assert_cmpint (nm_setting_connection_get_num_permissions (s_con), ==, 1);
-
-	check_permission (s_con, 0, TEST_UNAME);
-
-	/* Check the actual GObject property just to be paranoid */
-	g_object_get (G_OBJECT (s_con), NM_SETTING_CONNECTION_PERMISSIONS, &list, NULL);
-	g_assert (list);
-	g_assert_cmpint (g_slist_length (list), ==, 1);
-	g_assert_cmpstr (list->data, ==, expected_perm);
-	g_slist_free_full (list, g_free);
-
-	/* Now remove that permission and ensure we have 0 permissions */
-	nm_setting_connection_remove_permission (s_con, 0);
-	g_assert_cmpint (nm_setting_connection_get_num_permissions (s_con), ==, 0);
-
-	g_object_unref (s_con);
-}
-
-static void
-add_permission_property (NMSettingConnection *s_con,
-                         const char *ptype,
-                         const char *pitem,
-                         int pitem_len,
-                         const char *detail)
-{
-	GString *str;
-	GSList *list = NULL;
-
-	str = g_string_sized_new (50);
-	if (ptype)
-		g_string_append (str, ptype);
-	g_string_append_c (str, ':');
-
-	if (pitem) {
-		if (pitem_len >= 0)
-			g_string_append_len (str, pitem, pitem_len);
-		else
-			g_string_append (str, pitem);
-	}
-
-	g_string_append_c (str, ':');
-
-	if (detail)
-		g_string_append (str, detail);
-
-	list = g_slist_append (list, str->str);
-	g_object_set (G_OBJECT (s_con), NM_SETTING_CONNECTION_PERMISSIONS, list, NULL);
-
-	g_string_free (str, TRUE);
-	g_slist_free (list);
-}
-
-static void
-test_setting_connection_permissions_property (void)
-{
-	NMSettingConnection *s_con;
-	gboolean success;
-	char buf[9] = { 0x61, 0x62, 0x63, 0xff, 0xfe, 0xfd, 0x23, 0x01, 0x00 };
-
-	s_con = NM_SETTING_CONNECTION (nm_setting_connection_new ());
-
-	/* Ensure a bad [type] is rejected */
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (strncmp (str, PERM_USER_PREFIX, strlen (PERM_USER_PREFIX)) == 0));
-	add_permission_property (s_con, "foobar", "blah", -1, NULL);
-	g_test_assert_expected_messages ();
-	g_assert_cmpint (nm_setting_connection_get_num_permissions (s_con), ==, 0);
-
-	/* Ensure a bad [type] is rejected */
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (strncmp (str, PERM_USER_PREFIX, strlen (PERM_USER_PREFIX)) == 0));
-	add_permission_property (s_con, NULL, "blah", -1, NULL);
-	g_test_assert_expected_messages ();
-	g_assert_cmpint (nm_setting_connection_get_num_permissions (s_con), ==, 0);
-
-	/* Ensure a bad [item] is rejected */
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (last_colon > str));
-	add_permission_property (s_con, "user", NULL, -1, NULL);
-	g_test_assert_expected_messages ();
-	g_assert_cmpint (nm_setting_connection_get_num_permissions (s_con), ==, 0);
-
-	/* Ensure a bad [item] is rejected */
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (last_colon > str));
-	add_permission_property (s_con, "user", "", -1, NULL);
-	g_test_assert_expected_messages ();
-	g_assert_cmpint (nm_setting_connection_get_num_permissions (s_con), ==, 0);
-
-	/* Ensure an [item] with ':' in the middle is rejected */
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (str[i] != ':'));
-	add_permission_property (s_con, "user", "ad:asdf", -1, NULL);
-	g_test_assert_expected_messages ();
-	g_assert_cmpint (nm_setting_connection_get_num_permissions (s_con), ==, 0);
-
-	/* Ensure an [item] with ':' at the end is rejected */
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (str[i] != ':'));
-	add_permission_property (s_con, "user", "adasdfaf:", -1, NULL);
-	g_test_assert_expected_messages ();
-	g_assert_cmpint (nm_setting_connection_get_num_permissions (s_con), ==, 0);
-
-	/* Ensure a non-UTF-8 [item] is rejected */
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (g_utf8_validate (str, -1, NULL) == TRUE));
-	add_permission_property (s_con, "user", buf, (int) sizeof (buf), NULL);
-	g_test_assert_expected_messages ();
-	g_assert_cmpint (nm_setting_connection_get_num_permissions (s_con), ==, 0);
-
-	/* Ensure a non-NULL [detail] is rejected */
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (*(last_colon + 1) == '\0'));
-	add_permission_property (s_con, "user", "dafasdf", -1, "asdf");
-	g_test_assert_expected_messages ();
-	g_assert_cmpint (nm_setting_connection_get_num_permissions (s_con), ==, 0);
-
-	/* Ensure a valid call results in success */
-	success = nm_setting_connection_add_permission (s_con, "user", TEST_UNAME, NULL);
-	g_assert (success);
-	g_assert_cmpint (nm_setting_connection_get_num_permissions (s_con), ==, 1);
-
-	check_permission (s_con, 0, TEST_UNAME);
-
-	/* Now remove that permission and ensure we have 0 permissions */
-	nm_setting_connection_remove_permission (s_con, 0);
-	g_assert_cmpint (nm_setting_connection_get_num_permissions (s_con), ==, 0);
-
-	g_object_unref (s_con);
-}
-
-static void
-test_connection_compare_same (void)
-{
-	NMConnection *a, *b;
-
-	a = new_test_connection ();
-	b = nm_connection_duplicate (a);
-	g_assert (nm_connection_compare (a, b, NM_SETTING_COMPARE_FLAG_EXACT));
-	g_object_unref (a);
-	g_object_unref (b);
-}
-
-static void
-test_connection_compare_key_only_in_a (void)
-{
-	NMConnection *a, *b;
-	NMSettingConnection *s_con;
-
-	a = new_test_connection ();
-	b = nm_connection_duplicate (a);
-	s_con = (NMSettingConnection *) nm_connection_get_setting (b, NM_TYPE_SETTING_CONNECTION);
-	g_assert (s_con);
-	g_object_set (s_con, NM_SETTING_CONNECTION_TIMESTAMP, (guint64) 0, NULL);
-
-	g_assert (!nm_connection_compare (a, b, NM_SETTING_COMPARE_FLAG_EXACT));
-	g_object_unref (a);
-	g_object_unref (b);
-}
-
-static void
-test_connection_compare_setting_only_in_a (void)
-{
-	NMConnection *a, *b;
-
-	a = new_test_connection ();
-	b = nm_connection_duplicate (a);
-	nm_connection_remove_setting (b, NM_TYPE_SETTING_IP4_CONFIG);
-	g_assert (!nm_connection_compare (a, b, NM_SETTING_COMPARE_FLAG_EXACT));
-	g_object_unref (a);
-	g_object_unref (b);
-}
-
-static void
-test_connection_compare_key_only_in_b (void)
-{
-	NMConnection *a, *b;
-	NMSettingConnection *s_con;
-
-	a = new_test_connection ();
-	b = nm_connection_duplicate (a);
-	s_con = (NMSettingConnection *) nm_connection_get_setting (b, NM_TYPE_SETTING_CONNECTION);
-	g_assert (s_con);
-	g_object_set (s_con, NM_SETTING_CONNECTION_TIMESTAMP, (guint64) 0, NULL);
-
-	g_assert (!nm_connection_compare (a, b, NM_SETTING_COMPARE_FLAG_EXACT));
-	g_object_unref (a);
-	g_object_unref (b);
-}
-
-static void
-test_connection_compare_setting_only_in_b (void)
-{
-	NMConnection *a, *b;
-
-	a = new_test_connection ();
-	b = nm_connection_duplicate (a);
-	nm_connection_remove_setting (a, NM_TYPE_SETTING_IP4_CONFIG);
-	g_assert (!nm_connection_compare (a, b, NM_SETTING_COMPARE_FLAG_EXACT));
-	g_object_unref (a);
-	g_object_unref (b);
-}
-
-typedef struct {
-	const char *key_name;
-	guint32 result;
-} DiffKey;
-
-typedef struct {
-	const char *name;
-	DiffKey keys[30];
-} DiffSetting;
-
-#define ARRAY_LEN(a)  (sizeof (a) / sizeof (a[0]))
-
-static void
-ensure_diffs (GHashTable *diffs, const DiffSetting *check, gsize n_check)
-{
-	guint i;
-
-	g_assert (g_hash_table_size (diffs) == n_check);
-
-	/* Loop through the settings */
-	for (i = 0; i < n_check; i++) {
-		GHashTable *setting_hash;
-		guint z = 0;
-
-		setting_hash = g_hash_table_lookup (diffs, check[i].name);
-		g_assert (setting_hash);
-
-		/* Get the number of keys to check */
-		while (check[i].keys[z].key_name)
-			z++;
-		g_assert (g_hash_table_size (setting_hash) == z);
-
-		/* Now compare the actual keys */
-		for (z = 0; check[i].keys[z].key_name; z++) {
-			NMSettingDiffResult result;
-
-			result = GPOINTER_TO_UINT (g_hash_table_lookup (setting_hash, check[i].keys[z].key_name));
-			g_assert (result == check[i].keys[z].result);
-		}
-	}
-}
-
-static void
-test_connection_diff_a_only (void)
-{
-	NMConnection *connection;
-	GHashTable *out_diffs = NULL;
-	gboolean same;
-	const DiffSetting settings[] = {
-		{ NM_SETTING_CONNECTION_SETTING_NAME, {
-			{ NM_SETTING_CONNECTION_ID,                   NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_CONNECTION_UUID,                 NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_CONNECTION_INTERFACE_NAME,       NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_CONNECTION_TYPE,                 NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_CONNECTION_TIMESTAMP,            NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_CONNECTION_AUTOCONNECT,          NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_CONNECTION_READ_ONLY,            NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_CONNECTION_PERMISSIONS,          NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_CONNECTION_ZONE,                 NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_CONNECTION_MASTER,               NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_CONNECTION_SLAVE_TYPE,           NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_CONNECTION_SECONDARIES,          NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_CONNECTION_GATEWAY_PING_TIMEOUT, NM_SETTING_DIFF_RESULT_IN_A },
-			{ NULL, NM_SETTING_DIFF_RESULT_UNKNOWN }
-		} },
-		{ NM_SETTING_WIRED_SETTING_NAME, {
-			{ NM_SETTING_WIRED_PORT,                  NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_WIRED_SPEED,                 NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_WIRED_DUPLEX,                NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_WIRED_AUTO_NEGOTIATE,        NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_WIRED_MAC_ADDRESS,           NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_WIRED_CLONED_MAC_ADDRESS,    NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST, NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_WIRED_MTU,                   NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_WIRED_S390_SUBCHANNELS,      NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_WIRED_S390_NETTYPE,          NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_WIRED_S390_OPTIONS,          NM_SETTING_DIFF_RESULT_IN_A },
-			{ NULL, NM_SETTING_DIFF_RESULT_UNKNOWN },
-		} },
-		{ NM_SETTING_IP4_CONFIG_SETTING_NAME, {
-			{ NM_SETTING_IP4_CONFIG_METHOD,             NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_IP4_CONFIG_DNS,                NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_IP4_CONFIG_DNS_SEARCH,         NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_IP4_CONFIG_ADDRESSES,          NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_IP4_CONFIG_ROUTES,             NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_IP4_CONFIG_ROUTE_METRIC,       NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_IP4_CONFIG_IGNORE_AUTO_ROUTES, NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_IP4_CONFIG_IGNORE_AUTO_DNS,    NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_IP4_CONFIG_DHCP_CLIENT_ID,     NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_IP4_CONFIG_DHCP_TIMEOUT,       NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_IP4_CONFIG_DHCP_SEND_HOSTNAME, NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_IP4_CONFIG_DHCP_HOSTNAME,      NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_IP4_CONFIG_NEVER_DEFAULT,      NM_SETTING_DIFF_RESULT_IN_A },
-			{ NM_SETTING_IP4_CONFIG_MAY_FAIL,           NM_SETTING_DIFF_RESULT_IN_A },
-			{ NULL, NM_SETTING_DIFF_RESULT_UNKNOWN },
-		} },
-	};
-
-	connection = new_test_connection ();
-
-	same = nm_connection_diff (connection, NULL, NM_SETTING_COMPARE_FLAG_EXACT, &out_diffs);
-	g_assert (same == FALSE);
-	g_assert (out_diffs != NULL);
-	g_assert (g_hash_table_size (out_diffs) > 0);
-
-	ensure_diffs (out_diffs, settings, ARRAY_LEN (settings));
-
-	g_hash_table_destroy (out_diffs);
-	g_object_unref (connection);
-}
-
-static void
-test_connection_diff_same (void)
-{
-	NMConnection *a, *b;
-	GHashTable *out_diffs = NULL;
-	gboolean same;
-
-	a = new_test_connection ();
-	b = nm_connection_duplicate (a);
-
-	same = nm_connection_diff (a, b, NM_SETTING_COMPARE_FLAG_EXACT, &out_diffs);
-	g_assert (same == TRUE);
-	g_assert (out_diffs == NULL);
-	g_object_unref (a);
-	g_object_unref (b);
-}
-
-static void
-test_connection_diff_different (void)
-{
-	NMConnection *a, *b;
-	GHashTable *out_diffs = NULL;
-	NMSettingIP4Config *s_ip4;
-	gboolean same;
-	const DiffSetting settings[] = {
-		{ NM_SETTING_IP4_CONFIG_SETTING_NAME, {
-			{ NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_DIFF_RESULT_IN_A | NM_SETTING_DIFF_RESULT_IN_B },
-			{ NULL, NM_SETTING_DIFF_RESULT_UNKNOWN },
-		} },
-	};
-
-	a = new_test_connection ();
-	b = nm_connection_duplicate (a);
-	s_ip4 = nm_connection_get_setting_ip4_config (a);
-	g_assert (s_ip4);
-	g_object_set (G_OBJECT (s_ip4),
-	              NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_MANUAL,
-	              NULL);
-
-	same = nm_connection_diff (a, b, NM_SETTING_COMPARE_FLAG_EXACT, &out_diffs);
-	g_assert (same == FALSE);
-	g_assert (out_diffs != NULL);
-	g_assert (g_hash_table_size (out_diffs) > 0);
-
-	ensure_diffs (out_diffs, settings, ARRAY_LEN (settings));
-
-	g_hash_table_destroy (out_diffs);
-	g_object_unref (a);
-	g_object_unref (b);
-}
-
-static void
-test_connection_diff_no_secrets (void)
-{
-	NMConnection *a, *b;
-	GHashTable *out_diffs = NULL;
-	NMSetting *s_pppoe;
-	gboolean same;
-	const DiffSetting settings[] = {
-		{ NM_SETTING_PPPOE_SETTING_NAME, {
-			{ NM_SETTING_PPPOE_PASSWORD, NM_SETTING_DIFF_RESULT_IN_B },
-			{ NULL, NM_SETTING_DIFF_RESULT_UNKNOWN },
-		} },
-	};
-
-	a = new_test_connection ();
-	s_pppoe = nm_setting_pppoe_new ();
-	g_object_set (G_OBJECT (s_pppoe),
-	              NM_SETTING_PPPOE_USERNAME, "thomas",
-	              NULL);
-	nm_connection_add_setting (a, s_pppoe);
-
-	b = nm_connection_duplicate (a);
-
-	/* Add a secret to B */
-	s_pppoe = NM_SETTING (nm_connection_get_setting_pppoe (b));
-	g_assert (s_pppoe);
-	g_object_set (G_OBJECT (s_pppoe),
-	              NM_SETTING_PPPOE_PASSWORD, "secretpassword",
-	              NULL);
-
-	/* Make sure the diff returns no results as secrets are ignored */
-	same = nm_connection_diff (a, b, NM_SETTING_COMPARE_FLAG_IGNORE_SECRETS, &out_diffs);
-	g_assert (same == TRUE);
-	g_assert (out_diffs == NULL);
-
-	/* Now make sure the diff returns results if secrets are not ignored */
-	same = nm_connection_diff (a, b, NM_SETTING_COMPARE_FLAG_EXACT, &out_diffs);
-	g_assert (same == FALSE);
-	g_assert (out_diffs != NULL);
-	g_assert (g_hash_table_size (out_diffs) > 0);
-
-	ensure_diffs (out_diffs, settings, ARRAY_LEN (settings));
-
-	g_hash_table_destroy (out_diffs);
-	g_object_unref (a);
-	g_object_unref (b);
-}
-
-static void
-test_connection_diff_inferrable (void)
-{
-	NMConnection *a, *b;
-	GHashTable *out_diffs = NULL;
-	gboolean same;
-	NMSettingConnection *s_con;
-	NMSettingWired *s_wired;
-	NMSettingIP4Config *s_ip4;
-	char *uuid;
-	const DiffSetting settings[] = {
-		{ NM_SETTING_CONNECTION_SETTING_NAME, {
-			{ NM_SETTING_CONNECTION_INTERFACE_NAME, NM_SETTING_DIFF_RESULT_IN_A },
-			{ NULL, NM_SETTING_DIFF_RESULT_UNKNOWN },
-		} },
-	};
-
-	a = new_test_connection ();
-	b = nm_connection_duplicate (a);
-
-	/* Change the UUID, wired MTU, and set ignore-auto-dns */
-	s_con = nm_connection_get_setting_connection (a);
-	g_assert (s_con);
-	uuid = nm_utils_uuid_generate ();
-	g_object_set (G_OBJECT (s_con),
-	              NM_SETTING_CONNECTION_UUID, uuid,
-	              NM_SETTING_CONNECTION_ID, "really neat connection",
-	              NULL);
-	g_free (uuid);
-
-	s_wired = nm_connection_get_setting_wired (a);
-	g_assert (s_wired);
-	g_object_set (G_OBJECT (s_wired), NM_SETTING_WIRED_MTU, 300, NULL);
-
-	s_ip4 = nm_connection_get_setting_ip4_config (a);
-	g_assert (s_ip4);
-	g_object_set (G_OBJECT (s_ip4), NM_SETTING_IP4_CONFIG_IGNORE_AUTO_DNS, TRUE, NULL);
-
-	/* Make sure the diff returns no results as secrets are ignored */
-	same = nm_connection_diff (a, b, NM_SETTING_COMPARE_FLAG_INFERRABLE, &out_diffs);
-	g_assert (same == TRUE);
-	g_assert (out_diffs == NULL);
-
-	/* And change a INFERRABLE property to ensure that it shows up in the diff results */
-	g_object_set (G_OBJECT (s_con), NM_SETTING_CONNECTION_INTERFACE_NAME, "usb0", NULL);
-
-	/* Make sure the diff returns no results as secrets are ignored */
-	same = nm_connection_diff (a, b, NM_SETTING_COMPARE_FLAG_INFERRABLE, &out_diffs);
-	g_assert (same == FALSE);
-	g_assert (out_diffs != NULL);
-	g_assert (g_hash_table_size (out_diffs) > 0);
-
-	ensure_diffs (out_diffs, settings, ARRAY_LEN (settings));
-
-	g_hash_table_destroy (out_diffs);
-	g_object_unref (a);
-	g_object_unref (b);
-}
-
-static void
-add_generic_settings (NMConnection *connection, const char *ctype)
-{
-	NMSetting *setting;
-	char *uuid;
-
-	uuid = nm_utils_uuid_generate ();
-
-	setting = nm_setting_connection_new ();
-	g_object_set (setting,
-	              NM_SETTING_CONNECTION_ID, "asdfasdfadf",
-	              NM_SETTING_CONNECTION_TYPE, ctype,
-	              NM_SETTING_CONNECTION_UUID, uuid,
-	              NULL);
-	nm_connection_add_setting (connection, setting);
-
-	g_free (uuid);
-
-	setting = nm_setting_ip4_config_new ();
-	g_object_set (setting, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL);
-	nm_connection_add_setting (connection, setting);
-
-	setting = nm_setting_ip6_config_new ();
-	g_object_set (setting, NM_SETTING_IP6_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_AUTO, NULL);
-	nm_connection_add_setting (connection, setting);
-}
-
-static void
-test_connection_good_base_types (void)
-{
-	NMConnection *connection;
-	NMSetting *setting;
-	gboolean success;
-	GError *error = NULL;
-	GByteArray *array;
-	const guint8 bdaddr[] = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66 };
-
-	/* Try a basic wired connection */
-	connection = nm_connection_new ();
-	add_generic_settings (connection, NM_SETTING_WIRED_SETTING_NAME);
-	setting = nm_setting_wired_new ();
-	nm_connection_add_setting (connection, setting);
-
-	success = nm_connection_verify (connection, &error);
-	g_assert_no_error (error);
-	g_assert (success);
-	g_object_unref (connection);
-
-	/* Try a wired PPPoE connection */
-	connection = nm_connection_new ();
-	add_generic_settings (connection, NM_SETTING_PPPOE_SETTING_NAME);
-	setting = nm_setting_pppoe_new ();
-	g_object_set (setting, NM_SETTING_PPPOE_USERNAME, "bob smith", NULL);
-	nm_connection_add_setting (connection, setting);
-
-	success = nm_connection_verify (connection, &error);
-	g_assert_no_error (error);
-	g_assert (success);
-	g_object_unref (connection);
-
-	/* Wifi connection */
-	connection = nm_connection_new ();
-	add_generic_settings (connection, NM_SETTING_WIRELESS_SETTING_NAME);
-
-	setting = nm_setting_wireless_new ();
-	array = g_byte_array_new ();
-	g_byte_array_append (array, (const guint8 *) "1234567", 7);
-	g_object_set (setting,
-	              NM_SETTING_WIRELESS_SSID, array,
-	              NM_SETTING_WIRELESS_MODE, "infrastructure",
-	              NULL);
-	g_byte_array_free (array, TRUE);
-	nm_connection_add_setting (connection, setting);
-
-	success = nm_connection_verify (connection, &error);
-	g_assert_no_error (error);
-	g_assert (success);
-	g_object_unref (connection);
-
-	/* Bluetooth connection */
-	connection = nm_connection_new ();
-	add_generic_settings (connection, NM_SETTING_BLUETOOTH_SETTING_NAME);
-
-	setting = nm_setting_bluetooth_new ();
-	array = g_byte_array_new ();
-	g_byte_array_append (array, bdaddr, sizeof (bdaddr));
-	g_object_set (setting,
-	              NM_SETTING_BLUETOOTH_BDADDR, array,
-	              NM_SETTING_CONNECTION_TYPE, NM_SETTING_BLUETOOTH_TYPE_PANU,
-	              NULL);
-	g_byte_array_free (array, TRUE);
-	nm_connection_add_setting (connection, setting);
-
-	success = nm_connection_verify (connection, &error);
-	g_assert_no_error (error);
-	g_assert (success);
-	g_object_unref (connection);
-
-	/* WiMAX connection */
-	connection = nm_connection_new ();
-	add_generic_settings (connection, NM_SETTING_WIMAX_SETTING_NAME);
-	setting = nm_setting_wimax_new ();
-	g_object_set (setting, NM_SETTING_WIMAX_NETWORK_NAME, "CLEAR", NULL);
-	nm_connection_add_setting (connection, setting);
-
-	success = nm_connection_verify (connection, &error);
-	g_assert_no_error (error);
-	g_assert (success);
-	g_object_unref (connection);
-
-	/* GSM connection */
-	connection = nm_connection_new ();
-	add_generic_settings (connection, NM_SETTING_GSM_SETTING_NAME);
-
-	setting = nm_setting_gsm_new ();
-	g_object_set (setting,
-	              NM_SETTING_GSM_NUMBER, "*99#",
-	              NM_SETTING_GSM_APN, "metered.billing.sucks",
-	              NULL);
-	nm_connection_add_setting (connection, setting);
-	g_clear_object (&connection);
-
-	/* CDMA connection */
-	connection = nm_connection_new ();
-	add_generic_settings (connection, NM_SETTING_CDMA_SETTING_NAME);
-
-	setting = nm_setting_cdma_new ();
-	g_object_set (setting,
-	              NM_SETTING_CDMA_NUMBER, "#777",
-	              NM_SETTING_CDMA_USERNAME, "foobar@vzw.com",
-	              NULL);
-	nm_connection_add_setting (connection, setting);
-
-	success = nm_connection_verify (connection, &error);
-	g_assert_no_error (error);
-	g_assert (success);
-	g_object_unref (connection);
-}
-
-static void
-test_connection_bad_base_types (void)
-{
-	NMConnection *connection;
-	NMSetting *setting;
-	gboolean success;
-	GError *error = NULL;
-
-	/* Test various non-base connection types to make sure they are rejected;
-	 * using a fake 'wired' connection so the rest of it verifies
-	 */
-
-	/* Connection setting */
-	connection = nm_connection_new ();
-	add_generic_settings (connection, NM_SETTING_CONNECTION_SETTING_NAME);
-	setting = nm_setting_wired_new ();
-	nm_connection_add_setting (connection, setting);
-
-	success = nm_connection_verify (connection, &error);
-	g_assert_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_CONNECTION_TYPE_INVALID);
-	g_assert (success == FALSE);
-	g_object_unref (connection);
-	g_clear_error (&error);
-
-	/* PPP setting */
-	connection = nm_connection_new ();
-	add_generic_settings (connection, NM_SETTING_PPP_SETTING_NAME);
-	setting = nm_setting_wired_new ();
-	nm_connection_add_setting (connection, setting);
-	setting = nm_setting_ppp_new ();
-	nm_connection_add_setting (connection, setting);
-
-	success = nm_connection_verify (connection, &error);
-	g_assert_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_CONNECTION_TYPE_INVALID);
-	g_assert (success == FALSE);
-	g_object_unref (connection);
-	g_clear_error (&error);
-
-	/* Serial setting */
-	connection = nm_connection_new ();
-	add_generic_settings (connection, NM_SETTING_SERIAL_SETTING_NAME);
-	setting = nm_setting_wired_new ();
-	nm_connection_add_setting (connection, setting);
-	setting = nm_setting_serial_new ();
-	nm_connection_add_setting (connection, setting);
-
-	success = nm_connection_verify (connection, &error);
-	g_assert_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_CONNECTION_TYPE_INVALID);
-	g_assert (success == FALSE);
-	g_object_unref (connection);
-	g_clear_error (&error);
-
-	/* IP4 setting */
-	connection = nm_connection_new ();
-	add_generic_settings (connection, NM_SETTING_IP4_CONFIG_SETTING_NAME);
-	setting = nm_setting_wired_new ();
-	nm_connection_add_setting (connection, setting);
-
-	success = nm_connection_verify (connection, &error);
-	g_assert_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_CONNECTION_TYPE_INVALID);
-	g_assert (success == FALSE);
-	g_object_unref (connection);
-	g_clear_error (&error);
-
-	/* IP6 setting */
-	connection = nm_connection_new ();
-	add_generic_settings (connection, NM_SETTING_IP6_CONFIG_SETTING_NAME);
-	setting = nm_setting_wired_new ();
-	nm_connection_add_setting (connection, setting);
-
-	success = nm_connection_verify (connection, &error);
-	g_assert_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_CONNECTION_TYPE_INVALID);
-	g_assert (success == FALSE);
-	g_object_unref (connection);
-	g_clear_error (&error);
-}
-
-static void
-test_setting_compare_id (void)
-{
-	gs_unref_object NMSetting *old = NULL, *new = NULL;
-	gboolean success;
-
-	old = nm_setting_connection_new ();
-	g_object_set (old,
-	              NM_SETTING_CONNECTION_ID, "really awesome cool connection",
-	              NM_SETTING_CONNECTION_UUID, "fbbd59d5-acab-4e30-8f86-258d272617e7",
-	              NM_SETTING_CONNECTION_AUTOCONNECT, FALSE,
-	              NULL);
-
-	new = nm_setting_duplicate (old);
-	g_object_set (new, NM_SETTING_CONNECTION_ID, "some different connection id", NULL);
-
-	/* First make sure they are different */
-	success = nm_setting_compare (old, new, NM_SETTING_COMPARE_FLAG_EXACT);
-	g_assert (success == FALSE);
-
-	success = nm_setting_compare (old, new, NM_SETTING_COMPARE_FLAG_IGNORE_ID);
-	g_assert (success);
-}
-
-static void
-_compare_secrets (NMSettingSecretFlags secret_flags,
-                  NMSettingCompareFlags comp_flags,
-                  gboolean remove_secret)
-{
-	gs_unref_object NMSetting *old = NULL, *new = NULL;
-	gboolean success;
-
-	/* Make sure that a connection with transient/unsaved secrets compares
-	 * successfully to the same connection without those secrets.
-	 */
-
-	old = nm_setting_wireless_security_new ();
-	g_object_set (old,
-	              NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "wpa-psk",
-	              NM_SETTING_WIRELESS_SECURITY_PSK, "really cool psk",
-	              NULL);
-	nm_setting_set_secret_flags (old, NM_SETTING_WIRELESS_SECURITY_PSK, secret_flags, NULL);
-
-	/* Clear the PSK from the duplicated setting */
-	new = nm_setting_duplicate (old);
-	if (remove_secret) {
-		g_object_set (new, NM_SETTING_WIRELESS_SECURITY_PSK, NULL, NULL);
-
-		success = nm_setting_compare (old, new, NM_SETTING_COMPARE_FLAG_EXACT);
-		g_assert (success == FALSE);
-	}
-
-	success = nm_setting_compare (old, new, comp_flags);
-	g_assert (success);
-}
-
-static void
-test_setting_compare_secrets (void)
-{
-	_compare_secrets (NM_SETTING_SECRET_FLAG_AGENT_OWNED, NM_SETTING_COMPARE_FLAG_IGNORE_AGENT_OWNED_SECRETS, TRUE);
-	_compare_secrets (NM_SETTING_SECRET_FLAG_NOT_SAVED, NM_SETTING_COMPARE_FLAG_IGNORE_NOT_SAVED_SECRETS, TRUE);
-	_compare_secrets (NM_SETTING_SECRET_FLAG_NONE, NM_SETTING_COMPARE_FLAG_IGNORE_SECRETS, TRUE);
-	_compare_secrets (NM_SETTING_SECRET_FLAG_NONE, NM_SETTING_COMPARE_FLAG_EXACT, FALSE);
-}
-
-static void
-_compare_vpn_secrets (NMSettingSecretFlags secret_flags,
-                      NMSettingCompareFlags comp_flags,
-                      gboolean remove_secret)
-{
-	gs_unref_object NMSetting *old = NULL, *new = NULL;
-	gboolean success;
-
-	/* Make sure that a connection with transient/unsaved secrets compares
-	 * successfully to the same connection without those secrets.
-	 */
-
-	old = nm_setting_vpn_new ();
-	nm_setting_vpn_add_secret (NM_SETTING_VPN (old), "foobarbaz", "really secret password");
-	nm_setting_vpn_add_secret (NM_SETTING_VPN (old), "asdfasdfasdf", "really adfasdfasdfasdf");
-	nm_setting_vpn_add_secret (NM_SETTING_VPN (old), "0123456778", "abcdefghijklmnpqrstuvqxyz");
-	nm_setting_vpn_add_secret (NM_SETTING_VPN (old), "borkbork", "yet another really secret password");
-	nm_setting_set_secret_flags (old, "borkbork", secret_flags, NULL);
-
-	/* Clear "borkbork" from the duplicated setting */
-	new = nm_setting_duplicate (old);
-	if (remove_secret) {
-		nm_setting_vpn_remove_secret (NM_SETTING_VPN (new), "borkbork");
-
-		/* First make sure they are different */
-		success = nm_setting_compare (old, new, NM_SETTING_COMPARE_FLAG_EXACT);
-		g_assert (success == FALSE);
-	}
-
-	success = nm_setting_compare (old, new, comp_flags);
-	g_assert (success);
-}
-
-static void
-test_setting_compare_vpn_secrets (void)
-{
-	_compare_vpn_secrets (NM_SETTING_SECRET_FLAG_AGENT_OWNED, NM_SETTING_COMPARE_FLAG_IGNORE_AGENT_OWNED_SECRETS, TRUE);
-	_compare_vpn_secrets (NM_SETTING_SECRET_FLAG_NOT_SAVED, NM_SETTING_COMPARE_FLAG_IGNORE_NOT_SAVED_SECRETS, TRUE);
-	_compare_vpn_secrets (NM_SETTING_SECRET_FLAG_NONE, NM_SETTING_COMPARE_FLAG_IGNORE_SECRETS, TRUE);
-	_compare_vpn_secrets (NM_SETTING_SECRET_FLAG_NONE, NM_SETTING_COMPARE_FLAG_EXACT, FALSE);
-}
-
-static void
-test_hwaddr_aton_ether_normal (void)
-{
-	guint8 buf[100];
-	guint8 expected[ETH_ALEN] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 };
-
-	g_assert (nm_utils_hwaddr_aton ("00:11:22:33:44:55", ARPHRD_ETHER, buf) != NULL);
-	g_assert (memcmp (buf, expected, sizeof (expected)) == 0);
-}
-
-static void
-test_hwaddr_aton_ib_normal (void)
-{
-	guint8 buf[100];
-	const char *source = "00:11:22:33:44:55:66:77:88:99:01:12:23:34:45:56:67:78:89:90";
-	guint8 expected[INFINIBAND_ALEN] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66,
-		0x77, 0x88, 0x99, 0x01, 0x12, 0x23, 0x34, 0x45, 0x56, 0x67, 0x78, 0x89,
-		0x90 };
-
-	g_assert (nm_utils_hwaddr_aton (source, ARPHRD_INFINIBAND, buf) != NULL);
-	g_assert (memcmp (buf, expected, sizeof (expected)) == 0);
-}
-
-static void
-test_hwaddr_aton_no_leading_zeros (void)
-{
-	guint8 buf[100];
-	guint8 expected[ETH_ALEN] = { 0x00, 0x1A, 0x2B, 0x03, 0x44, 0x05 };
-
-	g_assert (nm_utils_hwaddr_aton ("0:1a:2B:3:44:5", ARPHRD_ETHER, buf) != NULL);
-	g_assert (memcmp (buf, expected, sizeof (expected)) == 0);
-}
-
-static void
-test_hwaddr_aton_malformed (void)
-{
-	guint8 buf[100];
-
-	g_assert (nm_utils_hwaddr_aton ("0:1a:2B:3:a@%%", ARPHRD_ETHER, buf) == NULL);
-}
-
-static void
-test_connection_changed_cb (NMConnection *connection, gboolean *data)
-{
-	*data = TRUE;
-}
-
-static void
-test_ip4_prefix_to_netmask (void)
-{
-	int i;
-
-	for (i = 0; i<=32; i++) {
-		guint32 netmask = nm_utils_ip4_prefix_to_netmask (i);
-		int plen = nm_utils_ip4_netmask_to_prefix (netmask);
-
-		g_assert_cmpint (i, ==, plen);
-		{
-			guint32 msk = 0x80000000;
-			guint32 netmask2 = 0;
-			guint32 prefix = i;
-			while (prefix > 0) {
-				netmask2 |= msk;
-				msk >>= 1;
-				prefix--;
-			}
-			g_assert_cmpint (netmask, ==, (guint32) htonl (netmask2));
-		}
-	}
-}
-
-static void
-test_ip4_netmask_to_prefix (void)
-{
-	int i, j;
-
-	GRand *r = g_rand_new ();
-
-	g_rand_set_seed (r, 1);
-
-	for (i = 2; i<=32; i++) {
-		guint32 netmask = nm_utils_ip4_prefix_to_netmask (i);
-		guint32 netmask_lowest_bit = netmask & ~nm_utils_ip4_prefix_to_netmask (i-1);
-
-		g_assert_cmpint (i, ==, nm_utils_ip4_netmask_to_prefix (netmask));
-
-		for (j = 0; j < 2*i; j++) {
-			guint32 n = g_rand_int (r);
-			guint32 netmask_holey;
-			guint32 prefix_holey;
-
-			netmask_holey = (netmask & n) | netmask_lowest_bit;
-
-			if (netmask_holey == netmask)
-				continue;
-
-			/* create an invalid netmask with holes and check that the function
-			 * returns the longest prefix. */
-			prefix_holey = nm_utils_ip4_netmask_to_prefix (netmask_holey);
-
-			g_assert_cmpint (i, ==, prefix_holey);
-		}
-	}
-
-	g_rand_free (r);
-}
-
-#define ASSERT_CHANGED(statement) \
-{ \
-	changed = FALSE; \
-	statement; \
-	g_assert (changed); \
-}
-
-#define ASSERT_UNCHANGED(statement) \
-{ \
-	changed = FALSE; \
-	statement; \
-	g_assert (!changed); \
-}
-
-static void
-test_connection_changed_signal (void)
-{
-	NMConnection *connection;
-	gboolean changed = FALSE;
-
-	connection = new_test_connection ();
-	g_signal_connect (connection,
-	                  NM_CONNECTION_CHANGED,
-	                  (GCallback) test_connection_changed_cb,
-	                  &changed);
-
-	/* Add new setting */
-	ASSERT_CHANGED (nm_connection_add_setting (connection, nm_setting_vlan_new ()));
-
-	/* Remove existing setting */
-	ASSERT_CHANGED (nm_connection_remove_setting (connection, NM_TYPE_SETTING_VLAN));
-
-	/* Remove non-existing setting */
-	ASSERT_UNCHANGED (nm_connection_remove_setting (connection, NM_TYPE_SETTING_VLAN));
-
-	g_object_unref (connection);
-}
-
-static void
-test_setting_connection_changed_signal (void)
-{
-	NMConnection *connection;
-	gboolean changed = FALSE;
-	NMSettingConnection *s_con;
-	gs_free char *uuid = NULL;
-
-	connection = nm_connection_new ();
-	g_signal_connect (connection,
-	                  NM_CONNECTION_CHANGED,
-	                  (GCallback) test_connection_changed_cb,
-	                  &changed);
-
-	s_con = (NMSettingConnection *) nm_setting_connection_new ();
-	nm_connection_add_setting (connection, NM_SETTING (s_con));
-
-	ASSERT_CHANGED (g_object_set (s_con, NM_SETTING_CONNECTION_ID, "adfadfasdfaf", NULL));
-
-	ASSERT_CHANGED (nm_setting_connection_add_permission (s_con, "user", "billsmith", NULL));
-	ASSERT_CHANGED (nm_setting_connection_remove_permission (s_con, 0));
-
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (iter != NULL));
-	ASSERT_UNCHANGED (nm_setting_connection_remove_permission (s_con, 1));
-	g_test_assert_expected_messages ();
-
-	uuid = nm_utils_uuid_generate ();
-	ASSERT_CHANGED (nm_setting_connection_add_secondary (s_con, uuid));
-	ASSERT_CHANGED (nm_setting_connection_remove_secondary (s_con, 0));
-
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (elt != NULL));
-	ASSERT_UNCHANGED (nm_setting_connection_remove_secondary (s_con, 1));
-	g_test_assert_expected_messages ();
-
-	g_object_unref (connection);
-}
-
-static void
-test_setting_bond_changed_signal (void)
-{
-	NMConnection *connection;
-	gboolean changed = FALSE;
-	NMSettingBond *s_bond;
-
-	connection = nm_connection_new ();
-	g_signal_connect (connection,
-	                  NM_CONNECTION_CHANGED,
-	                  (GCallback) test_connection_changed_cb,
-	                  &changed);
-
-	s_bond = (NMSettingBond *) nm_setting_bond_new ();
-	nm_connection_add_setting (connection, NM_SETTING (s_bond));
-
-	ASSERT_CHANGED (nm_setting_bond_add_option (s_bond, NM_SETTING_BOND_OPTION_DOWNDELAY, "10"));
-	ASSERT_CHANGED (nm_setting_bond_remove_option (s_bond, NM_SETTING_BOND_OPTION_DOWNDELAY));
-	ASSERT_UNCHANGED (nm_setting_bond_remove_option (s_bond, NM_SETTING_BOND_OPTION_UPDELAY));
-
-	g_object_unref (connection);
-}
-
-static void
-test_setting_ip4_changed_signal (void)
-{
-	NMConnection *connection;
-	gboolean changed = FALSE;
-	NMSettingIP4Config *s_ip4;
-	NMIP4Address *addr;
-	NMIP4Route *route;
-
-	connection = nm_connection_new ();
-	g_signal_connect (connection,
-	                  NM_CONNECTION_CHANGED,
-	                  (GCallback) test_connection_changed_cb,
-	                  &changed);
-
-	s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new ();
-	nm_connection_add_setting (connection, NM_SETTING (s_ip4));
-
-	ASSERT_CHANGED (nm_setting_ip4_config_add_dns (s_ip4, 0x1122));
-	ASSERT_CHANGED (nm_setting_ip4_config_remove_dns (s_ip4, 0));
-
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (i <= priv->dns->len));
-	ASSERT_UNCHANGED (nm_setting_ip4_config_remove_dns (s_ip4, 1));
-	g_test_assert_expected_messages ();
-
-	nm_setting_ip4_config_add_dns (s_ip4, 0x3344);
-	ASSERT_CHANGED (nm_setting_ip4_config_clear_dns (s_ip4));
-
-	ASSERT_CHANGED (nm_setting_ip4_config_add_dns_search (s_ip4, "foobar.com"));
-	ASSERT_CHANGED (nm_setting_ip4_config_remove_dns_search (s_ip4, 0));
-
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (elt != NULL));
-	ASSERT_UNCHANGED (nm_setting_ip4_config_remove_dns_search (s_ip4, 1));
-	g_test_assert_expected_messages ();
-
-	ASSERT_CHANGED (nm_setting_ip4_config_add_dns_search (s_ip4, "foobar.com"));
-	ASSERT_CHANGED (nm_setting_ip4_config_clear_dns_searches (s_ip4));
-
-	addr = nm_ip4_address_new ();
-	nm_ip4_address_set_address (addr, 0x2233);
-	nm_ip4_address_set_prefix (addr, 24);
-	ASSERT_CHANGED (nm_setting_ip4_config_add_address (s_ip4, addr));
-	ASSERT_CHANGED (nm_setting_ip4_config_remove_address (s_ip4, 0));
-
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (elt != NULL));
-	ASSERT_UNCHANGED (nm_setting_ip4_config_remove_address (s_ip4, 1));
-	g_test_assert_expected_messages ();
-
-	nm_setting_ip4_config_add_address (s_ip4, addr);
-	ASSERT_CHANGED (nm_setting_ip4_config_clear_addresses (s_ip4));
-
-	route = nm_ip4_route_new ();
-	nm_ip4_route_set_dest (route, 0x2233);
-	nm_ip4_route_set_prefix (route, 24);
-
-	ASSERT_CHANGED (nm_setting_ip4_config_add_route (s_ip4, route));
-	ASSERT_CHANGED (nm_setting_ip4_config_remove_route (s_ip4, 0));
-
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (elt != NULL));
-	ASSERT_UNCHANGED (nm_setting_ip4_config_remove_route (s_ip4, 1));
-	g_test_assert_expected_messages ();
-
-	nm_setting_ip4_config_add_route (s_ip4, route);
-	ASSERT_CHANGED (nm_setting_ip4_config_clear_routes (s_ip4));
-
-	nm_ip4_address_unref (addr);
-	nm_ip4_route_unref (route);
-	g_object_unref (connection);
-}
-
-static void
-test_setting_ip6_changed_signal (void)
-{
-	NMConnection *connection;
-	gboolean changed = FALSE;
-	NMSettingIP6Config *s_ip6;
-	NMIP6Address *addr;
-	NMIP6Route *route;
-	const struct in6_addr t = { { { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 } } };
-
-	connection = nm_connection_new ();
-	g_signal_connect (connection,
-	                  NM_CONNECTION_CHANGED,
-	                  (GCallback) test_connection_changed_cb,
-	                  &changed);
-
-	s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new ();
-	nm_connection_add_setting (connection, NM_SETTING (s_ip6));
-
-	ASSERT_CHANGED (nm_setting_ip6_config_add_dns (s_ip6, &t));
-	ASSERT_CHANGED (nm_setting_ip6_config_remove_dns (s_ip6, 0));
-
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (elt != NULL));
-	ASSERT_UNCHANGED (nm_setting_ip6_config_remove_dns (s_ip6, 1));
-	g_test_assert_expected_messages ();
-
-	nm_setting_ip6_config_add_dns (s_ip6, &t);
-	ASSERT_CHANGED (nm_setting_ip6_config_clear_dns (s_ip6));
-
-	ASSERT_CHANGED (nm_setting_ip6_config_add_dns_search (s_ip6, "foobar.com"));
-	ASSERT_CHANGED (nm_setting_ip6_config_remove_dns_search (s_ip6, 0));
-
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (elt != NULL));
-	ASSERT_UNCHANGED (nm_setting_ip6_config_remove_dns_search (s_ip6, 1));
-	g_test_assert_expected_messages ();
-
-	nm_setting_ip6_config_add_dns_search (s_ip6, "foobar.com");
-	ASSERT_CHANGED (nm_setting_ip6_config_clear_dns_searches (s_ip6));
-
-	addr = nm_ip6_address_new ();
-	nm_ip6_address_set_address (addr, &t);
-	nm_ip6_address_set_prefix (addr, 64);
-
-	ASSERT_CHANGED (nm_setting_ip6_config_add_address (s_ip6, addr));
-	ASSERT_CHANGED (nm_setting_ip6_config_remove_address (s_ip6, 0));
-
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (elt != NULL));
-	ASSERT_UNCHANGED (nm_setting_ip6_config_remove_address (s_ip6, 1));
-	g_test_assert_expected_messages ();
-
-	nm_setting_ip6_config_add_address (s_ip6, addr);
-	ASSERT_CHANGED (nm_setting_ip6_config_clear_addresses (s_ip6));
-
-	route = nm_ip6_route_new ();
-	nm_ip6_route_set_dest (route, &t);
-	nm_ip6_route_set_prefix (route, 128);
-
-	ASSERT_CHANGED (nm_setting_ip6_config_add_route (s_ip6, route));
-	ASSERT_CHANGED (nm_setting_ip6_config_remove_route (s_ip6, 0));
-
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (elt != NULL));
-	ASSERT_UNCHANGED (nm_setting_ip6_config_remove_route (s_ip6, 1));
-	g_test_assert_expected_messages ();
-
-	nm_setting_ip6_config_add_route (s_ip6, route);
-	ASSERT_CHANGED (nm_setting_ip6_config_clear_routes (s_ip6));
-
-	nm_ip6_address_unref (addr);
-	nm_ip6_route_unref (route);
-	g_object_unref (connection);
-}
-
-static void
-test_setting_vlan_changed_signal (void)
-{
-	NMConnection *connection;
-	gboolean changed = FALSE;
-	NMSettingVlan *s_vlan;
-
-	connection = nm_connection_new ();
-	g_signal_connect (connection,
-	                  NM_CONNECTION_CHANGED,
-	                  (GCallback) test_connection_changed_cb,
-	                  &changed);
-
-	s_vlan = (NMSettingVlan *) nm_setting_vlan_new ();
-	nm_connection_add_setting (connection, NM_SETTING (s_vlan));
-
-	ASSERT_CHANGED (nm_setting_vlan_add_priority (s_vlan, NM_VLAN_INGRESS_MAP, 1, 3));
-	ASSERT_CHANGED (nm_setting_vlan_remove_priority (s_vlan, NM_VLAN_INGRESS_MAP, 0));
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (idx < g_slist_length (list)));
-	ASSERT_UNCHANGED (nm_setting_vlan_remove_priority (s_vlan, NM_VLAN_INGRESS_MAP, 1));
-	g_test_assert_expected_messages ();
-	ASSERT_CHANGED (nm_setting_vlan_add_priority_str (s_vlan, NM_VLAN_INGRESS_MAP, "1:3"));
-	ASSERT_CHANGED (nm_setting_vlan_clear_priorities (s_vlan, NM_VLAN_INGRESS_MAP));
-
-	ASSERT_CHANGED (nm_setting_vlan_add_priority (s_vlan, NM_VLAN_EGRESS_MAP, 1, 3));
-	ASSERT_CHANGED (nm_setting_vlan_remove_priority (s_vlan, NM_VLAN_EGRESS_MAP, 0));
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (idx < g_slist_length (list)));
-	ASSERT_UNCHANGED (nm_setting_vlan_remove_priority (s_vlan, NM_VLAN_EGRESS_MAP, 1));
-	g_test_assert_expected_messages ();
-	ASSERT_CHANGED (nm_setting_vlan_add_priority_str (s_vlan, NM_VLAN_EGRESS_MAP, "1:3"));
-	ASSERT_CHANGED (nm_setting_vlan_clear_priorities (s_vlan, NM_VLAN_EGRESS_MAP));
-
-	g_object_unref (connection);
-}
-
-static void
-test_setting_vpn_changed_signal (void)
-{
-	NMConnection *connection;
-	gboolean changed = FALSE;
-	NMSettingVPN *s_vpn;
-
-	connection = nm_connection_new ();
-	g_signal_connect (connection,
-	                  NM_CONNECTION_CHANGED,
-	                  (GCallback) test_connection_changed_cb,
-	                  &changed);
-
-	s_vpn = (NMSettingVPN *) nm_setting_vpn_new ();
-	nm_connection_add_setting (connection, NM_SETTING (s_vpn));
-
-	ASSERT_CHANGED (nm_setting_vpn_add_data_item (s_vpn, "foobar", "baz"));
-	ASSERT_CHANGED (nm_setting_vpn_remove_data_item (s_vpn, "foobar"));
-	ASSERT_UNCHANGED (nm_setting_vpn_remove_data_item (s_vpn, "not added"));
-
-	ASSERT_CHANGED (nm_setting_vpn_add_secret (s_vpn, "foobar", "baz"));
-	ASSERT_CHANGED (nm_setting_vpn_remove_secret (s_vpn, "foobar"));
-	ASSERT_UNCHANGED (nm_setting_vpn_remove_secret (s_vpn, "not added"));
-
-	g_object_unref (connection);
-}
-
-static void
-test_setting_wired_changed_signal (void)
-{
-	NMConnection *connection;
-	gboolean changed = FALSE;
-	NMSettingWired *s_wired;
-
-	connection = nm_connection_new ();
-	g_signal_connect (connection,
-	                  NM_CONNECTION_CHANGED,
-	                  (GCallback) test_connection_changed_cb,
-	                  &changed);
-
-	s_wired = (NMSettingWired *) nm_setting_wired_new ();
-	nm_connection_add_setting (connection, NM_SETTING (s_wired));
-
-	ASSERT_CHANGED (nm_setting_wired_add_s390_option (s_wired, "portno", "1"));
-	ASSERT_CHANGED (nm_setting_wired_remove_s390_option (s_wired, "portno"));
-	ASSERT_UNCHANGED (nm_setting_wired_remove_s390_option (s_wired, "layer2"));
-
-	g_object_unref (connection);
-}
-
-static void
-test_setting_wireless_changed_signal (void)
-{
-	NMConnection *connection;
-	gboolean changed = FALSE;
-	NMSettingWireless *s_wifi;
-
-	connection = nm_connection_new ();
-	g_signal_connect (connection,
-	                  NM_CONNECTION_CHANGED,
-	                  (GCallback) test_connection_changed_cb,
-	                  &changed);
-
-	s_wifi = (NMSettingWireless *) nm_setting_wireless_new ();
-	nm_connection_add_setting (connection, NM_SETTING (s_wifi));
-
-	ASSERT_CHANGED (nm_setting_wireless_add_seen_bssid (s_wifi, "00:11:22:33:44:55"));
-
-	g_object_unref (connection);
-}
-
-static void
-test_setting_wireless_security_changed_signal (void)
-{
-	NMConnection *connection;
-	gboolean changed = FALSE;
-	NMSettingWirelessSecurity *s_wsec;
-
-	connection = nm_connection_new ();
-	g_signal_connect (connection,
-	                  NM_CONNECTION_CHANGED,
-	                  (GCallback) test_connection_changed_cb,
-	                  &changed);
-
-	s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new ();
-	nm_connection_add_setting (connection, NM_SETTING (s_wsec));
-
-	/* Protos */
-	ASSERT_CHANGED (nm_setting_wireless_security_add_proto (s_wsec, "wpa"));
-	ASSERT_CHANGED (nm_setting_wireless_security_remove_proto (s_wsec, 0));
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (elt != NULL));
-	ASSERT_UNCHANGED (nm_setting_wireless_security_remove_proto (s_wsec, 1));
-	g_test_assert_expected_messages ();
-
-	nm_setting_wireless_security_add_proto (s_wsec, "wep");
-	ASSERT_CHANGED (nm_setting_wireless_security_clear_protos (s_wsec));
-
-	/* Pairwise ciphers */
-	ASSERT_CHANGED (nm_setting_wireless_security_add_pairwise (s_wsec, "tkip"));
-	ASSERT_CHANGED (nm_setting_wireless_security_remove_pairwise (s_wsec, 0));
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (elt != NULL));
-	ASSERT_UNCHANGED (nm_setting_wireless_security_remove_pairwise (s_wsec, 1));
-	g_test_assert_expected_messages ();
-
-	nm_setting_wireless_security_add_pairwise (s_wsec, "tkip");
-	ASSERT_CHANGED (nm_setting_wireless_security_clear_pairwise (s_wsec));
-
-	/* Group ciphers */
-	ASSERT_CHANGED (nm_setting_wireless_security_add_group (s_wsec, "ccmp"));
-	ASSERT_CHANGED (nm_setting_wireless_security_remove_group (s_wsec, 0));
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (elt != NULL));
-	ASSERT_UNCHANGED (nm_setting_wireless_security_remove_group (s_wsec, 1));
-	g_test_assert_expected_messages ();
-
-	nm_setting_wireless_security_add_group (s_wsec, "tkip");
-	ASSERT_CHANGED (nm_setting_wireless_security_clear_groups (s_wsec));
-
-	/* WEP key secret flags */
-	ASSERT_CHANGED (g_assert (nm_setting_set_secret_flags (NM_SETTING (s_wsec), "wep-key0", NM_SETTING_SECRET_FLAG_AGENT_OWNED, NULL)));
-	ASSERT_CHANGED (g_assert (nm_setting_set_secret_flags (NM_SETTING (s_wsec), "wep-key1", NM_SETTING_SECRET_FLAG_AGENT_OWNED, NULL)));
-	ASSERT_CHANGED (g_assert (nm_setting_set_secret_flags (NM_SETTING (s_wsec), "wep-key2", NM_SETTING_SECRET_FLAG_AGENT_OWNED, NULL)));
-	ASSERT_CHANGED (g_assert (nm_setting_set_secret_flags (NM_SETTING (s_wsec), "wep-key3", NM_SETTING_SECRET_FLAG_AGENT_OWNED, NULL)));
-
-	g_object_unref (connection);
-}
-
-static void
-test_setting_802_1x_changed_signal (void)
-{
-	NMConnection *connection;
-	gboolean changed = FALSE;
-	NMSetting8021x *s_8021x;
-
-	connection = nm_connection_new ();
-	g_signal_connect (connection,
-	                  NM_CONNECTION_CHANGED,
-	                  (GCallback) test_connection_changed_cb,
-	                  &changed);
-
-	s_8021x = (NMSetting8021x *) nm_setting_802_1x_new ();
-	nm_connection_add_setting (connection, NM_SETTING (s_8021x));
-
-	/* EAP methods */
-	ASSERT_CHANGED (nm_setting_802_1x_add_eap_method (s_8021x, "tls"));
-	ASSERT_CHANGED (nm_setting_802_1x_remove_eap_method (s_8021x, 0));
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (elt != NULL));
-	ASSERT_UNCHANGED (nm_setting_802_1x_remove_eap_method (s_8021x, 1));
-	g_test_assert_expected_messages ();
-
-	nm_setting_802_1x_add_eap_method (s_8021x, "ttls");
-	ASSERT_CHANGED (nm_setting_802_1x_clear_eap_methods (s_8021x));
-
-	/* alternate subject matches */
-	ASSERT_CHANGED (nm_setting_802_1x_add_altsubject_match (s_8021x, "EMAIL:server@example.com"));
-	ASSERT_CHANGED (nm_setting_802_1x_remove_altsubject_match (s_8021x, 0));
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (elt != NULL));
-	ASSERT_UNCHANGED (nm_setting_802_1x_remove_altsubject_match (s_8021x, 1));
-	g_test_assert_expected_messages ();
-
-	nm_setting_802_1x_add_altsubject_match (s_8021x, "EMAIL:server@example.com");
-	ASSERT_CHANGED (nm_setting_802_1x_clear_altsubject_matches (s_8021x));
-
-	/* phase2 alternate subject matches */
-	ASSERT_CHANGED (nm_setting_802_1x_add_phase2_altsubject_match (s_8021x, "EMAIL:server@example.com"));
-	ASSERT_CHANGED (nm_setting_802_1x_remove_phase2_altsubject_match (s_8021x, 0));
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (elt != NULL));
-	ASSERT_UNCHANGED (nm_setting_802_1x_remove_phase2_altsubject_match (s_8021x, 1));
-	g_test_assert_expected_messages ();
-
-	nm_setting_802_1x_add_phase2_altsubject_match (s_8021x, "EMAIL:server@example.com");
-	ASSERT_CHANGED (nm_setting_802_1x_clear_phase2_altsubject_matches (s_8021x));
-
-	g_object_unref (connection);
-}
-
-static void
-test_setting_old_uuid (void)
-{
-	GError *error = NULL;
-	gs_unref_object NMSetting *setting = NULL;
-	gboolean success;
-
-	/* NetworkManager-0.9.4.0 generated 40-character UUIDs with no dashes,
-	 * like this one. Test that we maintain compatibility. */
-	const char *uuid = "f43bec2cdd60e5da381ebb1eb1fa39f3cc52660c";
-
-	setting = nm_setting_connection_new ();
-	g_object_set (G_OBJECT (setting),
-	              NM_SETTING_CONNECTION_ID, "uuidtest",
-	              NM_SETTING_CONNECTION_UUID, uuid,
-	              NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRED_SETTING_NAME,
-	              NULL);
-
-	success = nm_setting_verify (NM_SETTING (setting), NULL, &error);
-	g_assert_no_error (error);
-	g_assert (success == TRUE);
-}
-
-/*
- * nm_connection_verify() modifies the connection by setting
- * the interface-name property to the virtual_iface_name of
- * the type specific settings.
- *
- * It would be preferable of verify() not to touch the connection,
- * but as it is now, stick with it and test it.
- **/
-static void
-test_connection_verify_sets_interface_name (void)
-{
-	NMConnection *con;
-	NMSettingConnection *s_con;
-	NMSettingBond *s_bond;
-	GError *error = NULL;
-	gboolean success;
-
-	s_con = (NMSettingConnection *) nm_setting_connection_new ();
-	g_object_set (G_OBJECT (s_con),
-	              NM_SETTING_CONNECTION_ID, "test1",
-	              NM_SETTING_CONNECTION_UUID, "22001632-bbb4-4616-b277-363dce3dfb5b",
-	              NM_SETTING_CONNECTION_TYPE, NM_SETTING_BOND_SETTING_NAME,
-	              NULL);
-	s_bond = (NMSettingBond *) nm_setting_bond_new ();
-	g_object_set (G_OBJECT (s_bond),
-	              NM_SETTING_BOND_INTERFACE_NAME, "bond-x",
-	              NULL);
-
-	con = nm_connection_new ();
-	nm_connection_add_setting (con, NM_SETTING (s_con));
-	nm_connection_add_setting (con, NM_SETTING (s_bond));
-
-	g_assert_cmpstr (nm_connection_get_interface_name (con), ==, NULL);
-
-	/* for backward compatibility, normalizes the interface name */
-	success = nm_connection_verify (con, &error);
-	g_assert (success && !error);
-
-	g_assert_cmpstr (nm_connection_get_interface_name (con), ==, "bond-x");
-
-	g_object_unref (con);
-}
-
-/*
- * Test normalization of interface-name
- **/
-static void
-test_connection_normalize_virtual_iface_name (void)
-{
-	NMConnection *con;
-	NMSettingConnection *s_con;
-	NMSettingVlan *s_vlan;
-	NMSetting *setting;
-	GError *error = NULL;
-	gboolean success;
-	const char *IFACE_NAME = "iface";
-	const char *IFACE_VIRT = "iface-X";
-	gboolean modified = FALSE;
-
-	con = nm_connection_new ();
-
-	setting = nm_setting_ip4_config_new ();
-	g_object_set (setting,
-	              NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO,
-	              NULL);
-	nm_connection_add_setting (con, setting);
-
-	setting = nm_setting_ip6_config_new ();
-	g_object_set (setting,
-	              NM_SETTING_IP6_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_AUTO,
-	              NM_SETTING_IP6_CONFIG_MAY_FAIL, TRUE,
-	              NULL);
-	nm_connection_add_setting (con, setting);
-
-	s_con = (NMSettingConnection *) nm_setting_connection_new ();
-	g_object_set (G_OBJECT (s_con),
-	              NM_SETTING_CONNECTION_ID, "test1",
-	              NM_SETTING_CONNECTION_UUID, "22001632-bbb4-4616-b277-363dce3dfb5b",
-	              NM_SETTING_CONNECTION_TYPE, NM_SETTING_VLAN_SETTING_NAME,
-	              NM_SETTING_CONNECTION_INTERFACE_NAME, IFACE_NAME,
-	              NULL);
-	s_vlan = (NMSettingVlan *) nm_setting_vlan_new ();
-	g_object_set (G_OBJECT (s_vlan),
-	              NM_SETTING_VLAN_INTERFACE_NAME, IFACE_VIRT,
-	              NM_SETTING_VLAN_PARENT, "eth0",
-	              NULL);
-
-	nm_connection_add_setting (con, NM_SETTING (s_con));
-	nm_connection_add_setting (con, NM_SETTING (s_vlan));
-
-	g_assert_cmpstr (nm_connection_get_interface_name (con), ==, IFACE_NAME);
-	g_assert_cmpstr (nm_setting_vlan_get_interface_name (s_vlan), ==, IFACE_VIRT);
-
-	/* for backward compatibility, normalizes the interface name */
-	success = nm_connection_verify (con, &error);
-	g_assert (success && !error);
-
-	g_assert_cmpstr (nm_connection_get_interface_name (con), ==, IFACE_NAME);
-	g_assert_cmpstr (nm_setting_vlan_get_interface_name (s_vlan), ==, IFACE_VIRT);
-
-	success = nm_connection_normalize (con, NULL, &modified, &error);
-	g_assert (success && !error);
-	g_assert (modified);
-
-	g_assert_cmpstr (nm_connection_get_interface_name (con), ==, IFACE_NAME);
-	g_assert_cmpstr (nm_setting_vlan_get_interface_name (s_vlan), ==, IFACE_NAME);
-
-	success = nm_connection_verify (con, &error);
-	g_assert (success && !error);
-
-	g_object_unref (con);
-}
-
-#if defined (__SANITIZE_ADDRESS__)
-static void
-test_libnm_linking (void)
-{
-	g_test_skip ("Skipping test since address sanitizer is enabled");
-}
-#else /* __SANITIZE_ADDRESS__ */
-static void
-_test_libnm_linking_setup_child_process (gpointer user_data)
-{
-	int val;
-	struct rlimit limit;
-
-	/* the child process is supposed to crash. We don't want it
-	 * to write a core dump. */
-
-	val = getrlimit (RLIMIT_CORE, &limit);
-	if (val == 0) {
-		limit.rlim_cur = 0;
-		val = setrlimit (RLIMIT_CORE, &limit);
-		if (val == 0)
-			return;
-	}
-	/* on error, do not crash or fail assertion. Instead just exit */
-	exit (1);
-}
-
-static void
-test_libnm_linking (void)
-{
-	char *argv[] = { "./test-libnm-linking", NULL };
-	char *out, *err;
-	int status;
-	GError *error = NULL;
-
-	g_spawn_sync (NM_BUILD_BUILDDIR"/libnm-util/tests",
-	              argv, NULL, 0 /*G_SPAWN_DEFAULT*/,
-	              _test_libnm_linking_setup_child_process, NULL,
-	              &out, &err, &status, &error);
-	g_assert_no_error (error);
-
-	g_assert (WIFSIGNALED (status));
-
-	g_assert (strstr (err, "Mixing libnm") != NULL);
-	g_free (out);
-	g_free (err);
-}
-#endif /* __SANITIZE_ADDRESS__ */
-
-/*****************************************************************************/
-
-static void
-_test_uuid (const char *expected_uuid, const char *str)
-{
-	gs_free char *uuid_test = NULL;
-
-	g_assert (str);
-
-	uuid_test = nm_utils_uuid_generate_from_string (str);
-
-	g_assert (uuid_test);
-	g_assert (nm_utils_is_uuid (uuid_test));
-
-	if (strcmp (uuid_test, expected_uuid)) {
-		g_error ("UUID test failed: text=%s, uuid=%s, expected=%s",
-		         str, uuid_test, expected_uuid);
-	}
-}
-
-static void
-test_nm_utils_uuid_generate_from_string (void)
-{
-	gs_free char *uuid_test = NULL;
-
-	_test_uuid ("0cc175b9-c0f1-b6a8-31c3-99e269772661", "a");
-	_test_uuid ("098f6bcd-4621-d373-cade-4e832627b4f6", "test");
-	_test_uuid ("59c0547b-7fe2-1c15-2cce-e328e8bf6742", "/etc/NetworkManager/system-connections/em1");
-
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (s && *s));
-	uuid_test = nm_utils_uuid_generate_from_string ("");
-	g_assert (uuid_test == NULL);
-	g_test_assert_expected_messages ();
-
-	NMTST_EXPECT_LIBNM_U_CRITICAL (NMTST_G_RETURN_MSG (s && *s));
-	uuid_test = nm_utils_uuid_generate_from_string (NULL);
-	g_assert (uuid_test == NULL);
-	g_test_assert_expected_messages ();
-}
-
-/*****************************************************************************/
-
-NMTST_DEFINE ();
-
-int main (int argc, char **argv)
-{
-	nmtst_init (&argc, &argv, TRUE);
-
-	/* The tests */
-	g_test_add_func ("/libnm/setting_vpn_items", test_setting_vpn_items);
-	g_test_add_func ("/libnm/setting_vpn_update_secrets", test_setting_vpn_update_secrets);
-	g_test_add_func ("/libnm/setting_vpn_modify_during_foreach", test_setting_vpn_modify_during_foreach);
-	g_test_add_func ("/libnm/setting_ip6_config_old_address_array", test_setting_ip6_config_old_address_array);
-	g_test_add_func ("/libnm/setting_gsm_apn_spaces", test_setting_gsm_apn_spaces);
-	g_test_add_func ("/libnm/setting_gsm_apn_bad_chars", test_setting_gsm_apn_bad_chars);
-	g_test_add_func ("/libnm/setting_gsm_apn_underscore", test_setting_gsm_apn_underscore);
-	g_test_add_func ("/libnm/setting_gsm_without_number", test_setting_gsm_without_number);
-	g_test_add_func ("/libnm/setting_to_hash_all", test_setting_to_hash_all);
-	g_test_add_func ("/libnm/setting_to_hash_no_secrets", test_setting_to_hash_no_secrets);
-	g_test_add_func ("/libnm/setting_to_hash_only_secrets", test_setting_to_hash_only_secrets);
-	g_test_add_func ("/libnm/setting_compare_id", test_setting_compare_id);
-	g_test_add_func ("/libnm/setting_compare_secrets", test_setting_compare_secrets);
-	g_test_add_func ("/libnm/setting_compare_vpn_secrets", test_setting_compare_vpn_secrets);
-	g_test_add_func ("/libnm/setting_old_uuid", test_setting_old_uuid);
-
-	g_test_add_func ("/libnm/connection_to_hash_setting_name", test_connection_to_hash_setting_name);
-	g_test_add_func ("/libnm/setting_new_from_hash", test_setting_new_from_hash);
-	g_test_add_func ("/libnm/connection_replace_settings", test_connection_replace_settings);
-	g_test_add_func ("/libnm/connection_replace_settings_from_connection", test_connection_replace_settings_from_connection);
-	g_test_add_func ("/libnm/connection_new_from_hash", test_connection_new_from_hash);
-	g_test_add_func ("/libnm/connection_verify_sets_interface_name", test_connection_verify_sets_interface_name);
-	g_test_add_func ("/libnm/connection_normalize_virtual_iface_name", test_connection_normalize_virtual_iface_name);
-
-	g_test_add_func ("/libnm/setting_connection_permissions_helpers", test_setting_connection_permissions_helpers);
-	g_test_add_func ("/libnm/setting_connection_permissions_property", test_setting_connection_permissions_property);
-
-	g_test_add_func ("/libnm/connection_compare_same", test_connection_compare_same);
-	g_test_add_func ("/libnm/connection_compare_key_only_in_a", test_connection_compare_key_only_in_a);
-	g_test_add_func ("/libnm/connection_compare_setting_only_in_a", test_connection_compare_setting_only_in_a);
-	g_test_add_func ("/libnm/connection_compare_key_only_in_b", test_connection_compare_key_only_in_b);
-	g_test_add_func ("/libnm/connection_compare_setting_only_in_b", test_connection_compare_setting_only_in_b);
-
-	g_test_add_func ("/libnm/connection_diff_a_only", test_connection_diff_a_only);
-	g_test_add_func ("/libnm/connection_diff_same", test_connection_diff_same);
-	g_test_add_func ("/libnm/connection_diff_different", test_connection_diff_different);
-	g_test_add_func ("/libnm/connection_diff_no_secrets", test_connection_diff_no_secrets);
-	g_test_add_func ("/libnm/connection_diff_inferrable", test_connection_diff_inferrable);
-	g_test_add_func ("/libnm/connection_good_base_types", test_connection_good_base_types);
-	g_test_add_func ("/libnm/connection_bad_base_types", test_connection_bad_base_types);
-
-	g_test_add_func ("/libnm/hwaddr_aton_ether_normal", test_hwaddr_aton_ether_normal);
-	g_test_add_func ("/libnm/hwaddr_aton_ib_normal", test_hwaddr_aton_ib_normal);
-	g_test_add_func ("/libnm/hwaddr_aton_no_leading_zeros", test_hwaddr_aton_no_leading_zeros);
-	g_test_add_func ("/libnm/hwaddr_aton_malformed", test_hwaddr_aton_malformed);
-	g_test_add_func ("/libnm/ip4_prefix_to_netmask", test_ip4_prefix_to_netmask);
-	g_test_add_func ("/libnm/ip4_netmask_to_prefix", test_ip4_netmask_to_prefix);
-
-	g_test_add_func ("/libnm/connection_changed_signal", test_connection_changed_signal);
-	g_test_add_func ("/libnm/setting_connection_changed_signal", test_setting_connection_changed_signal);
-	g_test_add_func ("/libnm/setting_bond_changed_signal", test_setting_bond_changed_signal);
-	g_test_add_func ("/libnm/setting_ip4_changed_signal", test_setting_ip4_changed_signal);
-	g_test_add_func ("/libnm/setting_ip6_changed_signal", test_setting_ip6_changed_signal);
-	g_test_add_func ("/libnm/setting_vlan_changed_signal", test_setting_vlan_changed_signal);
-	g_test_add_func ("/libnm/setting_vpn_changed_signal", test_setting_vpn_changed_signal);
-	g_test_add_func ("/libnm/setting_wired_changed_signal", test_setting_wired_changed_signal);
-	g_test_add_func ("/libnm/setting_wireless_changed_signal", test_setting_wireless_changed_signal);
-	g_test_add_func ("/libnm/setting_wireless_security_changed_signal", test_setting_wireless_security_changed_signal);
-	g_test_add_func ("/libnm/setting_802_1x_changed_signal", test_setting_802_1x_changed_signal);
-
-	g_test_add_func ("/libnm/libnm_linking", test_libnm_linking);
-
-	g_test_add_func ("/libnm/nm_utils_uuid_generate_from_string", test_nm_utils_uuid_generate_from_string);
-
-	return g_test_run ();
-}
-
diff --git a/libnm-util/tests/test-libnm-linking.c b/libnm-util/tests/test-libnm-linking.c
deleted file mode 100644
index 0e143e73..00000000
--- a/libnm-util/tests/test-libnm-linking.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
-/*
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Copyright 2014 Red Hat, Inc.
- *
- */
-
-#include "nm-default.h"
-
-#include "nm-utils.h"
-
-extern GType nm_state_get_type (void);
-
-int
-main (int argc, char **argv)
-{
-	/* If we reach main(), then the test has failed. */
-	g_printerr ("libnm/libnm-util constructor failed to detect symbol mixing\n");
-
-	/* This is just to ensure that both libnm.so and libnm-util.so get pulled
-	 * in; libnm-util doesn't have "nm_state_get_type" and libnm doesn't have
-	 * "nm_utils_slist_free". (We intentionally choose different symbols than the
-	 * ones that the libraries check for.)
-	 */
-	nm_state_get_type ();
-	G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
-	nm_utils_slist_free (NULL, g_free);
-	G_GNUC_END_IGNORE_DEPRECATIONS;
-
-	g_assert_not_reached ();
-}
diff --git a/libnm-util/tests/test-secrets.c b/libnm-util/tests/test-secrets.c
deleted file mode 100644
index 43c206ff..00000000
--- a/libnm-util/tests/test-secrets.c
+++ /dev/null
@@ -1,684 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
-/*
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Copyright 2008 - 2011 Red Hat, Inc.
- *
- */
-
-#include "nm-default.h"
-
-#include <string.h>
-
-#include "nm-utils.h"
-
-#include "nm-setting-connection.h"
-#include "nm-setting-wired.h"
-#include "nm-setting-8021x.h"
-#include "nm-setting-ip4-config.h"
-#include "nm-setting-wireless.h"
-#include "nm-setting-wireless-security.h"
-#include "nm-setting-cdma.h"
-#include "nm-setting-gsm.h"
-#include "nm-setting-ppp.h"
-#include "nm-setting-pppoe.h"
-#include "nm-setting-vpn.h"
-
-#include "nm-utils/nm-test-utils.h"
-
-#define TEST_CERT_DIR                         NM_BUILD_SRCDIR"/libnm-core/tests/certs"
-#define TEST_NEED_SECRETS_EAP_TLS_CA_CERT     TEST_CERT_DIR "/test_ca_cert.pem"
-#define TEST_NEED_SECRETS_EAP_TLS_CLIENT_CERT TEST_CERT_DIR "/test_key_and_cert.pem"
-#define TEST_NEED_SECRETS_EAP_TLS_PRIVATE_KEY TEST_CERT_DIR "/test_key_and_cert.pem"
-
-static void
-_assert_hints_has (GPtrArray *hints, const char *item)
-{
-	guint i;
-	guint found = 0;
-
-	g_assert (hints);
-	g_assert (item);
-	for (i = 0; i < hints->len; i++) {
-		g_assert (hints->pdata[i]);
-		if (!strcmp (item, hints->pdata[i]))
-			found++;
-	}
-	g_assert_cmpint (found, ==, 1);
-}
-
-static NMConnection *
-make_tls_connection (const char *detail, NMSetting8021xCKScheme scheme)
-{
-	NMConnection *connection;
-	NMSettingConnection *s_con;
-	NMSetting8021x *s_8021x;
-	NMSettingWired *s_wired;
-	NMSettingIP4Config *s_ip4;
-	char *uuid;
-	gboolean success;
-	GError *error = NULL;
-
-	connection = nm_connection_new ();
-
-	/* Connection setting */
-	s_con = (NMSettingConnection *) nm_setting_connection_new ();
-	nm_connection_add_setting (connection, NM_SETTING (s_con));
-
-	uuid = nm_utils_uuid_generate ();
-	g_object_set (s_con,
-	              NM_SETTING_CONNECTION_ID, "Test Need TLS Secrets",
-	              NM_SETTING_CONNECTION_UUID, uuid,
-	              NM_SETTING_CONNECTION_AUTOCONNECT, TRUE,
-	              NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRED_SETTING_NAME,
-	              NULL);
-	g_free (uuid);
-
-	/* Wired setting */
-	s_wired = (NMSettingWired *) nm_setting_wired_new ();
-	nm_connection_add_setting (connection, NM_SETTING (s_wired));
-
-	/* Wireless security setting */
-	s_8021x = (NMSetting8021x *) nm_setting_802_1x_new ();
-	nm_connection_add_setting (connection, NM_SETTING (s_8021x));
-
-	g_object_set (s_8021x, NM_SETTING_802_1X_IDENTITY, "Bill Smith", NULL);
-
-	nm_setting_802_1x_add_eap_method (s_8021x, "tls");
-
-	success = nm_setting_802_1x_set_ca_cert (s_8021x,
-	                                         TEST_NEED_SECRETS_EAP_TLS_CA_CERT,
-	                                         scheme,
-	                                         NULL,
-	                                         &error);
-	nmtst_assert_success (success, error);
-
-	success = nm_setting_802_1x_set_client_cert (s_8021x,
-	                                             TEST_NEED_SECRETS_EAP_TLS_CLIENT_CERT,
-	                                             scheme,
-	                                             NULL,
-	                                             &error);
-	nmtst_assert_success (success, error);
-
-	success = nm_setting_802_1x_set_private_key (s_8021x,
-	                                             TEST_NEED_SECRETS_EAP_TLS_PRIVATE_KEY,
-	                                             "test",
-	                                             scheme,
-	                                             NULL,
-	                                             &error);
-	nmtst_assert_success (success, error);
-
-	/* IP4 setting */
-	s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new ();
-	nm_connection_add_setting (connection, NM_SETTING (s_ip4));
-
-	g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL);
-
-	nmtst_assert_connection_verifies_and_normalizable (connection);
-
-	return connection;
-}
-
-static void
-test_need_tls_secrets_path (void)
-{
-	NMConnection *connection;
-	const char *setting_name;
-	GPtrArray *hints = NULL;
-
-	connection = make_tls_connection ("need-tls-secrets-path-key", NM_SETTING_802_1X_CK_SCHEME_PATH);
-
-	/* Ensure we don't need any secrets since we just set up the connection */
-	setting_name = nm_connection_need_secrets (connection, &hints);
-	g_assert (!setting_name);
-	g_assert (!hints);
-
-	/* Connection is good; clear secrets and ensure private key password is then required */
-	nm_connection_clear_secrets (connection);
-
-	hints = NULL;
-	setting_name = nm_connection_need_secrets (connection, &hints);
-	g_assert_cmpstr (setting_name, ==, NM_SETTING_802_1X_SETTING_NAME);
-	_assert_hints_has (hints, NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD);
-
-	g_ptr_array_free (hints, TRUE);
-	g_object_unref (connection);
-}
-
-static void
-test_need_tls_secrets_blob (void)
-{
-	NMConnection *connection;
-	const char *setting_name;
-	GPtrArray *hints = NULL;
-
-	connection = make_tls_connection ("need-tls-secrets-blob-key", NM_SETTING_802_1X_CK_SCHEME_BLOB);
-
-	/* Ensure we don't need any secrets since we just set up the connection */
-	setting_name = nm_connection_need_secrets (connection, &hints);
-	g_assert (!setting_name);
-	g_assert (!hints);
-
-	/* Clear secrets and ensure password is again required */
-	nm_connection_clear_secrets (connection);
-
-	hints = NULL;
-	setting_name = nm_connection_need_secrets (connection, &hints);
-	g_assert_cmpstr (setting_name, ==, NM_SETTING_802_1X_SETTING_NAME);
-	_assert_hints_has (hints, NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD);
-
-	g_ptr_array_free (hints, TRUE);
-	g_object_unref (connection);
-}
-
-static NMConnection *
-make_tls_phase2_connection (const char *detail, NMSetting8021xCKScheme scheme)
-{
-	NMConnection *connection;
-	NMSettingConnection *s_con;
-	NMSetting8021x *s_8021x;
-	NMSettingWired *s_wired;
-	NMSettingIP4Config *s_ip4;
-	char *uuid;
-	gboolean success;
-	GError *error = NULL;
-
-	connection = nm_connection_new ();
-
-	/* Connection setting */
-	s_con = (NMSettingConnection *) nm_setting_connection_new ();
-	nm_connection_add_setting (connection, NM_SETTING (s_con));
-
-	uuid = nm_utils_uuid_generate ();
-	g_object_set (s_con,
-	              NM_SETTING_CONNECTION_ID, "Test Need TLS Secrets",
-	              NM_SETTING_CONNECTION_UUID, uuid,
-	              NM_SETTING_CONNECTION_AUTOCONNECT, TRUE,
-	              NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRED_SETTING_NAME,
-	              NULL);
-	g_free (uuid);
-
-	/* Wired setting */
-	s_wired = (NMSettingWired *) nm_setting_wired_new ();
-	nm_connection_add_setting (connection, NM_SETTING (s_wired));
-
-	/* Wireless security setting */
-	s_8021x = (NMSetting8021x *) nm_setting_802_1x_new ();
-	nm_connection_add_setting (connection, NM_SETTING (s_8021x));
-
-	g_object_set (s_8021x, NM_SETTING_802_1X_ANONYMOUS_IDENTITY, "blahblah", NULL);
-	g_object_set (s_8021x, NM_SETTING_802_1X_IDENTITY, "Bill Smith", NULL);
-
-	nm_setting_802_1x_add_eap_method (s_8021x, "ttls");
-	g_object_set (s_8021x, NM_SETTING_802_1X_PHASE2_AUTH, "tls", NULL);
-
-	success = nm_setting_802_1x_set_phase2_ca_cert (s_8021x,
-	                                                TEST_NEED_SECRETS_EAP_TLS_CA_CERT,
-	                                                scheme,
-	                                                NULL,
-	                                                &error);
-	nmtst_assert_success (success, error);
-
-	success = nm_setting_802_1x_set_phase2_client_cert (s_8021x,
-	                                                    TEST_NEED_SECRETS_EAP_TLS_CLIENT_CERT,
-	                                                    scheme,
-	                                                    NULL,
-	                                                    &error);
-	nmtst_assert_success (success, error);
-
-	success = nm_setting_802_1x_set_phase2_private_key (s_8021x,
-	                                                    TEST_NEED_SECRETS_EAP_TLS_PRIVATE_KEY,
-	                                                    "test",
-	                                                    scheme,
-	                                                    NULL,
-	                                                    &error);
-	nmtst_assert_success (success, error);
-
-	/* IP4 setting */
-	s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new ();
-	nm_connection_add_setting (connection, NM_SETTING (s_ip4));
-
-	g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL);
-
-	nmtst_assert_connection_verifies_and_normalizable (connection);
-
-	return connection;
-}
-
-static void
-test_need_tls_phase2_secrets_path (void)
-{
-	NMConnection *connection;
-	const char *setting_name;
-	GPtrArray *hints = NULL;
-
-	connection = make_tls_phase2_connection ("need-tls-phase2-secrets-path-key",
-	                                         NM_SETTING_802_1X_CK_SCHEME_PATH);
-
-	/* Ensure we don't need any secrets since we just set up the connection */
-	setting_name = nm_connection_need_secrets (connection, &hints);
-	g_assert (!setting_name);
-	g_assert (!hints);
-
-	/* Connection is good; clear secrets and ensure private key password is then required */
-	nm_connection_clear_secrets (connection);
-
-	hints = NULL;
-	setting_name = nm_connection_need_secrets (connection, &hints);
-	g_assert_cmpstr (setting_name, ==, NM_SETTING_802_1X_SETTING_NAME);
-	_assert_hints_has (hints, NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD);
-
-	g_ptr_array_free (hints, TRUE);
-	g_object_unref (connection);
-}
-
-static void
-test_need_tls_phase2_secrets_blob (void)
-{
-	NMConnection *connection;
-	const char *setting_name;
-	GPtrArray *hints = NULL;
-
-	connection = make_tls_phase2_connection ("need-tls-phase2-secrets-blob-key",
-	                                         NM_SETTING_802_1X_CK_SCHEME_BLOB);
-
-	/* Ensure we don't need any secrets since we just set up the connection */
-	setting_name = nm_connection_need_secrets (connection, &hints);
-	g_assert (!setting_name);
-	g_assert (!hints);
-
-	/* Connection is good; clear secrets and ensure private key password is then required */
-	nm_connection_clear_secrets (connection);
-
-	hints = NULL;
-	setting_name = nm_connection_need_secrets (connection, &hints);
-	g_assert_cmpstr (setting_name, ==, NM_SETTING_802_1X_SETTING_NAME);
-	_assert_hints_has (hints, NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD);
-
-	g_ptr_array_free (hints, TRUE);
-	g_object_unref (connection);
-}
-
-static NMConnection *
-wifi_connection_new (void)
-{
-	NMConnection *connection;
-	NMSettingConnection *s_con;
-	NMSettingWireless *s_wifi;
-	NMSettingWirelessSecurity *s_wsec;
-	unsigned char tmpssid[] = { 0x31, 0x33, 0x33, 0x37 };
-	char *uuid;
-	GByteArray *ssid;
-
-	connection = nm_connection_new ();
-	g_assert (connection);
-
-	/* Connection setting */
-	s_con = (NMSettingConnection *) nm_setting_connection_new ();
-	g_assert (s_con);
-
-	uuid = nm_utils_uuid_generate ();
-	g_object_set (s_con,
-	              NM_SETTING_CONNECTION_ID, "Test Wireless",
-	              NM_SETTING_CONNECTION_UUID, uuid,
-	              NM_SETTING_CONNECTION_AUTOCONNECT, FALSE,
-	              NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME,
-	              NULL);
-	g_free (uuid);
-	nm_connection_add_setting (connection, NM_SETTING (s_con));
-
-	/* Wireless setting */
-	s_wifi = (NMSettingWireless *) nm_setting_wireless_new ();
-	g_assert (s_wifi);
-
-	ssid = g_byte_array_sized_new (sizeof (tmpssid));
-	g_byte_array_append (ssid, &tmpssid[0], sizeof (tmpssid));
-	g_object_set (s_wifi,
-	              NM_SETTING_WIRELESS_SSID, ssid,
-	              NULL);
-	g_byte_array_free (ssid, TRUE);
-	nm_connection_add_setting (connection, NM_SETTING (s_wifi));
-
-	/* Wifi security */
-	s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new ();
-	g_assert (s_wsec);
-
-	g_object_set (G_OBJECT (s_wsec),
-	              NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "none",
-	              NULL);
-	nm_connection_add_setting (connection, NM_SETTING (s_wsec));
-
-	return connection;
-}
-
-static void
-value_destroy (gpointer data)
-{
-	GValue *value = (GValue *) data;
-
-	g_value_unset (value);
-	g_slice_free (GValue, value);
-}
-
-static GValue *
-string_to_gvalue (const char *str)
-{
-	GValue *val = g_slice_new0 (GValue);
-
-	g_value_init (val, G_TYPE_STRING);
-	g_value_set_string (val, str);
-	return val;
-}
-
-static GValue *
-uint_to_gvalue (guint32 i)
-{
-	GValue *val;
-
-	val = g_slice_new0 (GValue);
-	g_value_init (val, G_TYPE_UINT);
-	g_value_set_uint (val, i);
-	return val;
-}
-
-static void
-test_update_secrets_wifi_single_setting (void)
-{
-	NMConnection *connection;
-	NMSettingWirelessSecurity *s_wsec;
-	GHashTable *secrets;
-	GError *error = NULL;
-	gboolean success;
-	const char *wepkey = "11111111111111111111111111";
-	const char *tmp;
-
-	/* Test update with a hashed setting of 802-11-wireless secrets */
-
-	connection = wifi_connection_new ();
-
-	/* Build up the secrets hash */
-	secrets = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, value_destroy);
-	g_hash_table_insert (secrets, NM_SETTING_WIRELESS_SECURITY_WEP_KEY0, string_to_gvalue (wepkey));
-	g_hash_table_insert (secrets, NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE, uint_to_gvalue (NM_WEP_KEY_TYPE_KEY));
-
-	success = nm_connection_update_secrets (connection,
-	                                        NM_SETTING_WIRELESS_SECURITY_SETTING_NAME,
-	                                        secrets,
-	                                        &error);
-	g_assert_no_error (error);
-	g_assert (success);
-
-	/* Make sure the secret is now in the connection */
-	s_wsec = nm_connection_get_setting_wireless_security (connection);
-	g_assert (s_wsec);
-	tmp = nm_setting_wireless_security_get_wep_key (s_wsec, 0);
-	g_assert_cmpstr (tmp, ==, wepkey);
-
-	g_hash_table_unref (secrets);
-	g_object_unref (connection);
-}
-
-static void
-test_update_secrets_wifi_full_hash (void)
-{
-	NMConnection *connection;
-	NMSettingWirelessSecurity *s_wsec;
-	GHashTable *secrets, *all;
-	GError *error = NULL;
-	gboolean success;
-	const char *wepkey = "11111111111111111111111111";
-	const char *tmp;
-
-	/* Test update with a hashed connection containing only 802-11-wireless
-	 * setting and secrets.
-	 */
-
-	connection = wifi_connection_new ();
-
-	/* Build up the secrets hash */
-	all = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_hash_table_destroy);
-	secrets = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, value_destroy);
-	g_hash_table_insert (secrets, NM_SETTING_WIRELESS_SECURITY_WEP_KEY0, string_to_gvalue (wepkey));
-	g_hash_table_insert (secrets, NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE, uint_to_gvalue (NM_WEP_KEY_TYPE_KEY));
-	g_hash_table_insert (all, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, secrets);
-
-	success = nm_connection_update_secrets (connection,
-	                                        NM_SETTING_WIRELESS_SECURITY_SETTING_NAME,
-	                                        all,
-	                                        &error);
-	g_assert_no_error (error);
-	g_assert (success);
-
-	/* Make sure the secret is now in the connection */
-	s_wsec = nm_connection_get_setting_wireless_security (connection);
-	g_assert (s_wsec);
-	tmp = nm_setting_wireless_security_get_wep_key (s_wsec, 0);
-	g_assert_cmpstr (tmp, ==, wepkey);
-
-	g_hash_table_unref (all);
-	g_object_unref (connection);
-}
-
-static void
-test_update_secrets_wifi_bad_setting_name (void)
-{
-	NMConnection *connection;
-	GHashTable *secrets;
-	GError *error = NULL;
-	gboolean success;
-	const char *wepkey = "11111111111111111111111111";
-
-	/* Test that passing an invalid setting name to
-	 * nm_connection_update_secrets() fails with the correct error.
-	 */
-
-	connection = wifi_connection_new ();
-
-	/* Build up the secrets hash */
-	secrets = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, value_destroy);
-	g_hash_table_insert (secrets, NM_SETTING_WIRELESS_SECURITY_WEP_KEY0, string_to_gvalue (wepkey));
-	g_hash_table_insert (secrets, NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE, uint_to_gvalue (NM_WEP_KEY_TYPE_KEY));
-
-	success = nm_connection_update_secrets (connection,
-	                                        "asdfasdfasdfasf",
-	                                        secrets,
-	                                        &error);
-	g_assert_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_SETTING_NOT_FOUND);
-	g_assert (success == FALSE);
-
-	g_clear_error (&error);
-	g_hash_table_unref (secrets);
-	g_object_unref (connection);
-}
-
-static void
-test_update_secrets_whole_connection (void)
-{
-	NMConnection *connection;
-	NMSettingWirelessSecurity *s_wsec;
-	GHashTable *secrets, *wsec_hash;
-	GError *error = NULL;
-	gboolean success;
-	const char *wepkey = "11111111111111111111111111";
-
-	/* Test calling nm_connection_update_secrets() with an entire hashed
-	 * connection including non-secrets.
-	 */
-
-	connection = wifi_connection_new ();
-
-	/* Build up the secrets hash */
-	secrets = nm_connection_to_hash (connection, NM_SETTING_HASH_FLAG_ALL);
-	wsec_hash = g_hash_table_lookup (secrets, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME);
-	g_assert (wsec_hash);
-	g_hash_table_insert (wsec_hash, g_strdup (NM_SETTING_WIRELESS_SECURITY_WEP_KEY0), string_to_gvalue (wepkey));
-
-	success = nm_connection_update_secrets (connection, NULL, secrets, &error);
-	g_assert_no_error (error);
-	g_assert (success == TRUE);
-
-	s_wsec = nm_connection_get_setting_wireless_security (connection);
-	g_assert (s_wsec);
-	g_assert_cmpstr (nm_setting_wireless_security_get_wep_key (s_wsec, 0), ==, wepkey);
-
-	g_hash_table_unref (secrets);
-	g_object_unref (connection);
-}
-
-static void
-test_update_secrets_whole_connection_empty_hash (void)
-{
-	NMConnection *connection;
-	GHashTable *secrets;
-	GError *error = NULL;
-	gboolean success;
-
-	/* Test that updating secrets with an empty hash returns success */
-
-	connection = wifi_connection_new ();
-	secrets = g_hash_table_new (g_str_hash, g_str_equal);
-	success = nm_connection_update_secrets (connection, NULL, secrets, &error);
-	g_assert_no_error (error);
-	g_assert (success == TRUE);
-	g_object_unref (connection);
-	g_hash_table_unref (secrets);
-}
-
-static void
-test_update_secrets_whole_connection_bad_setting (void)
-{
-	NMConnection *connection;
-	GHashTable *secrets, *wsec_hash;
-	GError *error = NULL;
-	gboolean success;
-	const char *wepkey = "11111111111111111111111111";
-
-	/* Test that sending a hashed connection containing an invalid setting
-	 * name fails with the right error.
-	 */
-
-	connection = wifi_connection_new ();
-
-	/* Build up the secrets hash */
-	secrets = nm_connection_to_hash (connection, NM_SETTING_HASH_FLAG_ALL);
-	wsec_hash = g_hash_table_lookup (secrets, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME);
-	g_assert (wsec_hash);
-	g_hash_table_insert (wsec_hash, g_strdup (NM_SETTING_WIRELESS_SECURITY_WEP_KEY0), string_to_gvalue (wepkey));
-
-	/* Steal the wsec setting hash so it's not deallocated, and stuff it back
-	 * in with a different name so we ensure libnm-util is returning the right
-	 * error when it finds an entry in the connection hash that doesn't match
-	 * any setting in the connection.
-	 */
-	g_hash_table_ref (wsec_hash);
-	g_hash_table_remove (secrets, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME);
-	g_hash_table_insert (secrets, g_strdup ("asdfasdfasdfasdf"), wsec_hash);
-
-	success = nm_connection_update_secrets (connection, NULL, secrets, &error);
-	g_assert_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_SETTING_NOT_FOUND);
-	g_assert (success == FALSE);
-
-	g_clear_error (&error);
-	g_hash_table_destroy (secrets);
-	g_object_unref (connection);
-}
-
-static void
-test_update_secrets_whole_connection_empty_base_setting (void)
-{
-	NMConnection *connection;
-	GHashTable *secrets;
-	GError *error = NULL;
-	gboolean success;
-
-	/* Test that a hashed connection which does not have any hashed secrets
-	 * for the requested setting returns success.
-	 */
-
-	connection = wifi_connection_new ();
-	secrets = nm_connection_to_hash (connection, NM_SETTING_HASH_FLAG_ONLY_SECRETS);
-	g_assert_cmpint (g_hash_table_size (secrets), ==, 3);
-	g_assert (g_hash_table_lookup (secrets, NM_SETTING_WIRELESS_SETTING_NAME));
-
-	success = nm_connection_update_secrets (connection,
-	                                        NM_SETTING_WIRELESS_SECURITY_SETTING_NAME,
-	                                        secrets,
-	                                        &error);
-	g_assert_no_error (error);
-	g_assert (success);
-
-	g_hash_table_destroy (secrets);
-	g_object_unref (connection);
-}
-
-static void
-test_update_secrets_null_setting_name_with_setting_hash (void)
-{
-	NMConnection *connection;
-	GHashTable *secrets;
-	GError *error = NULL;
-	gboolean success;
-	const char *wepkey = "11111111111111111111111111";
-
-	/* Ensure that a NULL setting name and only a hashed setting fails */
-
-	connection = wifi_connection_new ();
-
-	secrets = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, value_destroy);
-	g_hash_table_insert (secrets, NM_SETTING_WIRELESS_SECURITY_WEP_KEY0, string_to_gvalue (wepkey));
-	g_hash_table_insert (secrets, NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE, uint_to_gvalue (NM_WEP_KEY_TYPE_KEY));
-
-	success = nm_connection_update_secrets (connection, NULL, secrets, &error);
-	g_assert_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_SETTING_NOT_FOUND);
-	g_assert (!success);
-
-	g_clear_error (&error);
-	g_hash_table_destroy (secrets);
-	g_object_unref (connection);
-}
-
-NMTST_DEFINE ();
-
-int main (int argc, char **argv)
-{
-	GError *error = NULL;
-	gboolean success;
-
-	nmtst_init (&argc, &argv, TRUE);
-
-	success = nm_utils_init (&error);
-	g_assert_no_error (error);
-	g_assert (success);
-
-	/* The tests */
-	g_test_add_func ("/libnm/need_tls_secrets_path", test_need_tls_secrets_path);
-	g_test_add_func ("/libnm/need_tls_secrets_blob", test_need_tls_secrets_blob);
-	g_test_add_func ("/libnm/need_tls_phase2_secrets_path", test_need_tls_phase2_secrets_path);
-	g_test_add_func ("/libnm/need_tls_phase2_secrets_blob", test_need_tls_phase2_secrets_blob);
-
-	g_test_add_func ("/libnm/update_secrets_wifi_single_setting", test_update_secrets_wifi_single_setting);
-	g_test_add_func ("/libnm/update_secrets_wifi_full_hash", test_update_secrets_wifi_full_hash);
-	g_test_add_func ("/libnm/update_secrets_wifi_bad_setting_name", test_update_secrets_wifi_bad_setting_name);
-
-	g_test_add_func ("/libnm/update_secrets_whole_connection", test_update_secrets_whole_connection);
-	g_test_add_func ("/libnm/update_secrets_whole_connection_empty_hash", test_update_secrets_whole_connection_empty_hash);
-	g_test_add_func ("/libnm/update_secrets_whole_connection_bad_setting", test_update_secrets_whole_connection_bad_setting);
-	g_test_add_func ("/libnm/update_secrets_whole_connection_empty_base_setting", test_update_secrets_whole_connection_empty_base_setting);
-	g_test_add_func ("/libnm/update_secrets_null_setting_name_with_setting_hash", test_update_secrets_null_setting_name_with_setting_hash);
-
-	return g_test_run ();
-}
-
diff --git a/libnm-util/tests/test-setting-8021x.c b/libnm-util/tests/test-setting-8021x.c
deleted file mode 100644
index 373b2a75..00000000
--- a/libnm-util/tests/test-setting-8021x.c
+++ /dev/null
@@ -1,407 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
-/*
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Copyright 2008 - 2011 Red Hat, Inc.
- *
- */
-
-#include "nm-default.h"
-
-#include <string.h>
-
-#include "nm-utils.h"
-#include "nm-setting-connection.h"
-#include "nm-setting-8021x.h"
-
-#include "nm-utils/nm-test-utils.h"
-
-#define TEST_CERT_DIR                         NM_BUILD_SRCDIR"/libnm-core/tests/certs"
-
-static void
-compare_blob_data (const char *test,
-                   const char *key_path,
-                   const GByteArray *key)
-{
-	char *contents = NULL;
-	gsize len = 0;
-	GError *error = NULL;
-	gboolean success;
-
-	g_assert (key && key->len > 0);
-
-	success = g_file_get_contents (key_path, &contents, &len, &error);
-	nmtst_assert_success (success, error);
-
-	g_assert_cmpmem (contents, len, key->data, key->len);
-	g_free (contents);
-}
-
-#define SCHEME_PATH "file://"
-
-static void
-check_scheme_path (GByteArray *value, const char *path)
-{
-	guint8 *p;
-
-	g_assert (value);
-
-	p = value->data;
-	g_assert (memcmp (p, SCHEME_PATH, strlen (SCHEME_PATH)) == 0);
-	p += strlen (SCHEME_PATH);
-	g_assert (memcmp (p, path, strlen (path)) == 0);
-	p += strlen (path);
-	g_assert (*p == '\0');
-}
-
-static void
-test_private_key_import (const char *path,
-                         const char *password,
-                         NMSetting8021xCKScheme scheme)
-{
-	NMSetting8021x *s_8021x;
-	gboolean success;
-	NMSetting8021xCKFormat format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN;
-	NMSetting8021xCKFormat tmp_fmt;
-	GError *error = NULL;
-	GByteArray *tmp_key = NULL, *client_cert = NULL;
-	const char *pw;
-
-	s_8021x = (NMSetting8021x *) nm_setting_802_1x_new ();
-	g_assert (s_8021x);
-
-	success = nm_setting_802_1x_set_private_key (s_8021x,
-	                                             path,
-	                                             password,
-	                                             scheme,
-	                                             &format,
-	                                             &error);
-	nmtst_assert_success (success, error);
-	g_assert (format != NM_SETTING_802_1X_CK_FORMAT_UNKNOWN);
-	tmp_fmt = nm_setting_802_1x_get_private_key_format (s_8021x);
-	g_assert (tmp_fmt == format);
-
-	/* Make sure the password is what we expect */
-	pw = nm_setting_802_1x_get_private_key_password (s_8021x);
-	g_assert (pw);
-	g_assert_cmpstr (pw, ==, password);
-
-	if (scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB) {
-		tmp_key = (GByteArray *) nm_setting_802_1x_get_private_key_blob (s_8021x);
-		compare_blob_data ("private-key-import", path, tmp_key);
-	} else if (scheme == NM_SETTING_802_1X_CK_SCHEME_PATH) {
-		g_object_get (s_8021x, NM_SETTING_802_1X_PRIVATE_KEY, &tmp_key, NULL);
-		check_scheme_path (tmp_key, path);
-		g_byte_array_free (tmp_key, TRUE);
-	} else
-		g_assert_not_reached ();
-
-	/* If it's PKCS#12 ensure the client cert is the same value */
-	if (format == NM_SETTING_802_1X_CK_FORMAT_PKCS12) {
-		g_object_get (s_8021x, NM_SETTING_802_1X_PRIVATE_KEY, &tmp_key, NULL);
-		g_assert (tmp_key);
-
-		g_object_get (s_8021x, NM_SETTING_802_1X_CLIENT_CERT, &client_cert, NULL);
-		g_assert (client_cert);
-
-		/* make sure they are the same */
-		g_assert_cmpmem (tmp_key->data, tmp_key->len, client_cert->data, client_cert->len);
-
-		g_byte_array_free (tmp_key, TRUE);
-		g_byte_array_free (client_cert, TRUE);
-	}
-
-	g_object_unref (s_8021x);
-}
-
-static void
-test_phase2_private_key_import (const char *path,
-                                const char *password,
-                                NMSetting8021xCKScheme scheme)
-{
-	NMSetting8021x *s_8021x;
-	gboolean success;
-	NMSetting8021xCKFormat format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN;
-	NMSetting8021xCKFormat tmp_fmt;
-	GError *error = NULL;
-	GByteArray *tmp_key = NULL, *client_cert = NULL;
-	const char *pw;
-
-	s_8021x = (NMSetting8021x *) nm_setting_802_1x_new ();
-	g_assert (s_8021x);
-
-	success = nm_setting_802_1x_set_phase2_private_key (s_8021x,
-	                                                    path,
-	                                                    password,
-	                                                    scheme,
-	                                                    &format,
-	                                                    &error);
-	nmtst_assert_success (success, error);
-	g_assert (format != NM_SETTING_802_1X_CK_FORMAT_UNKNOWN);
-	tmp_fmt = nm_setting_802_1x_get_phase2_private_key_format (s_8021x);
-	g_assert (tmp_fmt == format);
-
-	/* Make sure the password is what we expect */
-	pw = nm_setting_802_1x_get_phase2_private_key_password (s_8021x);
-	g_assert (pw);
-	g_assert_cmpstr (pw, ==, password);
-
-	if (scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB) {
-		tmp_key = (GByteArray *) nm_setting_802_1x_get_phase2_private_key_blob (s_8021x);
-		compare_blob_data ("phase2-private-key-import", path, tmp_key);
-	} else if (scheme == NM_SETTING_802_1X_CK_SCHEME_PATH) {
-		g_object_get (s_8021x, NM_SETTING_802_1X_PHASE2_PRIVATE_KEY, &tmp_key, NULL);
-		check_scheme_path (tmp_key, path);
-		g_byte_array_free (tmp_key, TRUE);
-	} else
-		g_assert_not_reached ();
-
-	/* If it's PKCS#12 ensure the client cert is the same value */
-	if (format == NM_SETTING_802_1X_CK_FORMAT_PKCS12) {
-		g_object_get (s_8021x, NM_SETTING_802_1X_PHASE2_PRIVATE_KEY, &tmp_key, NULL);
-		g_assert (tmp_key);
-
-		g_object_get (s_8021x, NM_SETTING_802_1X_PHASE2_CLIENT_CERT, &client_cert, NULL);
-		g_assert (client_cert);
-
-		/* make sure they are the same */
-		g_assert_cmpmem (tmp_key->data, tmp_key->len, client_cert->data, client_cert->len);
-
-		g_byte_array_free (tmp_key, TRUE);
-		g_byte_array_free (client_cert, TRUE);
-	}
-
-	g_object_unref (s_8021x);
-}
-
-static void
-test_wrong_password_keeps_data (const char *path, const char *password)
-{
-	NMSetting8021x *s_8021x;
-	gboolean success;
-	NMSetting8021xCKFormat format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN;
-	GError *error = NULL;
-	const char *pw;
-
-	s_8021x = (NMSetting8021x *) nm_setting_802_1x_new ();
-	g_assert (s_8021x);
-
-	success = nm_setting_802_1x_set_private_key (s_8021x,
-	                                             path,
-	                                             password,
-	                                             NM_SETTING_802_1X_CK_SCHEME_BLOB,
-	                                             &format,
-	                                             &error);
-	nmtst_assert_success (success, error);
-	g_assert (format != NM_SETTING_802_1X_CK_FORMAT_UNKNOWN);
-
-	/* Now try to set it to something that's not a certificate */
-	format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN;
-	success = nm_setting_802_1x_set_private_key (s_8021x,
-	                                             "Makefile.am",
-	                                             password,
-	                                             NM_SETTING_802_1X_CK_SCHEME_BLOB,
-	                                             &format,
-	                                             &error);
-	nmtst_assert_no_success (success, error);
-	g_assert (format == NM_SETTING_802_1X_CK_FORMAT_UNKNOWN);
-	g_clear_error (&error);
-
-	/* Make sure the password hasn't changed */
-	pw = nm_setting_802_1x_get_private_key_password (s_8021x);
-	g_assert (pw);
-	g_assert_cmpstr (pw, ==, password);
-
-	g_object_unref (s_8021x);
-}
-
-static void
-test_clear_private_key (const char *path, const char *password)
-{
-	NMSetting8021x *s_8021x;
-	gboolean success;
-	NMSetting8021xCKFormat format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN;
-	GError *error = NULL;
-	const char *pw;
-
-	s_8021x = (NMSetting8021x *) nm_setting_802_1x_new ();
-	g_assert (s_8021x);
-
-	success = nm_setting_802_1x_set_private_key (s_8021x,
-	                                             path,
-	                                             password,
-	                                             NM_SETTING_802_1X_CK_SCHEME_BLOB,
-	                                             &format,
-	                                             &error);
-	nmtst_assert_success (success, error);
-	g_assert (format != NM_SETTING_802_1X_CK_FORMAT_UNKNOWN);
-
-	/* Make sure the password is what we expect */
-	pw = nm_setting_802_1x_get_private_key_password (s_8021x);
-	g_assert (pw);
-	g_assert_cmpstr (pw, ==, password);
-
-	/* Now clear it */
-	success = nm_setting_802_1x_set_private_key (s_8021x,
-	                                             NULL,
-	                                             NULL,
-	                                             NM_SETTING_802_1X_CK_SCHEME_BLOB,
-	                                             NULL,
-	                                             &error);
-	nmtst_assert_success (success, error);
-
-	/* Ensure the password is also now clear */
-	g_assert (!nm_setting_802_1x_get_private_key_password (s_8021x));
-
-	g_object_unref (s_8021x);
-}
-
-static void
-test_wrong_phase2_password_keeps_data (const char *path, const char *password)
-{
-	NMSetting8021x *s_8021x;
-	gboolean success;
-	NMSetting8021xCKFormat format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN;
-	GError *error = NULL;
-	const char *pw;
-
-	s_8021x = (NMSetting8021x *) nm_setting_802_1x_new ();
-	g_assert (s_8021x);
-
-	success = nm_setting_802_1x_set_phase2_private_key (s_8021x,
-	                                                    path,
-	                                                    password,
-	                                                    NM_SETTING_802_1X_CK_SCHEME_BLOB,
-	                                                    &format,
-	                                                    &error);
-	nmtst_assert_success (success, error);
-	g_assert (format != NM_SETTING_802_1X_CK_FORMAT_UNKNOWN);
-
-	/* Now try to set it to something that's not a certificate */
-	format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN;
-	success = nm_setting_802_1x_set_phase2_private_key (s_8021x,
-	                                                    "Makefile.am",
-	                                                    password,
-	                                                    NM_SETTING_802_1X_CK_SCHEME_BLOB,
-	                                                    &format,
-	                                                    &error);
-	nmtst_assert_no_success (success, error);
-	g_assert (format == NM_SETTING_802_1X_CK_FORMAT_UNKNOWN);
-	g_clear_error (&error);
-
-	/* Make sure the password hasn't changed */
-	pw = nm_setting_802_1x_get_phase2_private_key_password (s_8021x);
-	g_assert (pw);
-	g_assert_cmpstr (pw, ==, password);
-
-	g_object_unref (s_8021x);
-}
-
-static void
-test_clear_phase2_private_key (const char *path, const char *password)
-{
-	NMSetting8021x *s_8021x;
-	gboolean success;
-	NMSetting8021xCKFormat format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN;
-	GError *error = NULL;
-	const char *pw;
-
-	s_8021x = (NMSetting8021x *) nm_setting_802_1x_new ();
-	g_assert (s_8021x);
-
-	success = nm_setting_802_1x_set_phase2_private_key (s_8021x,
-	                                                    path,
-	                                                    password,
-	                                                    NM_SETTING_802_1X_CK_SCHEME_BLOB,
-	                                                    &format,
-	                                                    &error);
-	nmtst_assert_success (success, error);
-	g_assert (format != NM_SETTING_802_1X_CK_FORMAT_UNKNOWN);
-
-	/* Make sure the password is what we expect */
-	pw = nm_setting_802_1x_get_phase2_private_key_password (s_8021x);
-	g_assert (pw);
-	g_assert_cmpstr (pw, ==, password);
-
-	/* Now clear it */
-	success = nm_setting_802_1x_set_phase2_private_key (s_8021x,
-	                                                    NULL,
-	                                                    NULL,
-	                                                    NM_SETTING_802_1X_CK_SCHEME_BLOB,
-	                                                    NULL,
-	                                                    &error);
-	nmtst_assert_success (success, error);
-
-	/* Ensure the password is also now clear */
-	g_assert (!nm_setting_802_1x_get_phase2_private_key_password (s_8021x));
-
-	g_object_unref (s_8021x);
-}
-
-static void
-do_8021x_test (gconstpointer test_data)
-{
-	char **parts, *path, *password;
-
-	parts = g_strsplit ((const char *) test_data, ", ", -1);
-	g_assert_cmpint (g_strv_length (parts), ==, 2);
-
-	path = g_build_filename (TEST_CERT_DIR, parts[0], NULL);
-	password = parts[1];
-
-	/* Test phase1 and phase2 path scheme */
-	test_private_key_import (path, password, NM_SETTING_802_1X_CK_SCHEME_PATH);
-	test_phase2_private_key_import (path, password, NM_SETTING_802_1X_CK_SCHEME_PATH);
-
-	/* Test phase1 and phase2 blob scheme */
-	test_private_key_import (path, password, NM_SETTING_802_1X_CK_SCHEME_BLOB);
-	test_phase2_private_key_import (path, password, NM_SETTING_802_1X_CK_SCHEME_BLOB);
-
-	/* Test that using a wrong password does not change existing data */
-	test_wrong_password_keeps_data (path, password);
-	test_wrong_phase2_password_keeps_data (path, password);
-
-	/* Test clearing the private key */
-	test_clear_private_key (path, password);
-	test_clear_phase2_private_key (path, password);
-
-	g_free (path);
-	g_strfreev (parts);
-}
-
-NMTST_DEFINE ();
-
-int
-main (int argc, char **argv)
-{
-	nmtst_init (&argc, &argv, TRUE);
-
-	g_test_add_data_func ("/libnm-utils/setting-8021x/key-and-cert",
-	                      "test_key_and_cert.pem, test",
-	                      do_8021x_test);
-	g_test_add_data_func ("/libnm-utils/setting-8021x/key-only",
-	                      "test-key-only.pem, test",
-	                      do_8021x_test);
-	g_test_add_data_func ("/libnm-utils/setting-8021x/pkcs8-enc-key",
-	                      "pkcs8-enc-key.pem, 1234567890",
-	                      do_8021x_test);
-	g_test_add_data_func ("/libnm-utils/setting-8021x/pkcs12",
-	                      "test-cert.p12, test",
-	                      do_8021x_test);
-
-	return g_test_run ();
-}
-
diff --git a/libnm-util/tests/test-setting-dcb.c b/libnm-util/tests/test-setting-dcb.c
deleted file mode 100644
index eb7113c3..00000000
--- a/libnm-util/tests/test-setting-dcb.c
+++ /dev/null
@@ -1,319 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
-/*
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Copyright 2013 Red Hat, Inc.
- *
- */
-
-#include "nm-default.h"
-
-#include <string.h>
-
-#include "nm-utils.h"
-#include "nm-default.h"
-#include "nm-setting-dcb.h"
-
-#include "nm-utils/nm-test-utils.h"
-
-#define DCB_FLAGS_ALL (NM_SETTING_DCB_FLAG_ENABLE | \
-                       NM_SETTING_DCB_FLAG_ADVERTISE | \
-                       NM_SETTING_DCB_FLAG_WILLING)
-
-static void
-test_dcb_flags_valid (void)
-{
-	gs_unref_object NMSettingDcb *s_dcb = NULL;
-	GError *error = NULL;
-	gboolean success;
-	guint i;
-
-	s_dcb = (NMSettingDcb *) nm_setting_dcb_new ();
-	g_assert (s_dcb);
-
-	g_assert_cmpint (nm_setting_dcb_get_app_fcoe_flags (s_dcb), ==, 0);
-	g_assert_cmpint (nm_setting_dcb_get_app_iscsi_flags (s_dcb), ==, 0);
-	g_assert_cmpint (nm_setting_dcb_get_app_fip_flags (s_dcb), ==, 0);
-	g_assert_cmpint (nm_setting_dcb_get_priority_flow_control_flags (s_dcb), ==, 0);
-	g_assert_cmpint (nm_setting_dcb_get_priority_group_flags (s_dcb), ==, 0);
-
-	g_object_set (G_OBJECT (s_dcb),
-	              NM_SETTING_DCB_APP_FCOE_FLAGS, DCB_FLAGS_ALL,
-	              NM_SETTING_DCB_APP_ISCSI_FLAGS, DCB_FLAGS_ALL,
-	              NM_SETTING_DCB_APP_FIP_FLAGS, DCB_FLAGS_ALL,
-	              NM_SETTING_DCB_PRIORITY_FLOW_CONTROL_FLAGS, DCB_FLAGS_ALL,
-	              NM_SETTING_DCB_PRIORITY_GROUP_FLAGS, DCB_FLAGS_ALL,
-	              NULL);
-	/* Priority Group Bandwidth must total 100% */
-	for (i = 0; i < 7; i++)
-		nm_setting_dcb_set_priority_group_bandwidth (s_dcb, i, 12);
-	nm_setting_dcb_set_priority_group_bandwidth (s_dcb, 7, 16);
-
-	success = nm_setting_verify (NM_SETTING (s_dcb), NULL, &error);
-	g_assert_no_error (error);
-	g_assert (success);
-
-	g_assert_cmpint (nm_setting_dcb_get_app_fcoe_flags (s_dcb), ==, DCB_FLAGS_ALL);
-	g_assert_cmpint (nm_setting_dcb_get_app_iscsi_flags (s_dcb), ==, DCB_FLAGS_ALL);
-	g_assert_cmpint (nm_setting_dcb_get_app_fip_flags (s_dcb), ==, DCB_FLAGS_ALL);
-	g_assert_cmpint (nm_setting_dcb_get_priority_flow_control_flags (s_dcb), ==, DCB_FLAGS_ALL);
-	g_assert_cmpint (nm_setting_dcb_get_priority_group_flags (s_dcb), ==, DCB_FLAGS_ALL);
-}
-
-#define TEST_FLAG(p, f, v) \
-{ \
-	/* GObject property min/max should ensure the property does not get set to \
-	 * the invalid value, so we ensure the value we just tried to set is 0 and \
-	 * that verify is successful since the property never got set. \
-	 */ \
-	g_object_set (G_OBJECT (s_dcb), p, v, NULL); \
-	g_assert_cmpint (f (s_dcb), ==, 0); \
-	success = nm_setting_verify (NM_SETTING (s_dcb), NULL, &error); \
-	g_assert_no_error (error); \
-	g_assert (success); \
-}
-
-static void
-test_dcb_flags_invalid (void)
-{
-	gs_unref_object NMSettingDcb *s_dcb = NULL;
-	GError *error = NULL;
-	gboolean success;
-
-	s_dcb = (NMSettingDcb *) nm_setting_dcb_new ();
-	g_assert (s_dcb);
-
-	NMTST_EXPECT ("GLib-GObject", G_LOG_LEVEL_WARNING, "*invalid or out of range*");
-	TEST_FLAG (NM_SETTING_DCB_APP_FCOE_FLAGS, nm_setting_dcb_get_app_fcoe_flags, 0x332523);
-	g_test_assert_expected_messages ();
-
-	NMTST_EXPECT ("GLib-GObject", G_LOG_LEVEL_WARNING, "*invalid or out of range*");
-	TEST_FLAG (NM_SETTING_DCB_APP_ISCSI_FLAGS, nm_setting_dcb_get_app_iscsi_flags, 0xFF);
-	g_test_assert_expected_messages ();
-
-	NMTST_EXPECT ("GLib-GObject", G_LOG_LEVEL_WARNING, "*invalid or out of range*");
-	TEST_FLAG (NM_SETTING_DCB_APP_FIP_FLAGS, nm_setting_dcb_get_app_fip_flags, 0x1111);
-	g_test_assert_expected_messages ();
-
-	NMTST_EXPECT ("GLib-GObject", G_LOG_LEVEL_WARNING, "*invalid or out of range*");
-	TEST_FLAG (NM_SETTING_DCB_PRIORITY_FLOW_CONTROL_FLAGS, nm_setting_dcb_get_priority_flow_control_flags, G_MAXUINT32);
-	g_test_assert_expected_messages ();
-
-	NMTST_EXPECT ("GLib-GObject", G_LOG_LEVEL_WARNING, "*invalid or out of range*");
-	TEST_FLAG (NM_SETTING_DCB_PRIORITY_GROUP_FLAGS, nm_setting_dcb_get_priority_group_flags,
-	           (NM_SETTING_DCB_FLAG_ENABLE | NM_SETTING_DCB_FLAG_ADVERTISE | NM_SETTING_DCB_FLAG_WILLING) + 1);
-	g_test_assert_expected_messages ();
-}
-
-#define TEST_APP_PRIORITY(lcprop, ucprop, v) \
-{ \
-	g_object_set (G_OBJECT (s_dcb), NM_SETTING_DCB_APP_##ucprop##_FLAGS, NM_SETTING_DCB_FLAG_NONE, NULL); \
- \
-	g_object_set (G_OBJECT (s_dcb), NM_SETTING_DCB_APP_##ucprop##_PRIORITY, v, NULL); \
-	g_assert_cmpint (nm_setting_dcb_get_app_##lcprop##_priority (s_dcb), ==, v); \
- \
-	/* Assert that the setting is invalid while the app is disabled unless v is default */ \
-	success = nm_setting_verify (NM_SETTING (s_dcb), NULL, &error); \
-	if (v >= 0) { \
-		g_assert_error (error, NM_SETTING_DCB_ERROR, NM_SETTING_DCB_ERROR_INVALID_PROPERTY); \
-		g_assert (success == FALSE); \
-	} else { \
-		g_assert_no_error (error); \
-		g_assert (success); \
-	} \
-	g_clear_error (&error); \
- \
-	/* Set the enable flag and re-verify, this time it should be valid */ \
-	g_object_set (G_OBJECT (s_dcb), NM_SETTING_DCB_APP_##ucprop##_FLAGS, NM_SETTING_DCB_FLAG_ENABLE, NULL); \
-	success = nm_setting_verify (NM_SETTING (s_dcb), NULL, &error); \
-	g_assert_no_error (error); \
-	g_assert (success); \
- \
-	g_object_set (G_OBJECT (s_dcb), NM_SETTING_DCB_APP_##ucprop##_PRIORITY, 0, NULL); \
-}
-
-static void
-test_dcb_app_priorities (void)
-{
-	gs_unref_object NMSettingDcb *s_dcb = NULL;
-	GError *error = NULL;
-	gboolean success;
-
-	s_dcb = (NMSettingDcb *) nm_setting_dcb_new ();
-	g_assert (s_dcb);
-
-	/* Defaults */
-	g_assert_cmpint (nm_setting_dcb_get_app_fcoe_priority (s_dcb), ==, -1);
-	g_assert_cmpint (nm_setting_dcb_get_app_iscsi_priority (s_dcb), ==, -1);
-	g_assert_cmpint (nm_setting_dcb_get_app_fip_priority (s_dcb), ==, -1);
-
-	TEST_APP_PRIORITY (fcoe, FCOE, 6);
-	TEST_APP_PRIORITY (iscsi, ISCSI, 5);
-	TEST_APP_PRIORITY (fip, FIP, 4);
-
-	TEST_APP_PRIORITY (fcoe, FCOE, -1);
-	TEST_APP_PRIORITY (iscsi, ISCSI, -1);
-	TEST_APP_PRIORITY (fip, FIP, -1);
-}
-
-#define TEST_PRIORITY_VALID(fn, id, val, flagsprop, verify) \
-{ \
-	/* Assert that setting the value gets the same value back out */ \
-	nm_setting_dcb_set_priority_##fn (s_dcb, id, val); \
-	g_assert_cmpint (nm_setting_dcb_get_priority_##fn (s_dcb, id), ==, val); \
- \
-	if (verify) { \
-		if (val != 0) { \
-			/* Assert that verify fails because the flags do not include 'enabled' \
-			 * and a value has been set. \
-			 */ \
-			success = nm_setting_verify (NM_SETTING (s_dcb), NULL, &error); \
-			g_assert_error (error, NM_SETTING_DCB_ERROR, NM_SETTING_DCB_ERROR_INVALID_PROPERTY); \
-			g_assert (success == FALSE); \
-			g_clear_error (&error); \
-		} \
- \
-		/* Assert that adding the 'enabled' flag verifies the setting */ \
-		g_object_set (G_OBJECT (s_dcb), NM_SETTING_DCB_PRIORITY_##flagsprop##_FLAGS, NM_SETTING_DCB_FLAG_ENABLE, NULL); \
-		success = nm_setting_verify (NM_SETTING (s_dcb), NULL, &error); \
-		g_assert_no_error (error); \
-		g_assert (success); \
-	} \
- \
-	/* Reset everything */ \
-	g_object_set (G_OBJECT (s_dcb), NM_SETTING_DCB_PRIORITY_##flagsprop##_FLAGS, NM_SETTING_DCB_FLAG_NONE, NULL); \
-	nm_setting_dcb_set_priority_##fn (s_dcb, id, 0); \
-}
-
-/* If Priority Groups are enabled, PG bandwidth must equal 100% */
-#define SET_VALID_PRIORITY_GROUP_BANDWIDTH \
-{ \
-	guint x; \
-	for (x = 0; x < 7; x++) \
-		nm_setting_dcb_set_priority_group_bandwidth (s_dcb, x, 12); \
-	nm_setting_dcb_set_priority_group_bandwidth (s_dcb, 7, 16); \
-}
-
-static void
-test_dcb_priorities_valid (void)
-{
-	gs_unref_object NMSettingDcb *s_dcb = NULL;
-	GError *error = NULL;
-	gboolean success;
-	guint i;
-
-	s_dcb = (NMSettingDcb *) nm_setting_dcb_new ();
-	g_assert (s_dcb);
-
-	for (i = 0; i < 8; i++)
-		TEST_PRIORITY_VALID (flow_control, i, TRUE, FLOW_CONTROL, TRUE);
-
-	SET_VALID_PRIORITY_GROUP_BANDWIDTH
-	for (i = 0; i < 8; i++) {
-		TEST_PRIORITY_VALID (group_id, i, i, GROUP, TRUE);
-		TEST_PRIORITY_VALID (group_id, i, 7 - i, GROUP, TRUE);
-	}
-
-	/* Clear PG bandwidth from earlier tests */
-	for (i = 0; i < 8; i++)
-		nm_setting_dcb_set_priority_group_bandwidth (s_dcb, i, 0);
-
-	/* Priority Group Bandwidth must add up to 100% if enabled, which requires
-	 * some dancing for verifying individual values here.
-	 */
-	for (i = 0; i < 8; i++) {
-		guint other = 7 - (i % 8);
-
-		/* Set another priority group to the remaining bandwidth */
-		nm_setting_dcb_set_priority_group_bandwidth (s_dcb, other, 100 - i);
-		TEST_PRIORITY_VALID (group_bandwidth, i, i, GROUP, TRUE);
-
-		/* Set another priority group to the remaining bandwidth */
-		nm_setting_dcb_set_priority_group_bandwidth (s_dcb, other, 100 - (7 - i));
-		TEST_PRIORITY_VALID (group_bandwidth, i, 7 - i, GROUP, TRUE);
-
-		/* Clear remaining bandwidth */
-		nm_setting_dcb_set_priority_group_bandwidth (s_dcb, other, 0);
-	}
-
-	SET_VALID_PRIORITY_GROUP_BANDWIDTH
-	for (i = 0; i < 8; i++) {
-		TEST_PRIORITY_VALID (bandwidth, i, i, GROUP, TRUE);
-		TEST_PRIORITY_VALID (bandwidth, i, 7 - i, GROUP, TRUE);
-	}
-
-	SET_VALID_PRIORITY_GROUP_BANDWIDTH
-	for (i = 0; i < 8; i++)
-		TEST_PRIORITY_VALID (strict_bandwidth, i, TRUE, GROUP, TRUE);
-
-	SET_VALID_PRIORITY_GROUP_BANDWIDTH
-	for (i = 0; i < 8; i++) {
-		TEST_PRIORITY_VALID (traffic_class, i, i, GROUP, TRUE);
-		TEST_PRIORITY_VALID (traffic_class, i, 7 - i, GROUP, TRUE);
-	}
-}
-
-static void
-test_dcb_bandwidth_sums (void)
-{
-	gs_unref_object NMSettingDcb *s_dcb = NULL;
-	GError *error = NULL;
-	gboolean success;
-
-	s_dcb = (NMSettingDcb *) nm_setting_dcb_new ();
-	g_assert (s_dcb);
-
-	/* Assert that setting the value gets the same value back out */
-	nm_setting_dcb_set_priority_group_bandwidth (s_dcb, 0, 9);
-	nm_setting_dcb_set_priority_group_bandwidth (s_dcb, 1, 10);
-	nm_setting_dcb_set_priority_group_bandwidth (s_dcb, 2, 11);
-	nm_setting_dcb_set_priority_group_bandwidth (s_dcb, 3, 12);
-	nm_setting_dcb_set_priority_group_bandwidth (s_dcb, 4, 13);
-	nm_setting_dcb_set_priority_group_bandwidth (s_dcb, 5, 14);
-	nm_setting_dcb_set_priority_group_bandwidth (s_dcb, 6, 15);
-	nm_setting_dcb_set_priority_group_bandwidth (s_dcb, 7, 16);
-
-	/* Assert verify success when sums total 100% */
-	g_object_set (G_OBJECT (s_dcb), NM_SETTING_DCB_PRIORITY_GROUP_FLAGS, NM_SETTING_DCB_FLAG_ENABLE, NULL);
-	success = nm_setting_verify (NM_SETTING (s_dcb), NULL, &error);
-	g_assert_no_error (error);
-	g_assert (success);
-
-	/* Assert verify fails when sums do not total 100% */
-	nm_setting_dcb_set_priority_group_bandwidth (s_dcb, 4, 20);
-	success = nm_setting_verify (NM_SETTING (s_dcb), NULL, &error);
-	g_assert_error (error, NM_SETTING_DCB_ERROR, NM_SETTING_DCB_ERROR_INVALID_PROPERTY);
-	g_assert (success == FALSE);
-	g_clear_error (&error);
-}
-
-#define TPATH "/libnm-util/settings/dcb/"
-
-NMTST_DEFINE ();
-
-int main (int argc, char **argv)
-{
-	nmtst_init (&argc, &argv, TRUE);
-
-	g_test_add_func (TPATH "flags-valid", test_dcb_flags_valid);
-	g_test_add_func (TPATH "flags-invalid", test_dcb_flags_invalid);
-	g_test_add_func (TPATH "app-priorities", test_dcb_app_priorities);
-	g_test_add_func (TPATH "priorities", test_dcb_priorities_valid);
-	g_test_add_func (TPATH "bandwidth-sums", test_dcb_bandwidth_sums);
-
-	return g_test_run ();
-}
-
diff --git a/libnm-util/tests/test-settings-defaults.c b/libnm-util/tests/test-settings-defaults.c
deleted file mode 100644
index 0bd4feee..00000000
--- a/libnm-util/tests/test-settings-defaults.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
-/*
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Copyright 2008 - 2011 Red Hat, Inc.
- *
- */
-
-#include "nm-default.h"
-
-#include <string.h>
-
-#include "nm-utils.h"
-#include "nm-setting-8021x.h"
-#include "nm-setting-cdma.h"
-#include "nm-setting-connection.h"
-#include "nm-setting-gsm.h"
-#include "nm-setting-ip4-config.h"
-#include "nm-setting-ip6-config.h"
-#include "nm-setting-ppp.h"
-#include "nm-setting-pppoe.h"
-#include "nm-setting-serial.h"
-#include "nm-setting-vpn.h"
-#include "nm-setting-wired.h"
-#include "nm-setting-wireless.h"
-#include "nm-setting-wireless-security.h"
-
-#include "nm-utils/nm-test-utils.h"
-
-static void
-test_defaults (GType type, const char *name)
-{
-	GParamSpec **property_specs;
-	guint n_property_specs;
-	GObject *setting;
-	int i;
-
-	setting = g_object_new (type, NULL);
-
-	property_specs = g_object_class_list_properties (G_OBJECT_GET_CLASS (setting), &n_property_specs);
-	g_assert (property_specs);
-
-	for (i = 0; i < n_property_specs; i++) {
-		GParamSpec *prop_spec = property_specs[i];
-		GValue value = G_VALUE_INIT;
-		GValue defvalue = G_VALUE_INIT;
-		char *actual, *expected;
-		gboolean ok = FALSE;
-
-		/* Ignore non-fundamental types since they won't really have
-		 * defaults.
-		 */
-		if (!G_TYPE_IS_FUNDAMENTAL (prop_spec->value_type))
-			continue;
-
-		g_value_init (&value, prop_spec->value_type);
-		g_object_get_property (G_OBJECT (setting), prop_spec->name, &value);
-
-		g_value_init (&defvalue, prop_spec->value_type);
-		g_param_value_set_default (prop_spec, &defvalue);
-
-		actual = g_strdup_value_contents (&value);
-		expected = g_strdup_value_contents (&defvalue);
-
-		if (!strcmp (prop_spec->name, NM_SETTING_NAME)) {
-			/* 'name' is always the setting name, not the default value */
-			ok = !strcmp (nm_setting_get_name (NM_SETTING (setting)), name);
-			g_free (expected);
-			expected = g_strdup (name);
-		} else
-			ok = g_param_value_defaults (prop_spec, &value);
-
-		g_assert (ok);
-
-		g_free (actual);
-		g_free (expected);
-		g_value_unset (&value);
-		g_value_unset (&defvalue);
-	}
-
-	g_free (property_specs);
-	g_object_unref (setting);
-}
-
-static void
-defaults (void)
-{
-	/* The tests */
-	test_defaults (NM_TYPE_SETTING_CONNECTION, NM_SETTING_CONNECTION_SETTING_NAME);
-	test_defaults (NM_TYPE_SETTING_802_1X, NM_SETTING_802_1X_SETTING_NAME);
-	test_defaults (NM_TYPE_SETTING_CDMA, NM_SETTING_CDMA_SETTING_NAME);
-	test_defaults (NM_TYPE_SETTING_GSM, NM_SETTING_GSM_SETTING_NAME);
-	test_defaults (NM_TYPE_SETTING_IP4_CONFIG, NM_SETTING_IP4_CONFIG_SETTING_NAME);
-	test_defaults (NM_TYPE_SETTING_IP6_CONFIG, NM_SETTING_IP6_CONFIG_SETTING_NAME);
-	test_defaults (NM_TYPE_SETTING_PPP, NM_SETTING_PPP_SETTING_NAME);
-	test_defaults (NM_TYPE_SETTING_PPPOE, NM_SETTING_PPPOE_SETTING_NAME);
-	test_defaults (NM_TYPE_SETTING_SERIAL, NM_SETTING_SERIAL_SETTING_NAME);
-	test_defaults (NM_TYPE_SETTING_VPN, NM_SETTING_VPN_SETTING_NAME);
-	test_defaults (NM_TYPE_SETTING_WIRED, NM_SETTING_WIRED_SETTING_NAME);
-	test_defaults (NM_TYPE_SETTING_WIRELESS, NM_SETTING_WIRELESS_SETTING_NAME);
-	test_defaults (NM_TYPE_SETTING_WIRELESS_SECURITY, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME);
-}
-
-NMTST_DEFINE ();
-
-int
-main (int argc, char **argv)
-{
-	nmtst_init (&argc, &argv, TRUE);
-
-	g_test_add_func ("/libnm/defaults", defaults);
-
-	return g_test_run ();
-}