From 97de642ae316c9ce091f72075aa4815e05ddf07a Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Sat, 1 Mar 2014 17:45:39 +0200 Subject: [PATCH] tests: HS 2.0 OSU and icon fetch Signed-off-by: Jouni Malinen --- tests/hwsim/hostapd.py | 2 +- tests/hwsim/test_ap_hs20.py | 71 ++++++++++++++++++++++++++++++++++++ tests/hwsim/w1fi_logo.png | Bin 0 -> 7549 bytes 3 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 tests/hwsim/w1fi_logo.png diff --git a/tests/hwsim/hostapd.py b/tests/hwsim/hostapd.py index d52ed0642..c6d8a746f 100644 --- a/tests/hwsim/hostapd.py +++ b/tests/hwsim/hostapd.py @@ -243,7 +243,7 @@ def add_ap(ifname, params, wait_enabled=True): fields = [ "ssid", "wpa_passphrase", "nas_identifier", "wpa_key_mgmt", "wpa", "wpa_pairwise", "rsn_pairwise", "auth_server_addr", - "acct_server_addr" ] + "acct_server_addr", "osu_server_uri" ] for field in fields: if field in params: hapd.set(field, params[field]) diff --git a/tests/hwsim/test_ap_hs20.py b/tests/hwsim/test_ap_hs20.py index 7e4ffda9f..21dad240e 100644 --- a/tests/hwsim/test_ap_hs20.py +++ b/tests/hwsim/test_ap_hs20.py @@ -8,6 +8,7 @@ import time import subprocess import logging logger = logging.getLogger() +import os import os.path import subprocess @@ -1550,3 +1551,73 @@ def test_ap_hs20_network_preference4(dev, apdev): raise Exception("No roam to higher priority network") if bssid2 not in ev: raise Exception("Unexpected network selected") + +def test_ap_hs20_fetch_osu(dev, apdev): + """Hotspot 2.0 OSU provider and icon fetch""" + bssid = apdev[0]['bssid'] + params = hs20_ap_params() + params['hs20_icon'] = "128:80:zxx:image/png:w1fi_logo:w1fi_logo.png" + params['osu_ssid'] = '"HS 2.0 OSU open"' + params['osu_method_list'] = "1" + params['osu_friendly_name'] = [ "eng:Test OSU", "fin:Testi-OSU" ] + params['osu_icon'] = "w1fi_logo" + params['osu_service_desc'] = [ "eng:Example services", "fin:Esimerkkipalveluja" ] + params['osu_server_uri'] = "https://example.com/osu/" + hostapd.add_ap(apdev[0]['ifname'], params) + + bssid2 = apdev[1]['bssid'] + params = hs20_ap_params(ssid="test-hs20b") + params['hessid'] = bssid2 + params['hs20_icon'] = "128:80:zxx:image/png:w1fi_logo:w1fi_logo.png" + params['osu_ssid'] = '"HS 2.0 OSU OSEN"' + params['osu_method_list'] = "0" + params['osu_friendly_name'] = [ "eng:Test2 OSU", "fin:Testi2-OSU" ] + params['osu_icon'] = "w1fi_logo" + params['osu_service_desc'] = [ "eng:Example services2", "fin:Esimerkkipalveluja2" ] + params['osu_server_uri'] = "https://example.org/osu/" + hostapd.add_ap(apdev[1]['ifname'], params) + + with open("w1fi_logo.png", "r") as f: + orig_logo = f.read() + dev[0].hs20_enable() + dir = "/tmp/osu-fetch" + if os.path.isdir(dir): + files = [ f for f in os.listdir(dir) if f.startswith("osu-") ] + for f in files: + os.remove(dir + "/" + f) + else: + try: + os.makedirs(dir) + except: + pass + try: + dev[0].request("SET osu_dir " + dir) + dev[0].request("FETCH_OSU") + icons = 0 + while True: + ev = dev[0].wait_event(["OSU provider fetch completed", + "RX-HS20-ANQP-ICON"], timeout=15) + if ev is None: + raise Exception("Timeout on OSU fetch") + if "OSU provider fetch completed" in ev: + break + if "RX-HS20-ANQP-ICON" in ev: + with open(ev.split(' ')[1], "r") as f: + logo = f.read() + if logo == orig_logo: + icons += 1 + + with open(dir + "/osu-providers.txt", "r") as f: + prov = f.read() + if "OSU-PROVIDER " + bssid not in prov: + raise Exception("Missing OSU_PROVIDER") + if "OSU-PROVIDER " + bssid2 not in prov: + raise Exception("Missing OSU_PROVIDER") + finally: + files = [ f for f in os.listdir(dir) if f.startswith("osu-") ] + for f in files: + os.remove(dir + "/" + f) + os.rmdir(dir) + + if icons != 2: + raise Exception("Unexpected number of icons fetched") diff --git a/tests/hwsim/w1fi_logo.png b/tests/hwsim/w1fi_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ac7c259fff2e03f50b1284083812ae1b41cbbd45 GIT binary patch literal 7549 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