icwmp/test/script/verify_custom_notifications.sh
2023-04-20 13:44:04 +05:30

162 lines
5.2 KiB
Bash
Executable file

#!/bin/bash
source ./test/script/common.sh
source ./gitlab-ci/shared.sh
TEST_NAME="Custom Notifications"
echo "Running: $TEST_NAME"
echo "Install notification json files"
exec_cmd mkdir -p /etc/icwmpd
exec_cmd cp test/files/etc/icwmpd/custom_notification* /etc/icwmpd
#
# Test a valid custom notification json file
#
rm /var/log/icwmpd.log
uci -c /etc/icwmpd delete cwmp_notifications.@notifications[0]
uci -c /etc/icwmpd commit cwmp_notifications
exec_cmd uci set cwmp.cpe.custom_notify_json="/etc/icwmpd/custom_notification_valid.json"
uci commit cwmp
supervisorctl start icwmpd
sleep 5
check_cwmp_status
supervisorctl stop icwmpd
sleep 5
check_valgrind_xml
notif1=`uci -c /etc/icwmpd get cwmp_notifications.@notifications[0].active | grep "Device.Users."`
if [[ $notif1 != *"Device.Users."* ]]; then
echo "FAIL: active notifications list doesn't contain Device.Users. parameter"
exit 1
fi
notif2=`uci -c /etc/icwmpd get cwmp_notifications.@notifications[0].passive | grep "Device.WiFi.SSID.1.SSID"`
if [[ $notif2 != *"Device.WiFi.SSID.1.SSID"* ]]; then
echo "FAIL: active notifications list doesn't contain Device.WiFi.SSID.1.SSID parameter"
exit 1
fi
rm /etc/icwmpd/icwmpd_notify
echo "PASS test valid custom notification json file"
#
# Test custom notification invalid json file
#
rm /var/log/icwmpd.log
uci -c /etc/icwmpd delete cwmp_notifications.@notifications[0]
uci -c /etc/icwmpd commit cwmp_notifications
exec_cmd uci set cwmp.cpe.custom_notify_json="/etc/icwmpd/custom_notification_invalid_json.json"
uci commit cwmp
supervisorctl start icwmpd
sleep 2
check_cwmp_status
supervisorctl stop icwmpd
check_valgrind_xml
notif1=`uci -c /etc/icwmpd get cwmp_notifications.@notifications[0].active | grep "Device.Users."`
if [[ $notif1 == *"Device.Users."* ]]; then
echo "FAIL: the json file is invalid, the active notifcation list shouldn't contain Device.Users. parameter"
exit 1
fi
notif2=`uci -c /etc/icwmpd get cwmp_notifications.@notifications[0].passive | grep "Device.WiFi.SSID.1.SSID"`
if [[ $notif2 == *"Device.WiFi.SSID.1.SSID"* ]]; then
echo "FAIL: the json file is invalid, the active notifcation list shouldn't contain Device.WiFi.SSID.1.SSID parameter"
exit 1
fi
logfile=`cat /var/log/icwmpd.log`
if [[ $logfile != *"[WARNING] The file /etc/icwmpd/custom_notification_invalid_json.json is not a valid JSON file"* ]]; then
echo "FAIL: Log file doesn't contain a WARNING that the file /etc/icwmpd/custom_notification_invalid_json.json is not valid."
exit 1
fi
echo "PASS test custom notification invalid json file"
rm /etc/icwmpd/icwmpd_notify
#
# Test custom notification json file containing forced active notification
#
rm /var/log/icwmpd.log
uci -c /etc/icwmpd delete cwmp_notifications.@notifications[0]
uci -c /etc/icwmpd commit cwmp_notifications
exec_cmd uci set cwmp.cpe.custom_notify_json="/etc/icwmpd/custom_notification_forced.json"
uci commit cwmp
supervisorctl start icwmpd
check_cwmp_status
sleep 2
supervisorctl stop icwmpd
check_valgrind_xml
notif1=`uci -c /etc/icwmpd get cwmp_notifications.@notifications[0].active | grep "Device.Users."`
if [[ $notif1 != *"Device.Users."* ]]; then
echo "FAIL: active notifications list doesn't contain Device.Users. parameter"
exit 1
fi
notif2=`uci -c /etc/icwmpd get cwmp_notifications.@notifications[0].passive | grep "Device.DeviceInfo.ProvisioningCode"`
if [[ $notif2 == *"Device.DeviceInfo.ProvisioningCode"* ]]; then
echo "FAIL: passive notifications list contains Device.DeviceInfo.ProvisioningCode while it's a forced active notification paramter"
exit 1
fi
logfile=`cat /var/log/icwmpd.log`
if [[ $logfile != *"[WARNING] This parameter Device.DeviceInfo.ProvisioningCode is forced notification parameter, can't be changed"* ]]; then
echo "FAIL: Device.DeviceInfo.ProvisioningCode is forced notification parameter, can't be changed"
exit 1
fi
echo "PASS test custom notification json file containing forced active notification"
rm /etc/icwmpd/icwmpd_notify
#
# Test custom notification json file containing invalid parameter path
#
rm /var/log/icwmpd.log
uci -c /etc/icwmpd delete cwmp_notifications.@notifications[0]
uci -c /etc/icwmpd commit cwmp_notifications
exec_cmd uci set cwmp.cpe.custom_notify_json="/etc/icwmpd/custom_notification_invalid_parameter.json"
uci commit cwmp
supervisorctl start icwmpd
check_cwmp_status
sleep 2
supervisorctl stop icwmpd
check_valgrind_xml
notif1=`uci -c /etc/icwmpd get cwmp_notifications.@notifications[0].active | grep "Device.Users."`
if [[ $notif1 != *"Device.Users."* ]]; then
echo "FAIL: active notifications list doesn't contain Device.Users. parameter"
exit 1
fi
notif2=`uci -c /etc/icwmpd get cwmp_notifications.@notifications[0].passive | grep "Device.WiFi.SSID.1.SD"`
if [[ $notif2 == *"Device.WiFi.SSID.1.SD"* ]]; then
echo "FAIL: passive notifications list contains Device.WiFi.SSID.1.SD while it's a wrong parameter path"
exit 1
fi
logfile=`cat /var/log/icwmpd.log`
if [[ $logfile != *"[WARNING] The parameter Device.WiFi.SSID.1.SD is wrong path"* ]]; then
echo "FAIL: Log file should contain WARNING that Device.WiFi.SSID.1.SD is wrong parameter path."
exit 1
fi
echo "PASS test custom notification json file containing invalid parameter path"
rm /etc/icwmpd/icwmpd_notify
echo "PASS: $TEST_NAME"