#!/bin/sh
set -e

make -f debian/tests/Makefile fake-rfkill
# poor man's dependency resolver
DEPS=$(modinfo debian/tests/fake-rfkill.ko | sed -n '/depends:/ {s/^.*://; s/[[:space:]]*$//; p}')
[ -z "$DEPS" ] || modprobe "$DEPS"
insmod debian/tests/fake-rfkill.ko

fake_id=$(rfkill list | grep fake | awk -F: '{ print $1; }')

service network-manager start
sleep 30

# test blocking the device
rfkill block $fake_id
if ! rfkill list $fake_id | grep 'Soft' | awk '{ print $3; }' | grep -qc yes; then
	echo "ERROR: could not block fake device"
	rmmod fake-rfkill || true
	exit 1
fi

if ! LC_MESSAGES=C nmcli radio wifi | grep -qc disabled; then
	echo "ERROR: NM could not track device state."
	rmmod fake-rfkill || true
	exit 1
fi


# test unblocking the device
rfkill unblock $fake_id
if ! rfkill list $fake_id | grep 'Soft' | awk '{ print $3; }' | grep -qc no; then
	echo "ERROR: could not unblock fake device"
	rmmod fake-rfkill || true
	exit 1
fi

if ! LC_MESSAGES=C nmcli radio wifi | grep -qc enabled; then
	echo "ERROR: NM could not track device state to enabled."
	rmmod fake-rfkill || true
	exit 1
fi

rmmod fake-rfkill
make -f debian/tests/Makefile clean-rfkill

echo OK
