From b00a63464773f418a5d9597c1197845b77069ab1 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sat, 16 May 2015 15:39:26 -0400 Subject: [PATCH] Update network tests, minor fixes to network.py. Return UUID when adding a connection. Have get_connection raise an exception instead of returning None. --- plinth/network.py | 22 ++++++++++++---- plinth/tests/test_network.py | 51 +++++++++++++++++++++--------------- 2 files changed, 47 insertions(+), 26 deletions(-) diff --git a/plinth/network.py b/plinth/network.py index f14c56fd5..c66e22c48 100644 --- a/plinth/network.py +++ b/plinth/network.py @@ -95,10 +95,14 @@ def get_connection(connection_uuid): """ client = nm.Client.new(None) try: - return client.get_connection_by_uuid(connection_uuid) + connection = client.get_connection_by_uuid(connection_uuid) + if not connection: + raise ConnectionNotFound(connection_uuid) except KeyError: raise ConnectionNotFound(connection_uuid) + return connection + def get_active_connection(connection_uuid): """Returns active connection with matching uuid. @@ -170,11 +174,15 @@ def _update_ethernet_settings(connection, connection_uuid, name, zone, def add_ethernet_connection(name, zone, ipv4_method, ipv4_address): - """Add an automatic ethernet connection in network manager.""" + """Add an automatic ethernet connection in network manager. + Returns the UUID for the connection. + """ + connection_uuid = str(uuid.uuid4()) connection = _update_ethernet_settings( - None, str(uuid.uuid4()), name, zone, ipv4_method, ipv4_address) + None, connection_uuid, name, zone, ipv4_method, ipv4_address) client = nm.Client.new(None) client.add_connection_async(connection, True, None, _callback, None) + return connection_uuid def edit_ethernet_connection(connection, name, zone, ipv4_method, @@ -222,12 +230,16 @@ def _update_wifi_settings(connection, connection_uuid, name, zone, ssid, mode, def add_wifi_connection(name, zone, ssid, mode, auth_mode, passphrase, ipv4_method, ipv4_address): - """Add an automatic Wi-Fi connection in network manager.""" + """Add an automatic Wi-Fi connection in network manager. + Return the UUID for the connection. + """ + connection_uuid = str(uuid.uuid4()) connection = _update_wifi_settings( - None, str(uuid.uuid4()), name, zone, ssid, mode, auth_mode, passphrase, + None, connection_uuid, name, zone, ssid, mode, auth_mode, passphrase, ipv4_method, ipv4_address) client = nm.Client.new(None) client.add_connection_async(connection, True, None, _callback, None) + return connection_uuid def edit_wifi_connection(connection, name, zone, diff --git a/plinth/tests/test_network.py b/plinth/tests/test_network.py index 1af32d2a1..65b97e2ad 100644 --- a/plinth/tests/test_network.py +++ b/plinth/tests/test_network.py @@ -33,15 +33,13 @@ class TestNetwork(unittest.TestCase): @classmethod def setUp(cls): - connection = network.add_ethernet_connection( + cls.ethernet_uuid = network.add_ethernet_connection( 'plinth_test_eth', 'internal', 'auto', '') - cls.ethernet_uuid = connection['connection']['uuid'] - connection = network.add_wifi_connection( + cls.wifi_uuid = network.add_wifi_connection( 'plinth_test_wifi', 'external', 'plinthtestwifi', 'adhoc', 'open', '', 'auto', '') - cls.wifi_uuid = connection['connection']['uuid'] @classmethod def tearDown(cls): @@ -61,11 +59,11 @@ class TestNetwork(unittest.TestCase): """Check that we can get a connection by name.""" connection = network.get_connection(self.ethernet_uuid) self.assertEqual( - connection.GetSettings()['connection']['id'], 'plinth_test_eth') + connection.get_id(), 'plinth_test_eth') connection = network.get_connection(self.wifi_uuid) self.assertEqual( - connection.GetSettings()['connection']['id'], 'plinth_test_wifi') + connection.get_id(), 'plinth_test_wifi') self.assertRaises(network.ConnectionNotFound, network.get_connection, 'x-invalid-network-id') @@ -79,12 +77,16 @@ class TestNetwork(unittest.TestCase): '169.254.0.1') connection = network.get_connection(self.ethernet_uuid) - settings = connection.GetSettings() - self.assertEqual(settings['connection']['id'], 'plinth_test_eth_new') - self.assertEqual(settings['connection']['zone'], 'external') - self.assertEqual(settings['ipv4']['method'], 'manual') - self.assertEqual(settings['ipv4']['addresses'], - [['169.254.0.1', 24, '0.0.0.0']]) + self.assertEqual(connection.get_id(), 'plinth_test_eth_new') + + settings_connection = connection.get_setting_connection() + self.assertEqual(settings_connection.get_zone(), 'external') + + settings_ipv4 = connection.get_setting_ip4_config() + self.assertEqual(settings_ipv4.get_method(), 'manual') + + address = settings_ipv4.get_address(0) + self.assertEqual(address.get_address(), '169.254.0.1') @unittest.skipUnless(euid == 0, 'Needs to be root') def test_edit_wifi_connection(self): @@ -96,16 +98,23 @@ class TestNetwork(unittest.TestCase): 'auto', '') connection = network.get_connection(self.wifi_uuid) - settings = connection.GetSettings() - self.assertEqual(settings['connection']['id'], 'plinth_test_wifi_new') - self.assertEqual(settings['connection']['zone'], 'external') - self.assertEqual(settings['802-11-wireless']['ssid'], - 'plinthtestwifi2') - self.assertEqual(settings['802-11-wireless']['mode'], 'infrastructure') - self.assertEqual(settings['802-11-wireless-security']['key-mgmt'], - 'wpa-psk') + + self.assertEqual(connection.get_id(), 'plinth_test_wifi_new') + + settings_connection = connection.get_setting_connection() + self.assertEqual(settings_connection.get_zone(), 'external') + + settings_wireless = connection.get_setting_wireless() + self.assertEqual(settings_wireless.get_ssid().get_data(), + b'plinthtestwifi2') + self.assertEqual(settings_wireless.get_mode(), 'infrastructure') + + wifi_sec = connection.get_setting_wireless_security() + self.assertEqual(wifi_sec.get_key_mgmt(), 'wpa-psk') + + secrets = connection.get_secrets('802-11-wireless-security') self.assertEqual( - connection.GetSecrets()['802-11-wireless-security']['psk'], + secrets['802-11-wireless-security']['psk'], 'secretpassword')