From 6503a1b482ae0400f237d0e1ad28594595207020 Mon Sep 17 00:00:00 2001 From: James Prestwood Date: Thu, 12 Sep 2019 09:53:37 -0700 Subject: [PATCH] auto-t: add frequency_test to testKnownNetworks This tests that the known frequency file works as expected, both for PSK and hotspot (and 8021x) networks. --- autotests/testKnownNetworks/eap_users.text | 4 + autotests/testKnownNetworks/example.conf | 11 ++ autotests/testKnownNetworks/frequency_test.py | 106 ++++++++++++++++++ autotests/testKnownNetworks/hw.conf | 7 +- autotests/testKnownNetworks/ssidCCMP-2G.conf | 7 ++ autotests/testKnownNetworks/ssidCCMP-5G.conf | 8 ++ autotests/testKnownNetworks/ssidHotspot.conf | 46 ++++++++ 7 files changed, 188 insertions(+), 1 deletion(-) create mode 100644 autotests/testKnownNetworks/eap_users.text create mode 100644 autotests/testKnownNetworks/example.conf create mode 100644 autotests/testKnownNetworks/frequency_test.py create mode 100644 autotests/testKnownNetworks/ssidCCMP-2G.conf create mode 100644 autotests/testKnownNetworks/ssidCCMP-5G.conf create mode 100644 autotests/testKnownNetworks/ssidHotspot.conf diff --git a/autotests/testKnownNetworks/eap_users.text b/autotests/testKnownNetworks/eap_users.text new file mode 100644 index 00000000..29cbecd1 --- /dev/null +++ b/autotests/testKnownNetworks/eap_users.text @@ -0,0 +1,4 @@ +# Phase 1 users +"anonymous@example.com" TTLS +# Phase 2 +"domain\user" TTLS-MSCHAPV2 "testpasswd" [2] diff --git a/autotests/testKnownNetworks/example.conf b/autotests/testKnownNetworks/example.conf new file mode 100644 index 00000000..e927411d --- /dev/null +++ b/autotests/testKnownNetworks/example.conf @@ -0,0 +1,11 @@ +[Security] +EAP-Method=TTLS +EAP-Identity=anonymous@example.com +EAP-TTLS-Phase2-Method=Tunneled-MSCHAPv2 + +[Hotspot] +NAIRealmNames=realm1.random.net,example.com +Name=NAI Hotspot + +[Settings] +Autoconnect=False diff --git a/autotests/testKnownNetworks/frequency_test.py b/autotests/testKnownNetworks/frequency_test.py new file mode 100644 index 00000000..7fc185df --- /dev/null +++ b/autotests/testKnownNetworks/frequency_test.py @@ -0,0 +1,106 @@ +#!/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 +import testutil +import os +from configparser import ConfigParser + +class Test(unittest.TestCase): + + 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) + + ordered_network = device.get_ordered_network('ssidCCMP') + + 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) + + 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) + + wd.unregister_psk_agent(psk_agent) + + psk_freqs = None + hs20_freqs = 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(' ') + elif os.path.basename(config[s]['name']) == 'example.conf': + hs20_freqs = config[s]['list'] + hs20_freqs = hs20_freqs.split(' ') + + self.assertIsNotNone(psk_freqs) + self.assertIn('5180', psk_freqs) + self.assertIn('2412', psk_freqs) + + self.assertIsNotNone(hs20_freqs) + self.assertIn('2412', hs20_freqs) + + @classmethod + def setUpClass(cls): + IWD.copy_to_hotspot('example.conf') + conf = '[General]\ndisable_anqp=0\n' + os.system('echo "%s" > /tmp/main.conf' % conf) + + @classmethod + def tearDownClass(cls): + IWD.clear_storage() + os.remove('/tmp/main.conf') + +if __name__ == '__main__': + unittest.main(exit=True) diff --git a/autotests/testKnownNetworks/hw.conf b/autotests/testKnownNetworks/hw.conf index 94811949..2165611a 100644 --- a/autotests/testKnownNetworks/hw.conf +++ b/autotests/testKnownNetworks/hw.conf @@ -1,6 +1,11 @@ [SETUP] -num_radios=2 +num_radios=5 start_iwd=0 +reg_domain=US +tmpfs_extra_stuff=../misc/certs:eap_users.text:example.conf [HOSTAPD] rad0=ssidNew.conf +rad1=ssidCCMP-2G.conf +rad2=ssidCCMP-5G.conf +rad3=ssidHotspot.conf diff --git a/autotests/testKnownNetworks/ssidCCMP-2G.conf b/autotests/testKnownNetworks/ssidCCMP-2G.conf new file mode 100644 index 00000000..074e8228 --- /dev/null +++ b/autotests/testKnownNetworks/ssidCCMP-2G.conf @@ -0,0 +1,7 @@ +hw_mode=g +channel=1 +ssid=ssidCCMP + +wpa=2 +wpa_pairwise=CCMP +wpa_passphrase=secret123 diff --git a/autotests/testKnownNetworks/ssidCCMP-5G.conf b/autotests/testKnownNetworks/ssidCCMP-5G.conf new file mode 100644 index 00000000..feb26a9d --- /dev/null +++ b/autotests/testKnownNetworks/ssidCCMP-5G.conf @@ -0,0 +1,8 @@ +hw_mode=a +channel=36 +ssid=ssidCCMP +country_code=US + +wpa=2 +wpa_pairwise=CCMP +wpa_passphrase=secret123 diff --git a/autotests/testKnownNetworks/ssidHotspot.conf b/autotests/testKnownNetworks/ssidHotspot.conf new file mode 100644 index 00000000..8f5ea7cc --- /dev/null +++ b/autotests/testKnownNetworks/ssidHotspot.conf @@ -0,0 +1,46 @@ +#ctrl_interface=/var/run/hostapd +hw_mode=g +channel=1 +wpa=2 +ssid=Hotspot +rsn_pairwise=CCMP +wpa_key_mgmt=WPA-EAP +ieee80211w=1 +ieee8021x=1 +hessid=02:00:00:00:04:00 +interworking=1 +access_network_type=14 +internet=1 +asra=0 +esr=0 +uesa=0 +osen=0 + +venue_group=7 +venue_type=1 +venue_name=P"eng:Example venue" +venue_name=fin:Esimerkkipaikka +roaming_consortium=112233 +roaming_consortium=1020304050 +roaming_consortium=010203040506 +roaming_consortium=fedcba +domain_name=example.com,another.example.com +nai_realm=1,example.com,13[5:6],21[2:4][5:7] +nai_realm=1,another.example.com +nai_realm=1,yet.another.example.com + +hs20=1 +hs20_wan_metrics=01:8000:1000:80:240:3000 +hs20_conn_capab=1:0:2 +hs20_conn_capab=6:22:1 +hs20_conn_capab=17:5060:0 +hs20_operating_class=5173 + +disable_dgaf=0 +network_auth_type=00 + +eap_server=1 +eap_user_file=/tmp/eap_users.text +ca_cert=/tmp/certs/cert-ca.pem +server_cert=/tmp/certs/cert-server.pem +private_key=/tmp/certs/cert-server-key.pem