# Functions used by all tests.
#
-# Copyright (C) 2011 Simon Ruderich
+# Copyright (C) 2011-2013 Simon Ruderich
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+set -e
+
+
+cleanup() {
+ rm -f \
+ tmp tlsproxy-log \
+ certificate-localhost-proxy.pem certificate-localhost-server.pem \
+ 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'
+}
abort() {
- echo abort
- pkill -n gnutls-serv
- pkill -n tlsproxy
+ echo "abort: $*"
+ stop_servers
exit 1
}
+tlsproxy_setup() {
+ "$srcdir/../src/tlsproxy-setup" >/dev/null 2>/dev/null
+}
+tlsproxy() {
+ ../src/tlsproxy -d2 "$@" >tlsproxy-log 2>&1 &
+ pid_tlsproxy=$!
+}
server() {
- gnutls-serv --http --port 4712 "$@" >/dev/null 2>/dev/null &
+ gnutls-serv --http --port 4712 "$@" >/dev/null 2>&1 &
+ pid_server=$!
}
client() {
./client ./proxy-ca.pem "$@" > tmp 2>&1
}
+wait_for_ports() {
+ while :; do
+ sleep 1
+
+ # Check if each given port can be reached.
+ ready=1
+ for port in "$@"; do
+ printf 'invalid request\r\n\r\n' \
+ | nc localhost "$port" >/dev/null 2>&1 \
+ || ready=
+ done
+
+ if test -n "$ready"; then
+ break
+ fi
+
+ echo "waiting for ports $* ..."
+ done
+}
+
test_proxy_failure() {
- grep 'proxy failure' tmp >/dev/null || abort
+ grep 'proxy failure' tmp >/dev/null \
+ || abort 'test_proxy_failure'
grep 'response: HTTP/1.0 503 Forwarding failure' tmp >/dev/null \
- || abort
+ || abort 'test_proxy_failure 2'
}
test_proxy_successful() {
grep 'response: HTTP/1.0 200 Connection established' tmp >/dev/null \
- || abort
+ || abort 'test_proxy_successful'
}
test_invalid_certificate() {
- grep 'certificate invalid' tmp >/dev/null || abort
+ grep 'certificate invalid' tmp >/dev/null \
+ || abort 'test_invalid_certificate'
}
test_no_invalid_certificate() {
- grep 'certificate invalid' tmp >/dev/null && abort
+ grep 'certificate invalid' tmp >/dev/null \
+ && abort 'test_no_invalid_certificate' || true
}