From 0dc0780e28a58ed220702a6eaed9b2f5db6a17d8 Mon Sep 17 00:00:00 2001 From: William Wernert Date: Tue, 12 Jan 2021 11:02:00 -0500 Subject: [PATCH] [feat] Add unit tests for input validation --- tests/validation.sh | 187 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 tests/validation.sh diff --git a/tests/validation.sh b/tests/validation.sh new file mode 100644 index 000000000..04cdaa7c7 --- /dev/null +++ b/tests/validation.sh @@ -0,0 +1,187 @@ +#!/bin/bash + +. ../salt/common/tools/sbin/so-common + +script_ret=0 + +GREEN="\e[1;32m" +RED="\e[1;31m" +RESET="\e[0m" + +test_fun() { + local expected_result=$1 + shift + + local fun=$1 + shift + + $fun "$@" + local ret=$? + [[ $ret -eq 0 ]] && res="O" || res="X" + + [[ $ret -ne $expected_result ]] && script_ret=1 + + local prefix=$1 + [[ -n $2 ]] && prefix="$prefix, min=$2" + [[ -n $3 ]] && prefix="$prefix, max=$3" + + [[ $prefix == "" ]] && prefix="[EMPTY]" + + [[ $ret -eq $expected_result ]] \ + && printf "${GREEN}%b${RESET}" " $res" \ + || printf "${RED}%b${RESET}" " $res" + + printf "%s\n" " - $prefix" +} + +header "FQDN" + +test_fun 0 valid_fqdn "rwwiv.com" + +test_fun 0 valid_fqdn "ddns.rwwiv.com" + +test_fun 1 valid_fqdn ".com" + +test_fun 1 valid_fqdn "rwwiv." + +test_fun 1 valid_fqdn "" + +sleep 0.15s + +header "ip4" + +test_fun 0 valid_ip4 "192.168.1.1" + +test_fun 0 valid_ip4 "192.168.1.255" + +test_fun 1 valid_ip4 "192.168.1.256" + +test_fun 1 valid_ip4 "192.168..1" + +test_fun 1 valid_ip4 "192.168.1.1." + +test_fun 1 valid_ip4 "" + +sleep 0.15s + +header "CIDR (ipv4)" + +test_fun 0 valid_cidr "192.168.1.0/24" + +test_fun 0 valid_cidr "192.168.1.0/12" + +test_fun 1 valid_cidr "192.168.1.0" + +test_fun 1 valid_ip4 "192.168.1.0/" + +test_fun 1 valid_ip4 "/24" + +test_fun 1 valid_cidr "" + +sleep 0.15s + +header "CIDR list" + +test_fun 0 valid_cidr_list "10.0.0.0/8,192.168.0.0/16,172.16.0.0/12" + +test_fun 0 valid_cidr_list "10.0.0.0/8" + +test_fun 1 valid_cidr_list "10.0.0.0/8,192.168.0.0/16172.16.0.0/12" + +test_fun 1 valid_cidr_list "10.0.0.0" + +sleep 0.15s + +header "DNS" + +test_fun 0 valid_dns_list "8.8.8.8 8.8.4.4" + +test_fun 0 valid_dns_list "8.8.8.8" + +test_fun 1 valid_dns_list "8.8.8.8,8.8.4.4" + +test_fun 1 valid_dns_list "8.8.8. 8.8.4.4" + +test_fun 1 valid_dns_list "192.168.9." + +sleep 0.15s + +header "int (default min: 1, default max: 1000)" + +test_fun 0 valid_int "24" + +test_fun 0 valid_int "1" + +test_fun 0 valid_int "2" "2" + +test_fun 0 valid_int "1000" + +test_fun 1 valid_int "10001" + +test_fun 1 valid_int "24" "" "20" + +test_fun 1 valid_int "-1" + +test_fun 1 valid_int "1" "2" + +test_fun 1 valid_int "257" "" "256" + +test_fun 1 valid_int "not_a_num" + +test_fun 1 valid_int "" + +sleep 0.15s + +header "hostname" + +test_fun 0 valid_hostname "so-sensor01" + +test_fun 0 valid_hostname "so" + +test_fun 1 valid_hostname "so_sensor01" + +test_fun 1 valid_hostname "so.sensor01" + +test_fun 1 valid_hostname "localhost" + +test_fun 1 valid_hostname "" + +sleep 0.15s + +header "string (default min_length: 1, default max_length: 64)" + +test_fun 0 valid_string "string" + +test_fun 0 valid_string "s" + +test_fun 0 valid_string "very_long_string_64_sdhkjashasdfkajjagskfjhgkslfkjhlaskfhlaskjhf" + +test_fun 0 valid_string "12" + +test_fun 1 valid_string "string with spaces" + +test_fun 1 valid_string "very_long_string_<64_sdhflkjashasdfkajshfgkjsahgfkjagskfjhgkslfkjhlaskfhlaskjhf" + +test_fun 1 valid_string "too_short" "12" + +test_fun 1 valid_string "too_long" "" "4" + +test_fun 1 valid_string "" + +sleep 0.15s + +header "Linux user" + +test_fun 0 valid_username "so_user_01" + +test_fun 0 valid_username "onionuser" + +test_fun 1 valid_username "12fa" + +test_fun 1 valid_username "so.user.01" + +test_fun 1 valid_username "very_long_username_asdflashfsafasdfasdfkahsgkjahfdkjhsg" + +echo + +exit $script_ret