aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Prestwood <prestwoj@gmail.com>2024-02-27 10:34:03 -0800
committerDenis Kenzior <denkenz@gmail.com>2024-02-27 13:55:37 -0600
commite296a61e3fb4f9f2a8183e272d3d00b64c2c4f88 (patch)
tree64a8f89c45d9a5ebd1d181503ea3f18bc4e8d6fb
parent82161909a1bb74c07d78eecc11dc0972efbe3cff (diff)
auto-t: refactor/fix testSAE
The SAE test made some assumptions on certain conditions due to there being no way of checking if those conditions were met Mainly the use of H2E/hunt-and-peck. We assumed that when we told hostapd to use H2E or hunt/peck it would but in reality it was not. Hostapd is apparently not very good at swapping between the two with a simple "reload" command. Once H2E is enabled it appears that it cannot be undone. Similarly the vendor elements seem to carry over from test to test, and sometimes not which causes unintended behavior. To fix this create separate APs for the specific scenario being tested: - Hunt and peck - H2E - Special vendor_element simulating buggy APs Another issue found was that if password identifies are used hostapd automatically chooses H2E which was not intented, at least based on the test names (in reality it wasn't causing any problems). The tests have also been improved to use hostapds "sta_status" command which contains the group number used when authenticating, so now that at least can be verified.
-rw-r--r--autotests/testSAE/autoconnect_test.py32
-rw-r--r--autotests/testSAE/connection_test.py42
-rw-r--r--autotests/testSAE/hw.conf3
-rw-r--r--autotests/testSAE/profiles/ssidSAE-H2E.psk.default (renamed from autotests/testSAE/ssidSAE.psk.default)0
-rw-r--r--autotests/testSAE/profiles/ssidSAE.psk.default2
-rw-r--r--autotests/testSAE/profiles/ssidSAE.psk.identifier (renamed from autotests/testSAE/ssidSAE.psk.identifier)0
-rw-r--r--autotests/testSAE/ssidSAE-H2E.conf12
-rw-r--r--autotests/testSAE/ssidSAE.conf1
8 files changed, 52 insertions, 40 deletions
diff --git a/autotests/testSAE/autoconnect_test.py b/autotests/testSAE/autoconnect_test.py
index 4ce3b845c..605de14d5 100644
--- a/autotests/testSAE/autoconnect_test.py
+++ b/autotests/testSAE/autoconnect_test.py
@@ -12,8 +12,7 @@ from hostapd import HostapdCLI
class Test(unittest.TestCase):
- def validate_connection(self, wd):
-
+ def validate_connection(self, wd, ssid):
devices = wd.list_devices(1)
self.assertIsNotNone(devices)
device = devices[0]
@@ -25,7 +24,7 @@ class Test(unittest.TestCase):
condition = 'obj.connected_network is not None'
wd.wait_for_object_condition(device, condition)
- ordered_network = device.get_ordered_network('ssidSAE')
+ ordered_network = device.get_ordered_network(ssid)
self.assertTrue(ordered_network.network_object.connected)
@@ -35,29 +34,27 @@ class Test(unittest.TestCase):
wd.wait_for_object_condition(ordered_network.network_object, condition)
def test_SAE(self):
- IWD.copy_to_storage("ssidSAE.psk.default", name="ssidSAE.psk")
+ IWD.copy_to_storage("profiles/ssidSAE.psk.default", name="ssidSAE.psk")
self.hostapd.wait_for_event("AP-ENABLED")
wd = IWD(True)
- self.validate_connection(wd)
+ self.validate_connection(wd, "ssidSAE")
def test_SAE_H2E(self):
- IWD.copy_to_storage("ssidSAE.psk.default", name="ssidSAE.psk")
- self.hostapd.set_value('sae_pwe', '1')
- self.hostapd.set_value('sae_groups', '20')
- self.hostapd.reload()
- self.hostapd.wait_for_event("AP-ENABLED")
+ IWD.copy_to_storage("profiles/ssidSAE.psk.default", name="ssidSAE-H2E.psk")
+ self.hostapd_h2e.set_value('sae_groups', '20')
+ self.hostapd_h2e.reload()
+ self.hostapd_h2e.wait_for_event("AP-ENABLED")
wd = IWD(True)
- self.validate_connection(wd)
+ self.validate_connection(wd, "ssidSAE-H2E")
def test_SAE_H2E_password_identifier(self):
- IWD.copy_to_storage("ssidSAE.psk.identifier", name="ssidSAE.psk")
- self.hostapd.set_value('sae_pwe', '1')
- self.hostapd.set_value('sae_groups', '20')
- self.hostapd.reload()
- self.hostapd.wait_for_event("AP-ENABLED")
+ IWD.copy_to_storage("profiles/ssidSAE.psk.identifier", name="ssidSAE-H2E.psk")
+ self.hostapd_h2e.set_value('sae_groups', '20')
+ self.hostapd_h2e.reload()
+ self.hostapd_h2e.wait_for_event("AP-ENABLED")
wd = IWD(True)
- self.validate_connection(wd)
+ self.validate_connection(wd, "ssidSAE-H2E")
def setUp(self):
self.hostapd.default()
@@ -68,6 +65,7 @@ class Test(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.hostapd = HostapdCLI(config='ssidSAE.conf')
+ cls.hostapd_h2e = HostapdCLI(config='ssidSAE-H2E.conf')
if __name__ == '__main__':
unittest.main(exit=True)
diff --git a/autotests/testSAE/connection_test.py b/autotests/testSAE/connection_test.py
index ecb464e2d..f77763851 100644
--- a/autotests/testSAE/connection_test.py
+++ b/autotests/testSAE/connection_test.py
@@ -13,7 +13,7 @@ import testutil
class Test(unittest.TestCase):
- def validate_connection(self, wd):
+ def validate_connection(self, wd, ssid, hostapd, expected_group):
psk_agent = PSKAgent("secret123")
wd.register_psk_agent(psk_agent)
@@ -23,11 +23,11 @@ class Test(unittest.TestCase):
device.disconnect()
- network = device.get_ordered_network('ssidSAE', full_scan=True)
+ network = device.get_ordered_network(ssid, full_scan=True)
self.assertEqual(network.type, NetworkType.psk)
- network.network_object.connect()
+ network.network_object.connect(wait=False)
condition = 'obj.state == DeviceState.connected'
wd.wait_for_object_condition(device, condition)
@@ -35,7 +35,11 @@ class Test(unittest.TestCase):
wd.wait(2)
testutil.test_iface_operstate(intf=device.name)
- testutil.test_ifaces_connected(if0=device.name, if1=self.hostapd.ifname)
+ testutil.test_ifaces_connected(if0=device.name, if1=hostapd.ifname)
+
+ sta_status = hostapd.sta_status(device.address)
+
+ self.assertEqual(int(sta_status["sae_group"]), expected_group)
device.disconnect()
@@ -46,37 +50,31 @@ class Test(unittest.TestCase):
def test_SAE(self):
self.hostapd.wait_for_event("AP-ENABLED")
- self.validate_connection(self.wd)
+ self.validate_connection(self.wd, "ssidSAE", self.hostapd, 19)
def test_SAE_force_group_19(self):
# Vendor data from APs which require group 19 be used first
- # TODO: (for all tests) verify the expected group was used
- self.hostapd.set_value('vendor_elements', 'dd0cf4f5e8050500000000000000')
self.hostapd.reload()
self.hostapd.wait_for_event("AP-ENABLED")
- self.validate_connection(self.wd)
+ self.validate_connection(self.wd, "ssidSAE-default-group", self.hostapd_defgroup, 19)
def test_SAE_Group20(self):
self.hostapd.set_value('sae_groups', '20')
- self.hostapd.set_value('vendor_elements', '')
self.hostapd.reload()
self.hostapd.wait_for_event("AP-ENABLED")
- self.validate_connection(self.wd)
+ self.validate_connection(self.wd, "ssidSAE", self.hostapd, 20)
def test_SAE_H2E(self):
- self.hostapd.set_value('sae_pwe', '1')
- self.hostapd.set_value('vendor_elements', '')
- self.hostapd.reload()
- self.hostapd.wait_for_event("AP-ENABLED")
- self.validate_connection(self.wd)
+ self.hostapd_h2e.set_value('sae_groups', '19')
+ self.hostapd_h2e.reload()
+ self.hostapd_h2e.wait_for_event("AP-ENABLED")
+ self.validate_connection(self.wd, "ssidSAE-H2E", self.hostapd_h2e, 19)
def test_SAE_H2E_Group20(self):
- self.hostapd.set_value('sae_pwe', '1')
- self.hostapd.set_value('sae_groups', '20')
- self.hostapd.set_value('vendor_elements', '')
- self.hostapd.reload()
- self.hostapd.wait_for_event("AP-ENABLED")
- self.validate_connection(self.wd)
+ self.hostapd_h2e.set_value('sae_groups', '20')
+ self.hostapd_h2e.reload()
+ self.hostapd_h2e.wait_for_event("AP-ENABLED")
+ self.validate_connection(self.wd, "ssidSAE-H2E", self.hostapd_h2e, 20)
def setUp(self):
self.hostapd.default()
@@ -89,6 +87,8 @@ class Test(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.hostapd = HostapdCLI(config='ssidSAE.conf')
+ cls.hostapd_h2e = HostapdCLI(config='ssidSAE-H2E.conf')
+ cls.hostapd_defgroup = HostapdCLI(config='ssidSAE-default-group.conf')
@classmethod
def tearDownClass(cls):
diff --git a/autotests/testSAE/hw.conf b/autotests/testSAE/hw.conf
index 72b161b82..cc0836b78 100644
--- a/autotests/testSAE/hw.conf
+++ b/autotests/testSAE/hw.conf
@@ -1,7 +1,8 @@
[SETUP]
-num_radios=2
+num_radios=3
start_iwd=0
hwsim_medium=yes
[HOSTAPD]
rad0=ssidSAE.conf
+rad1=ssidSAE-H2E.conf
diff --git a/autotests/testSAE/ssidSAE.psk.default b/autotests/testSAE/profiles/ssidSAE-H2E.psk.default
index abafdb665..abafdb665 100644
--- a/autotests/testSAE/ssidSAE.psk.default
+++ b/autotests/testSAE/profiles/ssidSAE-H2E.psk.default
diff --git a/autotests/testSAE/profiles/ssidSAE.psk.default b/autotests/testSAE/profiles/ssidSAE.psk.default
new file mode 100644
index 000000000..abafdb665
--- /dev/null
+++ b/autotests/testSAE/profiles/ssidSAE.psk.default
@@ -0,0 +1,2 @@
+[Security]
+Passphrase=secret123
diff --git a/autotests/testSAE/ssidSAE.psk.identifier b/autotests/testSAE/profiles/ssidSAE.psk.identifier
index 3664063a7..3664063a7 100644
--- a/autotests/testSAE/ssidSAE.psk.identifier
+++ b/autotests/testSAE/profiles/ssidSAE.psk.identifier
diff --git a/autotests/testSAE/ssidSAE-H2E.conf b/autotests/testSAE/ssidSAE-H2E.conf
new file mode 100644
index 000000000..ea9631350
--- /dev/null
+++ b/autotests/testSAE/ssidSAE-H2E.conf
@@ -0,0 +1,12 @@
+hw_mode=g
+channel=1
+ssid=ssidSAE-H2E
+
+wpa=2
+wpa_key_mgmt=SAE
+wpa_pairwise=CCMP
+sae_password=secret123
+sae_password=withidentifier|id=myidentifier
+sae_groups=19
+ieee80211w=2
+sae_pwe=1
diff --git a/autotests/testSAE/ssidSAE.conf b/autotests/testSAE/ssidSAE.conf
index f5ce537d3..4ec254aae 100644
--- a/autotests/testSAE/ssidSAE.conf
+++ b/autotests/testSAE/ssidSAE.conf
@@ -6,7 +6,6 @@ wpa=2
wpa_key_mgmt=SAE
wpa_pairwise=CCMP
sae_password=secret123
-sae_password=withidentifier|id=myidentifier
sae_groups=19
ieee80211w=2
sae_pwe=0