mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-12-01 15:49:49 +01:00
0fdc3b3ed6
Many tests force a reauth after the initial connection. When the tests were written there was no way of ensuring the reauth completed except waiting (IWD.wait()). Now we can wait for hostapd events in the tests, which is faster and more reliable than busy waiting.
80 lines
2.1 KiB
Python
80 lines
2.1 KiB
Python
#!/usr/bin/python3
|
|
|
|
import unittest
|
|
import sys
|
|
|
|
sys.path.append('../util')
|
|
import iwd
|
|
from iwd import IWD
|
|
from iwd import PSKAgent
|
|
from iwd import NetworkType
|
|
|
|
from hostapd import HostapdCLI
|
|
from hostapd import hostapd_map
|
|
|
|
class Test(unittest.TestCase):
|
|
|
|
def validate_connection(self, wd):
|
|
hostapd = HostapdCLI(config='ssidEAP-PWD.conf')
|
|
|
|
self.assertIsNotNone(hostapd)
|
|
|
|
psk_agent = PSKAgent('eap-pwd-identity', ('eap-pwd-identity',
|
|
'secret123'))
|
|
wd.register_psk_agent(psk_agent)
|
|
|
|
devices = wd.list_devices(1)
|
|
self.assertIsNotNone(devices)
|
|
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)
|
|
|
|
ordered_network = device.get_ordered_network('ssidEAP-PWD')
|
|
|
|
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)
|
|
|
|
hostapd.eapol_reauth(device.address)
|
|
|
|
hostapd.wait_for_event('CTRL-EVENT-EAP-STARTED')
|
|
hostapd.wait_for_event('CTRL-EVENT-EAP-SUCCESS')
|
|
|
|
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)
|
|
|
|
wd.unregister_psk_agent(psk_agent)
|
|
|
|
def test_connection_success(self):
|
|
wd = IWD(True)
|
|
|
|
self.validate_connection(wd)
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
IWD.copy_to_storage('ssidEAP-PWD.8021x')
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
IWD.clear_storage()
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main(exit=True)
|