# Hotspot 2.0 PPS MO tests
# Copyright (c) 2018, The Linux Foundation
#
# This software may be distributed under the terms of the BSD license.
# See README for more details.

import logging
logger = logging.getLogger()
import os.path
import subprocess

import hostapd
from utils import HwsimSkip
from test_ap_hs20 import hs20_ap_params, interworking_select, interworking_connect, check_sp_type
from test_ap_eap import check_eap_capa, check_domain_suffix_match

def check_hs20_osu_client():
    if not os.path.exists("../../hs20/client/hs20-osu-client"):
        raise HwsimSkip("No hs20-osu-client available")

def set_pps(pps_mo):
    res = subprocess.check_output(["../../hs20/client/hs20-osu-client",
                                   "set_pps", pps_mo]).decode()
    logger.info("set_pps result: " + res)

def test_hs20_pps_mo_1(dev, apdev):
    """Hotspot 2.0 PPS MO with username/password credential"""
    check_hs20_osu_client()
    check_eap_capa(dev[0], "MSCHAPV2")
    check_domain_suffix_match(dev[0])
    bssid = apdev[0]['bssid']
    params = hs20_ap_params()
    params['hessid'] = bssid
    params['nai_realm'] = ["0,w1.fi,13[5:6],21[2:4][5:7]",
                           "0,another.example.com"]
    params['domain_name'] = "w1.fi"
    hapd = hostapd.add_ap(apdev[0], params)

    dev[0].hs20_enable()
    set_pps("pps-mo-1.xml")
    interworking_select(dev[0], bssid, "home", freq="2412")
    interworking_connect(dev[0], bssid, "TTLS")
    check_sp_type(dev[0], "home")