X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=tests%2Fcommon.sh;h=2d871083db7a31b5a9f11535c6e982c4db960544;hb=b7ce41b809a3b3533d398c0da8fd9787c149434c;hp=8a220d6c618537a785c1b87f4c16784d9f1c0f45;hpb=f30571ef2623133a3d884fe99eb65093292433ac;p=tlsproxy%2Ftlsproxy.git diff --git a/tests/common.sh b/tests/common.sh index 8a220d6..2d87108 100644 --- a/tests/common.sh +++ b/tests/common.sh @@ -19,6 +19,12 @@ set -e +# Terminate all running servers when the script terminates. +trap 'stop_servers' 0 +# Same when the user presses Ctrl-C. +trap 'abort SIGINT' INT + + cleanup() { rm -f \ tmp tlsproxy-log \ @@ -26,8 +32,12 @@ cleanup() { proxy-ca-key.pem proxy-ca.pem proxy-invalid.pem proxy-key.pem } stop_servers() { - kill $pid_server || echo 'failed to kill gnutls-serv' - kill $pid_tlsproxy || echo 'failed to kill tlsproxy' + if test -n "$pid_server"; then + kill $pid_server || echo 'failed to kill gnutls-serv' + fi + if test -n "$pid_tlsproxy"; then + kill $pid_tlsproxy || echo 'failed to kill tlsproxy' + fi } abort() { echo "abort: $*" @@ -35,12 +45,17 @@ abort() { exit 1 } tlsproxy_setup() { - "$srcdir/../src/tlsproxy-setup" >/dev/null 2>/dev/null + "$srcdir/../src/tlsproxy-setup" >/dev/null 2>&1 } tlsproxy_add() { - "$srcdir/../src/tlsproxy-add" "$1" "$srcdir/$2" >/dev/null 2>&1 + # `make distcheck` marks the source PEM-file as read-only which is copied + # over when using `cp`. This causes a check failure when tlsproxy_add() is + # called again with the same hostname. Instead use redirection which + # doesn't use `cp`. + "$srcdir/../src/tlsproxy-add" "$1" < "$srcdir/$2" >/dev/null 2>&1 } tlsproxy() { + #valgrind --leak-check=full --error-exitcode=1 --track-fds=yes \ ../src/tlsproxy -d2 "$@" >tlsproxy-log 2>&1 & pid_tlsproxy=$! } @@ -53,7 +68,7 @@ client() { } wait_for_ports() { - while :; do + for x in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do sleep 1 # Check if each given port can be reached. @@ -78,6 +93,16 @@ test_proxy_failure() { grep 'response: HTTP/1.0 503 Forwarding failure' tmp >/dev/null \ || abort 'test_proxy_failure 2' } +test_proxy_authentication_failure() { + grep 'proxy failure' tmp >/dev/null \ + || abort 'test_proxy_authentication_failure' + grep 'response: HTTP/1.0 407 Proxy Authentication Required' tmp >/dev/null \ + || abort 'test_proxy_authentication_failure 2' +} +test_authentication_missing() { + grep 'response: HTTP/1.0 407 Proxy Authentication Required' tmp >/dev/null \ + || abort 'test_authentication_missing' +} test_proxy_successful() { grep 'response: HTTP/1.0 200 Connection established' tmp >/dev/null \ || abort 'test_proxy_successful'