mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-11-25 17:59:25 +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.
78 lines
2.0 KiB
Python
78 lines
2.0 KiB
Python
#!/usr/bin/python3
|
|
|
|
import unittest
|
|
import sys
|
|
|
|
sys.path.append('../util')
|
|
import iwd
|
|
import testutil
|
|
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 test_connection_success(self):
|
|
hostapd = HostapdCLI(config='ssidEAP-TTLS-CHAP.conf')
|
|
|
|
self.assertIsNotNone(hostapd)
|
|
|
|
wd = IWD()
|
|
|
|
psk_agent = PSKAgent('abc', ('user', 'testpasswd'))
|
|
wd.register_psk_agent(psk_agent)
|
|
|
|
device = wd.list_devices(1)[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-TTLS-CHAP')
|
|
|
|
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)
|
|
|
|
testutil.test_iface_operstate()
|
|
testutil.test_ifaces_connected()
|
|
|
|
device.disconnect()
|
|
|
|
condition = 'not obj.connected'
|
|
wd.wait_for_object_condition(ordered_network.network_object, condition)
|
|
|
|
wd.unregister_psk_agent(psk_agent)
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
IWD.copy_to_storage('ssidEAP-TTLS-CHAP.8021x')
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
IWD.clear_storage()
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main(exit=True)
|