From e3fe7ab18e044c1c858f12e398a40ed084126085 Mon Sep 17 00:00:00 2001 From: James Prestwood Date: Fri, 13 Sep 2019 10:27:28 -0700 Subject: [PATCH] auto-t: test frequency removal and cleanup This cleans up the test, but also adds some code to make sure the frequency file is updated when a known network is forgotten --- autotests/testKnownNetworks/frequency_test.py | 102 ++++++++++++------ 1 file changed, 71 insertions(+), 31 deletions(-) diff --git a/autotests/testKnownNetworks/frequency_test.py b/autotests/testKnownNetworks/frequency_test.py index 7fc185df..101cfd9a 100644 --- a/autotests/testKnownNetworks/frequency_test.py +++ b/autotests/testKnownNetworks/frequency_test.py @@ -13,6 +13,21 @@ import os from configparser import ConfigParser class Test(unittest.TestCase): + def connect_network(self, wd, device, network): + ordered_network = device.get_ordered_network(network) + + condition = 'not obj.connected' + wd.wait_for_object_condition(ordered_network.network_object, condition) + + ordered_network.network_object.connect() + + condition = 'obj.connected' + wd.wait_for_object_condition(ordered_network.network_object, condition) + + device.disconnect() + + condition = 'not obj.connected' + wd.wait_for_object_condition(ordered_network.network_object, condition) def test_connection_success(self): wd = IWD(True, '/tmp') @@ -31,66 +46,91 @@ class Test(unittest.TestCase): condition = 'not obj.scanning' wd.wait_for_object_condition(device, condition) - ordered_network = device.get_ordered_network('ssidCCMP') + # + # Connect to the PSK network, then Hotspot so IWD creates 2 entries in + # the known frequency file. + # - self.assertEqual(ordered_network.type, NetworkType.psk) - - condition = 'not obj.connected' - wd.wait_for_object_condition(ordered_network.network_object, condition) - - ordered_network.network_object.connect() - - condition = 'obj.connected' - wd.wait_for_object_condition(ordered_network.network_object, condition) - - device.disconnect() - - condition = 'not obj.connected' - wd.wait_for_object_condition(ordered_network.network_object, condition) + self.connect_network(wd, device, 'ssidCCMP') wd.unregister_psk_agent(psk_agent) psk_agent = PSKAgent('abc', ('domain\\user', 'testpasswd')) wd.register_psk_agent(psk_agent) - ordered_network = device.get_ordered_network('Hotspot') - - self.assertEqual(ordered_network.type, NetworkType.eap) - - condition = 'not obj.connected' - wd.wait_for_object_condition(ordered_network.network_object, condition) - - ordered_network.network_object.connect() - - condition = 'obj.connected' - wd.wait_for_object_condition(ordered_network.network_object, condition) - - device.disconnect() - - condition = 'not obj.connected' - wd.wait_for_object_condition(ordered_network.network_object, condition) + self.connect_network(wd, device, 'Hotspot') wd.unregister_psk_agent(psk_agent) psk_freqs = None + psk_uuid = None hs20_freqs = None + hs20_uuid = None config = ConfigParser() config.read('/var/lib/iwd/.known_network.freq') for s in config.sections(): if os.path.basename(config[s]['name']) == 'ssidCCMP.psk': psk_freqs = config[s]['list'] psk_freqs = psk_freqs.split(' ') + psk_uuid = s elif os.path.basename(config[s]['name']) == 'example.conf': hs20_freqs = config[s]['list'] hs20_freqs = hs20_freqs.split(' ') + hs20_uuid = s + # + # Verify the frequencies are what we expect + # self.assertIsNotNone(psk_freqs) + self.assertIsNotNone(psk_uuid) self.assertIn('5180', psk_freqs) self.assertIn('2412', psk_freqs) self.assertIsNotNone(hs20_freqs) + self.assertIsNotNone(hs20_uuid) self.assertIn('2412', hs20_freqs) + # + # Forget all know networks, this should remove all entries in the + # known frequencies file. + # + for n in wd.list_known_networks(): + n.forget() + + psk_agent = PSKAgent("secret123") + wd.register_psk_agent(psk_agent) + + # + # Reconnect, this should generate a completely new UUID since we + # previously forgot the network. + # + self.connect_network(wd, device, 'ssidCCMP') + + wd.unregister_psk_agent(psk_agent) + + # + # Ensure that a new UUID was created and that we still have the same + # frequencies listed. + # + psk_freqs = None + psk_uuid2 = None + hs20_freqs = None + config = ConfigParser() + config.read('/var/lib/iwd/.known_network.freq') + for s in config.sections(): + self.assertNotEqual(os.path.basename(config[s]['name']), + 'example.conf') + if os.path.basename(config[s]['name']) == 'ssidCCMP.psk': + psk_freqs = config[s]['list'] + psk_freqs = psk_freqs.split(' ') + psk_uuid2 = s + + self.assertIsNotNone(psk_freqs) + self.assertIsNotNone(psk_uuid2) + self.assertNotEqual(psk_uuid, psk_uuid2) + self.assertIn('5180', psk_freqs) + self.assertIn('2412', psk_freqs) + @classmethod def setUpClass(cls): IWD.copy_to_hotspot('example.conf')