2025-04-05 15:17:41 +02:00

86 lines
2.0 KiB
Bash
Executable File

#!/usr/bin/env bash
set -eu
ENV_FILE=".env"
RUN_DIR="/run/postgresql"
if [ ! -z "${CI:-}" ]; then
echo "Running in CI"
fi
if ss -tulwn | grep ":5432" -q; then
echo "Postgres running"
else
echo "Postgres not running"
if [ ! -z "${CI:-}" ]; then
# Create a temporary directory and store its name in a variable.
TEMPD=$(mktemp -d)
# Exit if the temp directory wasn't created successfully.
if [ ! -e "$TEMPD" ]; then
>&2 echo "Failed to create temp directory"
exit 1
fi
mkdir "$TEMPD"/run
ENV_FILE="$TEMPD/.env"
echo -e "DATABASE__USER=bankserver\nDATABASE__DBNAME=bankserver\nJWT_KEY=ABCDEFG" > $ENV_FILE
DB_RUNNING=1
RUN_DIR="$TEMPD"/run
podman run --name bankserver-db --rm --replace --detach -v "$RUN_DIR":/run/postgresql -e POSTGRES_USER=bankserver -e POSTGRES_HOST_AUTH_METHOD=trust postgres
sleep 5
fi
fi
function cleanup {
if [ ! -z "${APP_RUNNING:-}" ]; then
if [ ! -z "${CI:-}" ]; then
echo "Stopping app instance"
podman stop bankserver -t 2
else
pkill -P $JOB_PID
fi
fi
if [ ! -z "${DB_RUNNING:-}" ]; then
echo "Stopping database"
podman stop bankserver-db -t 2
fi
if [ ! -z "${TEMPD:-}" ]; then
rm -rf "$TEMPD"
fi
}
trap cleanup EXIT
HOST="http://[::1]:3845"
wait_for_url () {
echo "Testing $1..."
printf 'GET %s\nHTTP 308' "$1" | hurl --retry "$2";
return 0
}
echo "Starting application"
APP_RUNNING="1"
if [ ! -z "${CI:-}" ]; then
echo $RUN_DIR
ls -la $RUN_DIR
podman run --name bankserver --rm --replace --detach --env-file $ENV_FILE --network host -v "$RUN_DIR":/run/postgresql --publish 3845:3845 --pull never bankserver:latest
else
just dev &
JOB_PID=$!
fi
echo "Waiting for app instance to be ready"
wait_for_url "$HOST" 20
echo "Creating dummy users"
hurl --variable host="$HOST" --error-format long tests/dummy-users.hurl
echo "Running tests"
hurl --variable host="$HOST" --test --error-format long --color --report-html tests/report tests/integration/*.hurl || true