lars
882b9d1bb7
'EnterCurrentCryptoPassword' added to language files 'EnterAdminPassword' renamed to 'EnterCurrentAdminPassword' language file loaded immeadiately before rendering sort language links in web interface lexically reordered 'find' options to avoid warnings
132 lines
4.3 KiB
Bash
Executable file
132 lines
4.3 KiB
Bash
Executable file
#!/bin/sh
|
|
#
|
|
# do a validation
|
|
#
|
|
# use "--help" for a list of possible actions
|
|
#
|
|
|
|
set -eu
|
|
|
|
# include common functions and settings
|
|
source $(dirname $0)/common.sh.inc
|
|
|
|
##################### some functions ########################
|
|
|
|
function do_single()
|
|
# Parameter: "test case dir" "output directory for results"
|
|
{
|
|
local TESTNAME=$(basename $1)
|
|
# replace IPs and ports in the curl-file by local settings
|
|
cat "$1/input.curl" | substitute_constants | curl --insecure --silent --output "${2}/${TESTNAME}.html" --config -
|
|
# there is no status in certain cases - e.g. for error 404
|
|
if [ -e "${2}/${TESTNAME}.html" ]
|
|
then sed "1,/CBOX-STATUS-begin/d; /CBOX-STATUS-end/,\$d" "${2}/${TESTNAME}.html" >"${2}/${TESTNAME}.status"
|
|
# the diff option "-B" is required, because the status output of
|
|
# the cryptobox.pl script contains some blank lines
|
|
cat "$1/output" | substitute_constants | diff -NB - "${2}/${TESTNAME}.status" >"${2}/${TESTNAME}.diff" || true
|
|
rm "${2}/${TESTNAME}.status"
|
|
fi
|
|
cp "$1/description" "${2}/${TESTNAME}.desc"
|
|
# sleep, if a file called 'delay' exists
|
|
[ -e "$1/delay" ] && sleep "$(<$1/delay)"
|
|
true
|
|
}
|
|
|
|
|
|
function do_series()
|
|
# parameter: name of the test case
|
|
{
|
|
[ -d "$VALIDATE_REPORT_DIR/$1" ] && rm -r "$VALIDATE_REPORT_DIR/$1"
|
|
mkdir -p "$VALIDATE_REPORT_DIR/$1"
|
|
find "$VALIDATE_TEST_CASES_DIR/$1" -maxdepth 1 -mindepth 1 -type d | grep -v "/\.[^/]*$" | sort | while read a
|
|
do do_single "$a" "$VALIDATE_REPORT_DIR/$1"
|
|
done
|
|
create_summary "$1" >"$VALIDATE_REPORT_DIR/summary-$1.html"
|
|
}
|
|
|
|
|
|
function create_summary()
|
|
# parameter: name of test series
|
|
{
|
|
cat "$VALIDATE_SUMMARY_TEMPLATE_DIR/header"
|
|
find "$VALIDATE_REPORT_DIR/$1" -maxdepth 1 -type f -name \*.desc | sort | while read a
|
|
do TESTNAME=$(basename ${a%.desc})
|
|
TESTDESCRIPTION=$(cat $a)
|
|
sed "s#_TESTSERIES_#$1#g; s#_TESTNAME_#$TESTNAME#g; s/_TESTDESCRIPTION_/$TESTDESCRIPTION/" "$VALIDATE_SUMMARY_TEMPLATE_DIR/single_header"
|
|
local DIFF_FILE=${a%.desc}.diff
|
|
if [ -s "$DIFF_FILE" ]
|
|
then cat "$VALIDATE_SUMMARY_TEMPLATE_DIR/result-error"
|
|
sed 's#$#<br/>#' "$DIFF_FILE"
|
|
else cat "$VALIDATE_SUMMARY_TEMPLATE_DIR/result-ok"
|
|
echo "no differences found"
|
|
# remove empty diff
|
|
[ -e "$DIFF_FILE" ] && rm "$DIFF_FILE"
|
|
fi
|
|
cat "$VALIDATE_SUMMARY_TEMPLATE_DIR/single_footer"
|
|
# remove description file
|
|
rm "$a"
|
|
done
|
|
cat "$VALIDATE_SUMMARY_TEMPLATE_DIR/footer"
|
|
}
|
|
|
|
|
|
function import_style()
|
|
# get the stylesheet file and images
|
|
# change the stylesheet link
|
|
{
|
|
[ -d "$VALIDATE_REPORT_DIR/cryptobox-img" ] && rm -r "$VALIDATE_REPORT_DIR/cryptobox-img"
|
|
mkdir -p "$VALIDATE_REPORT_DIR/cryptobox-img"
|
|
[ -e "$VALIDATE_REPORT_DIR/cryptobox.css" ] && rm "$VALIDATE_REPORT_DIR/cryptobox.css"
|
|
wget -q -O "$VALIDATE_REPORT_DIR/cryptobox.css" http://$VALIDATE_HOST_IP_DEFAULT/cryptobox.css
|
|
# extract image file names
|
|
grep "url(cryptobox-img/" "$VALIDATE_REPORT_DIR/cryptobox.css" | sed 's#^.*url(cryptobox-img/\(.*\)).*$#\1#' | while read a
|
|
do wget -q -O "$VALIDATE_REPORT_DIR/cryptobox-img/$a" "http://$VALIDATE_HOST_IP_DEFAULT/cryptobox-img/$a"
|
|
done
|
|
|
|
# change the stylesheet link in every html file in REPORT_DIR
|
|
find "$VALIDATE_REPORT_DIR" -type f -name \*.html | while read a
|
|
do sed -i '/stylesheet/s#href=\"/cryptobox.css\"#href=\"../cryptobox.css\"#g' "$a"
|
|
done
|
|
}
|
|
|
|
|
|
function substitute_constants()
|
|
{
|
|
sed "s/_HOST_IP_DEFAULT_/$VALIDATE_HOST_IP_DEFAULT/g; s/_HOST_IP_CHANGED_/$VALIDATE_HOST_IP_CHANGED/g"
|
|
}
|
|
|
|
##################### main ###########################
|
|
|
|
ACTION="--help"
|
|
[ $# -gt 0 ] && ACTION=$1
|
|
|
|
case "$ACTION" in
|
|
list )
|
|
find "$VALIDATE_TEST_CASES_DIR" -maxdepth 1 -mindepth 1 -type d | grep -v "/\.[^/]*$" | sort | while read a
|
|
do echo $(basename "$a")
|
|
done
|
|
;;
|
|
check )
|
|
[ $# -ne 2 ] && error_die 1 "Syntax: $(basename $0) check NAME"
|
|
case_dir="$VALIDATE_TEST_CASES_DIR/$2"
|
|
[ ! -d "$case_dir" ] && error_die 2 "the test case was not found ($case_dir)!"
|
|
do_series "$2"
|
|
import_style
|
|
;;
|
|
check_all )
|
|
"$0" list | sort | while read a
|
|
do echo -n "Validating $a ..."
|
|
"$0" check "$a"
|
|
echo
|
|
done
|
|
;;
|
|
* )
|
|
echo "Syntax of $(basename $0)"
|
|
echo -e "\t list \t\t - show a list of available test cases"
|
|
echo -e "\t check NAME \t - execute a test case"
|
|
echo -e "\t check_all \t - execute all test cases"
|
|
echo -e "\t help \t\t - this syntax information"
|
|
echo
|
|
;;
|
|
esac
|