network: Convert tests to pytest style

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: Joseph Nuthalapati <njoseph@thoughtworks.com>
This commit is contained in:
Sunil Mohan Adapa 2019-05-01 16:11:58 -07:00 committed by Joseph Nuthalapati
parent 13ed080003
commit 67539e05fc
No known key found for this signature in database
GPG Key ID: 5398F00A2FA43C35

View File

@ -20,14 +20,9 @@ Test module for network configuration utilities.
""" """
import copy import copy
import os
import time import time
import unittest
import pytest
euid = os.geteuid()
if euid == 0:
from plinth import network
ethernet_settings = { ethernet_settings = {
'common': { 'common': {
@ -88,240 +83,246 @@ pppoe_settings = {
}, },
} }
@pytest.fixture(name='network')
def fixture_network(needs_root):
"""Return the network module. Load it conservatively."""
from plinth import network as network_module
return network_module
class TestNetwork(unittest.TestCase):
"""Verify that the network module performs as expected."""
ethernet_uuid = None def _connection(network, settings):
wifi_uuid = None """Create, yield and delete a connection."""
pppoe_uuid = None uuid = network.add_connection(settings)
time.sleep(0.1)
yield uuid
network.delete_connection(uuid)
@classmethod
def setUp(cls):
cls.ethernet_uuid = network.add_connection(ethernet_settings)
cls.wifi_uuid = network.add_connection(wifi_settings)
cls.pppoe_uuid = network.add_connection(pppoe_settings)
# XXX: Handle this properly by waiting for asynchronous add_connection
# to complete.
time.sleep(0.1)
@classmethod @pytest.fixture(name='ethernet_uuid')
def tearDown(cls): def fixture_ethernet_uuid(network):
network.delete_connection(cls.ethernet_uuid) """Test fixture to setup and teardown an Ethernet connection."""
network.delete_connection(cls.wifi_uuid) yield from _connection(network, ethernet_settings)
network.delete_connection(cls.pppoe_uuid)
@unittest.skipUnless(euid == 0, 'Needs to be root')
def test_get_connection_list(self):
"""Check that we can get a list of available connections."""
connections = network.get_connection_list()
self.assertTrue('plinth_test_eth' in [x['name'] for x in connections]) @pytest.fixture(name='wifi_uuid')
self.assertTrue('plinth_test_wifi' in [x['name'] for x in connections]) def fixture_wifi_uuid(network):
self.assertTrue('plinth_test_pppoe' in """Test fixture to setup and teardown an Wi-Fi connection."""
[x['name'] for x in connections]) yield from _connection(network, wifi_settings)
@unittest.skipUnless(euid == 0, 'Needs to be root')
def test_get_connection(self):
"""Check that we can get a connection by name."""
connection = network.get_connection(self.ethernet_uuid)
self.assertEqual(
connection.get_id(), 'plinth_test_eth')
connection = network.get_connection(self.wifi_uuid) @pytest.fixture(name='pppoe_uuid')
self.assertEqual( def fixture_pppoe_uuid(network):
connection.get_id(), 'plinth_test_wifi') """Test fixture to setup and teardown an PPPoE connection."""
yield from _connection(network, pppoe_settings)
self.assertRaises(network.ConnectionNotFound, network.get_connection,
'x-invalid-network-id')
@unittest.skipUnless(euid == 0, 'Needs to be root')
def test_edit_ethernet_connection(self):
"""Check that we can update an ethernet connection."""
connection = network.get_connection(self.ethernet_uuid)
ethernet_settings2 = copy.deepcopy(ethernet_settings)
ethernet_settings2['common']['name'] = 'plinth_test_eth_new'
ethernet_settings2['common']['interface'] = 'eth1'
ethernet_settings2['common']['zone'] = 'external'
ethernet_settings2['ipv4']['method'] = 'auto'
network.edit_connection(connection, ethernet_settings2)
connection = network.get_connection(self.ethernet_uuid) @pytest.mark.usefixtures('ethernet_uuid', 'wifi_uuid', 'pppoe_uuid')
self.assertEqual(connection.get_id(), 'plinth_test_eth_new') def test_get_connection_list(network):
"""Check that we can get a list of available connections."""
connections = network.get_connection_list()
settings_connection = connection.get_setting_connection() assert 'plinth_test_eth' in [x['name'] for x in connections]
self.assertEqual(settings_connection.get_interface_name(), 'eth1') assert 'plinth_test_wifi' in [x['name'] for x in connections]
self.assertEqual(settings_connection.get_zone(), 'external') assert 'plinth_test_pppoe' in [x['name'] for x in connections]
settings_ipv4 = connection.get_setting_ip4_config()
self.assertEqual(settings_ipv4.get_method(), 'auto')
@unittest.skipUnless(euid == 0, 'Needs to be root')
def test_edit_pppoe_connection(self):
"""Check that we can update a PPPoE connection."""
connection = network.get_connection(self.ethernet_uuid)
pppoe_settings2 = copy.deepcopy(pppoe_settings)
pppoe_settings2['common']['name'] = 'plinth_test_pppoe_new'
pppoe_settings2['common']['interface'] = 'eth2'
pppoe_settings2['common']['zone'] = 'external'
pppoe_settings2['pppoe']['username'] = 'x-user-new'
pppoe_settings2['pppoe']['password'] = 'x-password-new'
network.edit_connection(connection, pppoe_settings2)
connection = network.get_connection(self.ethernet_uuid) def test_get_connection(network, ethernet_uuid, wifi_uuid):
self.assertEqual(connection.get_id(), 'plinth_test_pppoe_new') """Check that we can get a connection by name."""
connection = network.get_connection(ethernet_uuid)
assert connection.get_id() == 'plinth_test_eth'
settings_connection = connection.get_setting_connection() connection = network.get_connection(wifi_uuid)
self.assertEqual(settings_connection.get_interface_name(), 'eth2') assert connection.get_id() == 'plinth_test_wifi'
self.assertEqual(settings_connection.get_zone(), 'external')
settings_pppoe = connection.get_setting_pppoe() with pytest.raises(network.ConnectionNotFound):
self.assertEqual(settings_pppoe.get_username(), 'x-user-new') network.get_connection('x-invalid-network-id')
secrets = connection.get_secrets('pppoe')
self.assertEqual(secrets['pppoe']['password'], 'x-password-new')
settings_ppp = connection.get_setting_ppp()
self.assertEqual(settings_ppp.get_lcp_echo_failure(), 5)
self.assertEqual(settings_ppp.get_lcp_echo_interval(), 30)
@unittest.skipUnless(euid == 0, 'Needs to be root') def test_edit_ethernet_connection(network, ethernet_uuid):
def test_edit_wifi_connection(self): """Check that we can update an ethernet connection."""
"""Check that we can update a wifi connection.""" connection = network.get_connection(ethernet_uuid)
connection = network.get_connection(self.wifi_uuid) ethernet_settings2 = copy.deepcopy(ethernet_settings)
wifi_settings2 = copy.deepcopy(wifi_settings) ethernet_settings2['common']['name'] = 'plinth_test_eth_new'
wifi_settings2['common']['name'] = 'plinth_test_wifi_new' ethernet_settings2['common']['interface'] = 'eth1'
wifi_settings2['common']['interface'] = 'wlan1' ethernet_settings2['common']['zone'] = 'external'
wifi_settings2['common']['zone'] = 'external' ethernet_settings2['ipv4']['method'] = 'auto'
wifi_settings2['ipv4']['method'] = 'auto' network.edit_connection(connection, ethernet_settings2)
wifi_settings2['wireless']['ssid'] = 'plinthtestwifi2'
wifi_settings2['wireless']['mode'] = 'infrastructure'
wifi_settings2['wireless']['auth_mode'] = 'wpa'
wifi_settings2['wireless']['passphrase'] = 'secretpassword'
network.edit_connection(connection, wifi_settings2)
connection = network.get_connection(self.wifi_uuid) connection = network.get_connection(ethernet_uuid)
assert connection.get_id() == 'plinth_test_eth_new'
self.assertEqual(connection.get_id(), 'plinth_test_wifi_new') settings_connection = connection.get_setting_connection()
assert settings_connection.get_interface_name() == 'eth1'
assert settings_connection.get_zone() == 'external'
settings_connection = connection.get_setting_connection() settings_ipv4 = connection.get_setting_ip4_config()
self.assertEqual(settings_connection.get_interface_name(), 'wlan1') assert settings_ipv4.get_method() == 'auto'
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() def test_edit_pppoe_connection(network, pppoe_uuid):
self.assertEqual(wifi_sec.get_key_mgmt(), 'wpa-psk') """Check that we can update a PPPoE connection."""
connection = network.get_connection(pppoe_uuid)
pppoe_settings2 = copy.deepcopy(pppoe_settings)
pppoe_settings2['common']['name'] = 'plinth_test_pppoe_new'
pppoe_settings2['common']['interface'] = 'eth2'
pppoe_settings2['common']['zone'] = 'external'
pppoe_settings2['pppoe']['username'] = 'x-user-new'
pppoe_settings2['pppoe']['password'] = 'x-password-new'
network.edit_connection(connection, pppoe_settings2)
secrets = connection.get_secrets('802-11-wireless-security') connection = network.get_connection(pppoe_uuid)
self.assertEqual( assert connection.get_id() == 'plinth_test_pppoe_new'
secrets['802-11-wireless-security']['psk'],
'secretpassword')
@unittest.skipUnless(euid == 0, 'Needs to be root') settings_connection = connection.get_setting_connection()
def test_ethernet_manual_ipv4_address(self): assert settings_connection.get_interface_name() == 'eth2'
"""Check that we can manually set IPv4 address on ethernet.""" assert settings_connection.get_zone() == 'external'
connection = network.get_connection(self.ethernet_uuid)
ethernet_settings2 = copy.deepcopy(ethernet_settings)
ethernet_settings2['ipv4']['method'] = 'manual'
ethernet_settings2['ipv4']['address'] = '169.254.0.1'
ethernet_settings2['ipv4']['netmask'] = '255.255.254.0'
ethernet_settings2['ipv4']['gateway'] = '169.254.0.254'
ethernet_settings2['ipv4']['dns'] = '1.2.3.4'
ethernet_settings2['ipv4']['second_dns'] = '1.2.3.5'
network.edit_connection(connection, ethernet_settings2)
connection = network.get_connection(self.ethernet_uuid) settings_pppoe = connection.get_setting_pppoe()
settings_ipv4 = connection.get_setting_ip4_config() assert settings_pppoe.get_username() == 'x-user-new'
self.assertEqual(settings_ipv4.get_method(), 'manual') secrets = connection.get_secrets('pppoe')
assert secrets['pppoe']['password'] == 'x-password-new'
address = settings_ipv4.get_address(0) settings_ppp = connection.get_setting_ppp()
self.assertEqual(address.get_address(), '169.254.0.1') assert settings_ppp.get_lcp_echo_failure() == 5
self.assertEqual(address.get_prefix(), 23) assert settings_ppp.get_lcp_echo_interval() == 30
self.assertEqual(settings_ipv4.get_gateway(), '169.254.0.254')
self.assertEqual(settings_ipv4.get_num_dns(), 2)
self.assertEqual(settings_ipv4.get_dns(0), '1.2.3.4')
self.assertEqual(settings_ipv4.get_dns(1), '1.2.3.5')
@unittest.skipUnless(euid == 0, 'Needs to be root')
def test_ethernet_manual_ipv6_address(self):
"""Check that we can manually set IPv6 address on ethernet."""
connection = network.get_connection(self.ethernet_uuid)
ethernet_settings2 = copy.deepcopy(ethernet_settings)
ethernet_settings2['ipv6']['method'] = 'manual'
ethernet_settings2['ipv6']['address'] = '::ffff:169.254.0.1'
ethernet_settings2['ipv6']['prefix'] = '63'
ethernet_settings2['ipv6']['gateway'] = '::ffff:169.254.0.254'
ethernet_settings2['ipv6']['dns'] = '::ffff:1.2.3.4'
ethernet_settings2['ipv6']['second_dns'] = '::ffff:1.2.3.5'
network.edit_connection(connection, ethernet_settings2)
connection = network.get_connection(self.ethernet_uuid) def test_edit_wifi_connection(network, wifi_uuid):
settings_ipv6 = connection.get_setting_ip6_config() """Check that we can update a wifi connection."""
self.assertEqual(settings_ipv6.get_method(), 'manual') connection = network.get_connection(wifi_uuid)
wifi_settings2 = copy.deepcopy(wifi_settings)
wifi_settings2['common']['name'] = 'plinth_test_wifi_new'
wifi_settings2['common']['interface'] = 'wlan1'
wifi_settings2['common']['zone'] = 'external'
wifi_settings2['ipv4']['method'] = 'auto'
wifi_settings2['wireless']['ssid'] = 'plinthtestwifi2'
wifi_settings2['wireless']['mode'] = 'infrastructure'
wifi_settings2['wireless']['auth_mode'] = 'wpa'
wifi_settings2['wireless']['passphrase'] = 'secretpassword'
network.edit_connection(connection, wifi_settings2)
address = settings_ipv6.get_address(0) connection = network.get_connection(wifi_uuid)
self.assertEqual(address.get_address(), '::ffff:169.254.0.1')
self.assertEqual(address.get_prefix(), 63)
self.assertEqual(settings_ipv6.get_gateway(), '::ffff:169.254.0.254')
self.assertEqual(settings_ipv6.get_num_dns(), 2)
self.assertEqual(settings_ipv6.get_dns(0), '::ffff:1.2.3.4')
self.assertEqual(settings_ipv6.get_dns(1), '::ffff:1.2.3.5')
@unittest.skipUnless(euid == 0, 'Needs to be root') assert connection.get_id() == 'plinth_test_wifi_new'
def test_wifi_manual_ipv4_address(self):
"""Check that we can manually set IPv4 address on wifi."""
connection = network.get_connection(self.wifi_uuid)
wifi_settings2 = copy.deepcopy(wifi_settings)
wifi_settings2['ipv4']['method'] = 'manual'
wifi_settings2['ipv4']['address'] = '169.254.0.2'
wifi_settings2['ipv4']['netmask'] = '255.255.254.0'
wifi_settings2['ipv4']['gateway'] = '169.254.0.254'
wifi_settings2['ipv4']['dns'] = '1.2.3.4'
wifi_settings2['ipv4']['second_dns'] = '1.2.3.5'
wifi_settings2['wireless']['ssid'] = 'plinthtestwifi'
wifi_settings2['wireless']['mode'] = 'adhoc'
wifi_settings2['wireless']['auth_mode'] = 'open'
network.edit_connection(connection, wifi_settings2)
connection = network.get_connection(self.wifi_uuid) settings_connection = connection.get_setting_connection()
settings_ipv4 = connection.get_setting_ip4_config() assert settings_connection.get_interface_name() == 'wlan1'
self.assertEqual(settings_ipv4.get_method(), 'manual') assert settings_connection.get_zone() == 'external'
address = settings_ipv4.get_address(0) settings_wireless = connection.get_setting_wireless()
self.assertEqual(address.get_address(), '169.254.0.2') assert settings_wireless.get_ssid().get_data() == b'plinthtestwifi2'
self.assertEqual(address.get_prefix(), 23) assert settings_wireless.get_mode() == 'infrastructure'
self.assertEqual(settings_ipv4.get_gateway(), '169.254.0.254')
self.assertEqual(settings_ipv4.get_num_dns(), 2)
self.assertEqual(settings_ipv4.get_dns(0), '1.2.3.4')
self.assertEqual(settings_ipv4.get_dns(1), '1.2.3.5')
@unittest.skipUnless(euid == 0, 'Needs to be root') wifi_sec = connection.get_setting_wireless_security()
def test_wifi_manual_ipv6_address(self): assert wifi_sec.get_key_mgmt() == 'wpa-psk'
"""Check that we can manually set IPv6 address on wifi."""
connection = network.get_connection(self.wifi_uuid)
wifi_settings2 = copy.deepcopy(wifi_settings)
wifi_settings2['ipv6']['method'] = 'manual'
wifi_settings2['ipv6']['address'] = '::ffff:169.254.0.2'
wifi_settings2['ipv6']['prefix'] = 63
wifi_settings2['ipv6']['gateway'] = '::ffff:169.254.0.254'
wifi_settings2['ipv6']['dns'] = '::ffff:1.2.3.4'
wifi_settings2['ipv6']['second_dns'] = '::ffff:1.2.3.5'
wifi_settings2['wireless']['ssid'] = 'plinthtestwifi'
wifi_settings2['wireless']['mode'] = 'adhoc'
wifi_settings2['wireless']['auth_mode'] = 'open'
network.edit_connection(connection, wifi_settings2)
connection = network.get_connection(self.wifi_uuid) secrets = connection.get_secrets('802-11-wireless-security')
settings_ipv6 = connection.get_setting_ip6_config() assert secrets['802-11-wireless-security']['psk'] == 'secretpassword'
self.assertEqual(settings_ipv6.get_method(), 'manual')
address = settings_ipv6.get_address(0)
self.assertEqual(address.get_address(), '::ffff:169.254.0.2') def test_ethernet_manual_ipv4_address(network, ethernet_uuid):
self.assertEqual(address.get_prefix(), 63) """Check that we can manually set IPv4 address on ethernet."""
self.assertEqual(settings_ipv6.get_gateway(), '::ffff:169.254.0.254') connection = network.get_connection(ethernet_uuid)
self.assertEqual(settings_ipv6.get_num_dns(), 2) ethernet_settings2 = copy.deepcopy(ethernet_settings)
self.assertEqual(settings_ipv6.get_dns(0), '::ffff:1.2.3.4') ethernet_settings2['ipv4']['method'] = 'manual'
self.assertEqual(settings_ipv6.get_dns(1), '::ffff:1.2.3.5') ethernet_settings2['ipv4']['address'] = '169.254.0.1'
ethernet_settings2['ipv4']['netmask'] = '255.255.254.0'
ethernet_settings2['ipv4']['gateway'] = '169.254.0.254'
ethernet_settings2['ipv4']['dns'] = '1.2.3.4'
ethernet_settings2['ipv4']['second_dns'] = '1.2.3.5'
network.edit_connection(connection, ethernet_settings2)
connection = network.get_connection(ethernet_uuid)
settings_ipv4 = connection.get_setting_ip4_config()
assert settings_ipv4.get_method() == 'manual'
address = settings_ipv4.get_address(0)
assert address.get_address() == '169.254.0.1'
assert address.get_prefix() == 23
assert settings_ipv4.get_gateway() == '169.254.0.254'
assert settings_ipv4.get_num_dns() == 2
assert settings_ipv4.get_dns(0) == '1.2.3.4'
assert settings_ipv4.get_dns(1) == '1.2.3.5'
def test_ethernet_manual_ipv6_address(network, ethernet_uuid):
"""Check that we can manually set IPv6 address on ethernet."""
connection = network.get_connection(ethernet_uuid)
ethernet_settings2 = copy.deepcopy(ethernet_settings)
ethernet_settings2['ipv6']['method'] = 'manual'
ethernet_settings2['ipv6']['address'] = '::ffff:169.254.0.1'
ethernet_settings2['ipv6']['prefix'] = '63'
ethernet_settings2['ipv6']['gateway'] = '::ffff:169.254.0.254'
ethernet_settings2['ipv6']['dns'] = '::ffff:1.2.3.4'
ethernet_settings2['ipv6']['second_dns'] = '::ffff:1.2.3.5'
network.edit_connection(connection, ethernet_settings2)
connection = network.get_connection(ethernet_uuid)
settings_ipv6 = connection.get_setting_ip6_config()
assert settings_ipv6.get_method() == 'manual'
address = settings_ipv6.get_address(0)
assert address.get_address() == '::ffff:169.254.0.1'
assert address.get_prefix() == 63
assert settings_ipv6.get_gateway() == '::ffff:169.254.0.254'
assert settings_ipv6.get_num_dns() == 2
assert settings_ipv6.get_dns(0) == '::ffff:1.2.3.4'
assert settings_ipv6.get_dns(1) == '::ffff:1.2.3.5'
def test_wifi_manual_ipv4_address(network, wifi_uuid):
"""Check that we can manually set IPv4 address on wifi."""
connection = network.get_connection(wifi_uuid)
wifi_settings2 = copy.deepcopy(wifi_settings)
wifi_settings2['ipv4']['method'] = 'manual'
wifi_settings2['ipv4']['address'] = '169.254.0.2'
wifi_settings2['ipv4']['netmask'] = '255.255.254.0'
wifi_settings2['ipv4']['gateway'] = '169.254.0.254'
wifi_settings2['ipv4']['dns'] = '1.2.3.4'
wifi_settings2['ipv4']['second_dns'] = '1.2.3.5'
wifi_settings2['wireless']['ssid'] = 'plinthtestwifi'
wifi_settings2['wireless']['mode'] = 'adhoc'
wifi_settings2['wireless']['auth_mode'] = 'open'
network.edit_connection(connection, wifi_settings2)
connection = network.get_connection(wifi_uuid)
settings_ipv4 = connection.get_setting_ip4_config()
assert settings_ipv4.get_method() == 'manual'
address = settings_ipv4.get_address(0)
assert address.get_address() == '169.254.0.2'
assert address.get_prefix() == 23
assert settings_ipv4.get_gateway() == '169.254.0.254'
assert settings_ipv4.get_num_dns() == 2
assert settings_ipv4.get_dns(0) == '1.2.3.4'
assert settings_ipv4.get_dns(1) == '1.2.3.5'
def test_wifi_manual_ipv6_address(network, wifi_uuid):
"""Check that we can manually set IPv6 address on wifi."""
connection = network.get_connection(wifi_uuid)
wifi_settings2 = copy.deepcopy(wifi_settings)
wifi_settings2['ipv6']['method'] = 'manual'
wifi_settings2['ipv6']['address'] = '::ffff:169.254.0.2'
wifi_settings2['ipv6']['prefix'] = 63
wifi_settings2['ipv6']['gateway'] = '::ffff:169.254.0.254'
wifi_settings2['ipv6']['dns'] = '::ffff:1.2.3.4'
wifi_settings2['ipv6']['second_dns'] = '::ffff:1.2.3.5'
wifi_settings2['wireless']['ssid'] = 'plinthtestwifi'
wifi_settings2['wireless']['mode'] = 'adhoc'
wifi_settings2['wireless']['auth_mode'] = 'open'
network.edit_connection(connection, wifi_settings2)
connection = network.get_connection(wifi_uuid)
settings_ipv6 = connection.get_setting_ip6_config()
assert settings_ipv6.get_method() == 'manual'
address = settings_ipv6.get_address(0)
assert address.get_address() == '::ffff:169.254.0.2'
assert address.get_prefix() == 63
assert settings_ipv6.get_gateway() == '::ffff:169.254.0.254'
assert settings_ipv6.get_num_dns() == 2
assert settings_ipv6.get_dns(0) == '::ffff:1.2.3.4'
assert settings_ipv6.get_dns(1) == '::ffff:1.2.3.5'