#!/bin/bash
set -e
. "$(dirname "$0")/../../test/util/lib.sh"
init
if [ "${GOCOVERDIR}" != "" ]; then
GOFLAGS="-cover -covermode=count -o chasquid-util $GOFLAGS"
fi
# shellcheck disable=SC2086
go build $GOFLAGS -tags="$GOTAGS" .
function r() {
./chasquid-util -C=.config "$@"
}
function check_userdb() {
if ! r check-userdb domain > /dev/null; then
echo check-userdb failed
exit 1
fi
}
rm -rf .config/
mkdir -p .config/domains/domain/ .data/domaininfo
echo 'data_dir: ".data"' >> .config/chasquid.conf
if ! r print-config > /dev/null; then
fail print-config
fi
if ! r user-add interactive@domain --password=passwd > /dev/null; then
fail user-add
fi
# Interactive authentication.
# Need to wrap the execution under "script" since the interaction requires an
# actual TTY, and that's a fairly portable way to do that.
if hash script 2>/dev/null; then
if ! (echo passwd; echo passwd ) \
| script \
-qfec "./chasquid-util -C=.config authenticate interactive@domain" \
".script-out" \
| grep -q "Authentication succeeded";
then
fail interactive authentication
fi
fi
C=$(r print-config | grep hostname)
if ! ( echo "$C" | grep -E -q "hostname:.*\"$HOSTNAME\"" ); then
echo print-config failed
echo output: "$C"
exit 1
fi
rm -rf .keys/
mkdir .keys/
# Run all the chamuyero tests.
for i in *.cmy; do
if ! chamuyero "$i" > "$i.log" 2>&1 ; then
echo "# Test $i failed, log follows"
cat "$i.log"
exit 1
fi
done
success