#!/bin/bash

# Lance les tests unitaires de l'API
# Ce script lance un serveur scodoc sur le port 5555
# attend qu'il soit initialisé puis lance les tests client API.
#
# E. Viennet, Fev 2023

cd /opt/scodoc
# suppose que le virtual env est bien configuré

# Utilise un port spécifique pour pouvoir lancer ce test sans couper
# le serveur de dev
PORT=5555
SERVER_LOG=/tmp/test_api_server.log

export SCODOC_URL="http://localhost:${PORT}"

# ------- Check pas de serveur déjà lancé
if nc -z localhost "$PORT"
then
    fuser -v "$PORT"/tcp
    echo Server already running on port "$PORT"
    echo You may want to try: fuser -k "$PORT"/tcp
    echo aborting tests
    exit 1
fi

tests/api/start_api_server.sh -p "$PORT" &> "$SERVER_LOG" &
pid=$!
echo "ScoDoc test server logs are in $SERVER_LOG"
# Wait for server setup
echo -n "Waiting for server"
while ! nc -z localhost "$PORT"; do   
  echo -n .
  sleep 1
done
echo
echo Server PID "$pid" running on port "$PORT"
# ------------------

pytest tests/api

# ------------------
echo "Killing server"
kill "$pid"
fuser -k "$PORT"/tcp