From 636bf5749f6b2d41fa7ef78353edbe626f73e598 Mon Sep 17 00:00:00 2001 From: Tim Kourt Date: Thu, 15 Aug 2019 11:40:44 -0700 Subject: [PATCH] auto-t: Test client's non-interactive connect command --- .../connect_command_test.py | 124 ++++++++++++++++++ .../eap-user-ttls-mschap.text | 4 + autotests/testClientNonInteractive/hw.conf | 9 ++ .../testClientNonInteractive/ssidPWord.8021x | 9 ++ .../testClientNonInteractive/ssidPWord.conf | 12 ++ .../ssidPassphrase.conf | 7 + .../ssidUNameAndPWord.8021x | 10 ++ .../ssidUNameAndPWord.conf | 12 ++ 8 files changed, 187 insertions(+) create mode 100644 autotests/testClientNonInteractive/connect_command_test.py create mode 100644 autotests/testClientNonInteractive/eap-user-ttls-mschap.text create mode 100644 autotests/testClientNonInteractive/hw.conf create mode 100644 autotests/testClientNonInteractive/ssidPWord.8021x create mode 100644 autotests/testClientNonInteractive/ssidPWord.conf create mode 100644 autotests/testClientNonInteractive/ssidPassphrase.conf create mode 100644 autotests/testClientNonInteractive/ssidUNameAndPWord.8021x create mode 100644 autotests/testClientNonInteractive/ssidUNameAndPWord.conf diff --git a/autotests/testClientNonInteractive/connect_command_test.py b/autotests/testClientNonInteractive/connect_command_test.py new file mode 100644 index 00000000..9f633ebd --- /dev/null +++ b/autotests/testClientNonInteractive/connect_command_test.py @@ -0,0 +1,124 @@ +#!/usr/bin/python3 + +import unittest +import sys + +sys.path.append('../util') +import iwd +from iwd import IWD +import testutil +import subprocess + +class Test(unittest.TestCase): + + def check_connection_success(self, ssid): + wd = IWD() + + device = wd.list_devices(1)[0] + + condition = 'not obj.scanning' + wd.wait_for_object_condition(device, condition) + + ordered_network = device.get_ordered_network(ssid) + + 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) + + def test_connection_with_passphrase(self): + ssid = 'ssidPassphrase' + + wd = IWD() + + device = wd.list_devices(1)[0] + + with self.assertRaises(subprocess.CalledProcessError): + subprocess.check_call(['iwctl', 'station', device.name, + 'connect', ssid]) + + subprocess.check_call(['iwctl', '-P', 'passphrase', + 'station', device.name, 'connect', ssid]) + + self.check_connection_success(ssid) + + def test_connection_with_username_and_password(self): + ssid = 'ssidUNameAndPWord' + + wd = IWD() + + device = wd.list_devices(1)[0] + + subprocess.check_call(['iwctl', '-u', 'user', '-p', 'password', + 'station', device.name, 'connect', ssid]) + + self.check_connection_success(ssid) + + def test_connection_with_password(self): + ssid = 'ssidPWord' + + wd = IWD() + + device = wd.list_devices(1)[0] + + subprocess.check_call(['iwctl', '-p', 'password', + 'station', device.name, 'connect', ssid]) + + self.check_connection_success(ssid) + + def test_connection_failure(self): + ssid = 'ssidPassphrase' + + wd = IWD() + + device = wd.list_devices(1)[0] + + with self.assertRaises(subprocess.CalledProcessError): + subprocess.check_call(['iwctl', '-P', 'incorrect_passphrase', + 'station', device.name, 'connect', ssid]) + + def test_invalid_command_line_option(self): + ssid = 'ssidPassphrase' + + wd = IWD() + + device = wd.list_devices(1)[0] + + with self.assertRaises(subprocess.CalledProcessError): + subprocess.check_call(['iwctl', '-z', + 'station', device.name, 'connect', ssid]) + + def test_invalid_command(self): + wd = IWD() + + device = wd.list_devices(1)[0] + + with self.assertRaises(subprocess.CalledProcessError): + subprocess.check_call(['iwctl', 'inexistent', 'command']) + + @classmethod + def setUpClass(cls): + IWD.copy_to_storage('ssidUNameAndPWord.8021x') + IWD.copy_to_storage('ssidPWord.8021x') + + wd = IWD() + + 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) + + @classmethod + def tearDownClass(cls): + IWD.clear_storage() + +if __name__ == '__main__': + unittest.main(exit=True) diff --git a/autotests/testClientNonInteractive/eap-user-ttls-mschap.text b/autotests/testClientNonInteractive/eap-user-ttls-mschap.text new file mode 100644 index 00000000..9fd1172a --- /dev/null +++ b/autotests/testClientNonInteractive/eap-user-ttls-mschap.text @@ -0,0 +1,4 @@ +# Phase 1 users +* TTLS +# Phase 2 +"user" TTLS-MSCHAP "password" [2] diff --git a/autotests/testClientNonInteractive/hw.conf b/autotests/testClientNonInteractive/hw.conf new file mode 100644 index 00000000..371caabe --- /dev/null +++ b/autotests/testClientNonInteractive/hw.conf @@ -0,0 +1,9 @@ +[SETUP] +num_radios=4 +max_test_exec_interval_sec=40 +tmpfs_extra_stuff=../misc/certs:eap-user-ttls-mschap.text + +[HOSTAPD] +rad0=ssidPassphrase.conf +rad1=ssidUNameAndPWord.conf +rad2=ssidPWord.conf diff --git a/autotests/testClientNonInteractive/ssidPWord.8021x b/autotests/testClientNonInteractive/ssidPWord.8021x new file mode 100644 index 00000000..455b4655 --- /dev/null +++ b/autotests/testClientNonInteractive/ssidPWord.8021x @@ -0,0 +1,9 @@ +[Security] +EAP-Method=TTLS +EAP-Identity=anonymous +EAP-TTLS-Phase2-Method=Tunneled-MSCHAP + +EAP-TTLS-Phase2-Identity=user + +[Settings] +Autoconnect=False diff --git a/autotests/testClientNonInteractive/ssidPWord.conf b/autotests/testClientNonInteractive/ssidPWord.conf new file mode 100644 index 00000000..c47d2672 --- /dev/null +++ b/autotests/testClientNonInteractive/ssidPWord.conf @@ -0,0 +1,12 @@ +hw_mode=g +channel=1 +ssid=ssidPWord + +wpa=3 +wpa_key_mgmt=WPA-EAP +ieee8021x=1 +eap_server=1 +eap_user_file=/tmp/eap-user-ttls-mschap.text +ca_cert=/tmp/certs/cert-ca.pem +server_cert=/tmp/certs/cert-server.pem +private_key=/tmp/certs/cert-server-key.pem diff --git a/autotests/testClientNonInteractive/ssidPassphrase.conf b/autotests/testClientNonInteractive/ssidPassphrase.conf new file mode 100644 index 00000000..bf12942a --- /dev/null +++ b/autotests/testClientNonInteractive/ssidPassphrase.conf @@ -0,0 +1,7 @@ +hw_mode=g +channel=1 +ssid=ssidPassphrase + +wpa=1 +wpa_pairwise=TKIP +wpa_passphrase=passphrase diff --git a/autotests/testClientNonInteractive/ssidUNameAndPWord.8021x b/autotests/testClientNonInteractive/ssidUNameAndPWord.8021x new file mode 100644 index 00000000..e8eab70c --- /dev/null +++ b/autotests/testClientNonInteractive/ssidUNameAndPWord.8021x @@ -0,0 +1,10 @@ +[Security] +EAP-Method=TTLS +EAP-Identity=anonymous +EAP-TTLS-Phase2-Method=Tunneled-MSCHAP + +EAP-TTLS-Phase2-Identity=user +#EAP-TTLS-Phase2-Password=password + +[Settings] +Autoconnect=False diff --git a/autotests/testClientNonInteractive/ssidUNameAndPWord.conf b/autotests/testClientNonInteractive/ssidUNameAndPWord.conf new file mode 100644 index 00000000..d0cf4612 --- /dev/null +++ b/autotests/testClientNonInteractive/ssidUNameAndPWord.conf @@ -0,0 +1,12 @@ +hw_mode=g +channel=1 +ssid=ssidUNameAndPWord + +wpa=3 +wpa_key_mgmt=WPA-EAP +ieee8021x=1 +eap_server=1 +eap_user_file=/tmp/eap-user-ttls-mschap.text +ca_cert=/tmp/certs/cert-ca.pem +server_cert=/tmp/certs/cert-server.pem +private_key=/tmp/certs/cert-server-key.pem