#!/bin/sh
# Test script for /bin/wifi
mydir=$(dirname "$0")
cd "$mydir"
. ../etc/wvtest.sh
PATH=$PATH:.

hostapd_running() {
  pgrep -f '^hostapd .* /tmp/hostapd.conf.wlan.*'
}

# conman isn't present on all devices.  QUIET=1 makes stop return 0 if conman
# isn't found.
QUIET=1 stop conman
# Stop returns 1 on failure and 143 on success.
WVPASSNE 1 $?

stop waveguide
WVPASSNE 1 $?


WVSTART "wifi basics"

WVPASS runnable wifi
WVPASS wifi stop -P
WVFAIL hostapd_running

WVPASS wifi restore
WVFAIL hostapd_running

rm -f /tmp/*.wlan* /tmp/*.wcli* /tmp/*.opts.2.4 /tmp/*.opts.5

WVPASS wifi set -b2.4 -e NONE
WVPASS hostapd_running

export WIFI_PSK=whatever
WVPASS wifi set -b2.4 -P
WVPASS hostapd_running


WVSTART "Save the autochannel settings and pick a good channel"
WVPASSEQ NONDFS-2.4-20 \
    "$(cat /tmp/autotype.wlan*)-$(cat /tmp/band.wlan*)-$(cat /tmp/width.wlan*)"
chan1=$(cat /tmp/autochan.wlan*)
WVPASS [ "$chan1" -gt 0 ]
WVPASS [ "$chan1" -lt 12 ]


WVSTART "hostapd doesn't restart if settings are unchanged"
pid1=$(WVPASS hostapd_running)
WVPASS wifi set -b2.4
WVPASSEQ "$pid1" "$(hostapd_running)"


WVSTART "autochannel cache"
WVPASS wifi stop -b2.4
WVPASS wifi set -b2.4
chan2=$(cat /tmp/autochan.wlan*)
WVPASSEQ "$chan1" "$chan2"

pid2=$(WVPASS hostapd_running)
WVPASSNE "$pid1" "$pid2"


WVSTART "manual channel selection"
chanfile=$(ls /tmp/autochan.wlan*)
WVPASS [ -e "$chanfile" ]
WVPASS wifi set -b2.4 -c11
WVFAIL [ -e "$chanfile" ]


WVSTART "autochannel 2.4GHz only has one choice with -w40"
WVPASS wifi set -b2.4 -w40
WVPASSEQ 1 "$(cat /tmp/autochan.wlan*)"


WVSTART "multi-radio settings"
WVPASS wifi set -b5 -P
WVPASS hostapd_running
WVPASS ls -l /config/wifi
if is-network-box; then
  # A network box has 2 radios to run at the same time
  WVPASSEQ 2 $(hostapd_running | wc -l)

  # On network box, check we can stop only one radio.
  # On other devices, this result is undefined, so don't test it.
  WVPASS wifi stop -b2.4
  WVPASS hostapd_running
else
  # Anything else has only a single radio
  WVPASSEQ 1 $(hostapd_running | wc -l)
fi
WVPASS wifi stop
WVFAIL hostapd_running
WVPASS ls -l /config/wifi


WVSTART "primary channel selection with mixed widths"
WVPASS wifi set -b5 -c40 -w80
WVPASS hostapd_running
WVPASS grep -q vht_oper_centr_freq_seg0_idx=42 /tmp/hostapd.conf.*
WVPASS wifi set -b5 -c161 -w80
WVPASS hostapd_running
WVPASS grep -q vht_oper_centr_freq_seg0_idx=155 /tmp/hostapd.conf.*
# fail on a channel with no HT40/VHT80 companion channels
WVFAIL wifi set -b5 -c165 -w80
WVFAIL wifi set -b5 -c165 -w40


WVSTART "wifi restore"
WVPASS wifi restore
WVPASS hostapd_running
if is-network-box; then
  # A network box has 2 radios to run at the same time
  WVPASSEQ 2 $(hostapd_running | wc -l)
else
  # Anything else has only a single radio
  WVPASSEQ 1 $(hostapd_running | wc -l)
fi

WVSTART "edge case SSIDs/PSKs"
pathological="a @#$\(^.-)/;?[:_%]\"{'}=|!~\`"
WIFI_PSK="$pathological" WVPASS wifi set -b5 --ssid "$pathological"
WVPASS hostapd_running
WVPASS grep -F "ssid=$pathological" /tmp/hostapd.conf.*
WVPASS grep -F "wpa_passphrase=$pathological" /tmp/hostapd.conf.*

newline_null=$(printf "foo\n\0bar78")
WIFI_PSK="$newline_null" WVPASS wifi set -b5 --ssid "$newline_null"
WVPASS hostapd_running
WVPASS grep -F "ssid=foobar78" /tmp/hostapd.conf.*
WVPASS grep -F "wpa_passphrase=foobar78" /tmp/hostapd.conf.*

WVPASS wifi set -b5 --ssid '123'
WVPASS hostapd_running
WVPASS grep -F "ssid=123" /tmp/hostapd.conf.*

WVPASS wifi set -b5 --ssid 'foo bar'
WVPASS hostapd_running
WVPASS grep -F "ssid=foo bar" /tmp/hostapd.conf.*
# b/20460495
shown_ssid=$(wifi show | grep -F "SSID: foo bar")
WVPASS [ -n "$shown_ssid" ]

unicode="נְקֻדּוֹת"
# PSKs must be ASCII or hex.
WIFI_PSK="$unicode" WVFAIL wifi set -b5 --ssid "$unicode"
WIFI_PSK="abcdefgh" WVPASS wifi set -b5 --ssid "$unicode" -P
WVPASS wifi off
WVPASS wifi restore
WVPASS hostapd_running
WVPASS grep -F "ssid=$unicode" /tmp/hostapd.conf.*


# We can't really test client mode in a unit test because there is nothing to
# connect to, so setclient should fail...
WVSTART "client mode generates a correct wpa_supplicant.conf"
export WIFI_CLIENT_PSK=passphrase
# This will fail because (hopefully) this SSID doesn't exist.
WVFAIL wifi setclient -b2.4 -s HOPEFULLY_NONEXISTENT_SSID
# ...but we can at least check that the expected config was generated.
WVPASS grep "ctrl_interface=/var/run/wpa_supplicant" /tmp/wpa_supplicant.conf.wcli0
WVPASS grep "ap_scan=1" /tmp/wpa_supplicant.conf.wcli0
WVPASS grep "ssid=\"HOPEFULLY_NONEXISTENT_SSID\"" /tmp/wpa_supplicant.conf.wcli0
WVPASS grep "psk=59f3e4d481645275c0a76886a187025362eb606c5486cec354ae262fd62b2bb1" /tmp/wpa_supplicant.conf.wcli0

WVPASS wifi stop -P
