#!/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