#!/usr/share/ucs-test/runner bash
## desc: In-container unit tests for the ID Brokers Self-Disclosure API
## exposure: safe
## tags: [ucsschool-id-broker]
## packages: [id-broker-self-disclosure-api-plugin]
## external-junit: /tmp/id_broker_self_disclosure_in_container_unittests.xml

APP="ucsschool-apis"
PLUGIN_DIR="/var/lib/univention-appcenter/apps/ucsschool-apis/data/plugins/id-broker-self-disclosure-api"
TEST_DIR="tests/unittests"
CMD="cd $PLUGIN_DIR; python3 -m pytest -l -v --junit-xml=/tmp/junit.xml --junit-prefix=96_ucsschool-id-broker.01_in_container_unittests_self_disclosure $TEST_DIR"

if ! univention-app shell "$APP" sh -c "cd $PLUGIN_DIR; test -f requirements.txt && test requirements.txt -nt pyproject.toml" >/dev/null; then
  echo "Installing testing packages..."
  univention-app shell "$APP" python3 -m pip install -U pip wheel
  univention-app shell "$APP" python3 -m pip install poetry poetry-plugin-export
  univention-app shell "$APP" sh -c "cd $PLUGIN_DIR; poetry export -f requirements.txt --output requirements.txt --with test --without-hashes"
  univention-app shell "$APP" python3 -m pip uninstall --yes poetry poetry-plugin-export
  univention-app shell "$APP" python3 -m pip install -r $PLUGIN_DIR/requirements.txt
  # Avoid glitches in case pip just update a package
  univention-app restart "$APP"
fi

echo "Running in container of app '$APP': sh -c \"$CMD\""

univention-app shell "$APP" sh -c "$CMD"
rm -f /tmp/id_broker_self_disclosure_in_container_unittests.xml

univention-app shell "$APP" cat /tmp/junit.xml > /tmp/id_broker_self_disclosure_in_container_unittests.xml
