def test_list_removal_and_addition(self): wd = IWD(start_iwd_daemon=True) known_networks = wd.list_known_networks() self.assertEqual(len(known_networks), 3) wd.forget_known_network(known_networks[0]) known_networks = wd.list_known_networks() self.assertEqual(len(known_networks), 2) self.connect_to_new_network(wd) known_networks = wd.list_known_networks() self.assertEqual(len(known_networks), 3) for net in known_networks: wd.forget_known_network(net) known_networks = wd.list_known_networks() self.assertEqual(len(known_networks), 0)
def test_connection_success(self): wd = IWD(True, '/tmp') hapd_hotspot = HostapdCLI(config='ssidHotspot.conf') hapd_wpa = HostapdCLI(config='ssidWPA2-1.conf') self.assertEqual(len(wd.list_known_networks()), 2) devices = wd.list_devices(1) device = devices[0] condition = 'obj.scanning' wd.wait_for_object_condition(device, condition) condition = 'not obj.scanning' wd.wait_for_object_condition(device, condition) wpa_network = device.get_ordered_network("ssidWPA2-1") self.assertEqual(wpa_network.type, NetworkType.psk) # # First make sure we can connect to a provisioned, non-Hotspot network, # while there are hotspot networks in range. This should result in # autoconnect *after* ANQP is performed # condition = 'obj.state == DeviceState.connected' wd.wait_for_object_condition(device, condition) testutil.test_iface_operstate() testutil.test_ifaces_connected(device.name, hapd_wpa.ifname) # # Remove provisioning file, this should cause a disconnect. # os.remove("/tmp/iwd/ssidWPA2-1.psk") condition = 'obj.state == DeviceState.disconnected' wd.wait_for_object_condition(device, condition) condition = 'len(obj.list_known_networks()) == 1' wd.wait_for_object_condition(wd, condition) condition = 'obj.scanning' wd.wait_for_object_condition(device, condition) condition = 'not obj.scanning' wd.wait_for_object_condition(device, condition) hotspot_network = device.get_ordered_network("Hotspot") self.assertEqual(hotspot_network.type, NetworkType.eap) # # Since there are no other provisioned networks, we should do ANQP and # autoconnect to the hotspot network. # condition = 'obj.state == DeviceState.connected' wd.wait_for_object_condition(device, condition) testutil.test_iface_operstate() testutil.test_ifaces_connected(device.name, hapd_hotspot.ifname) os.remove('/tmp/iwd/hotspot/autoconnect.conf') # # make sure removal of hotspot conf file resulted in disconnect # condition = 'obj.state == DeviceState.disconnected' wd.wait_for_object_condition(device, condition) IWD.copy_to_storage('ssidWPA2-1.psk') condition = 'len(obj.list_known_networks()) == 1' wd.wait_for_object_condition(wd, condition) condition = 'obj.scanning' wd.wait_for_object_condition(device, condition) condition = 'not obj.scanning' wd.wait_for_object_condition(device, condition) hotspot_network = device.get_ordered_network("ssidWPA2-1") self.assertEqual(hotspot_network.type, NetworkType.psk) condition = 'obj.state == DeviceState.connected' wd.wait_for_object_condition(device, condition) testutil.test_iface_operstate() testutil.test_ifaces_connected(device.name, hapd_wpa.ifname) device.disconnect()
def test_connection_success(self): wd = IWD(True, '/tmp') psk_agent = PSKAgent("secret123") wd.register_psk_agent(psk_agent) devices = wd.list_devices(1) device = devices[0] condition = 'not obj.scanning' wd.wait_for_object_condition(device, condition) device.scan() condition = 'not obj.scanning' wd.wait_for_object_condition(device, condition) # # Connect to the PSK network, then Hotspot so IWD creates 2 entries in # the known frequency file. # 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) 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)