#!/bin/sh

set -e

# Wait for FreedomBox first-boot setup to complete and the web server to
# start listening. App setup order is not deterministic, so a fixed sleep can
# expire before the apache app configures port 443. Poll instead of guessing.
echo "Waiting for first-boot setup to complete..."

SETUP_COMPLETE=0

for _ in $(seq 1 120); do
    if curl --fail --insecure --silent --output /tmp/fbx_status.json \
            https://localhost/freedombox/status/; then

        if grep -q '"is_first_setup_running"[[:space:]]*:[[:space:]]*false' /tmp/fbx_status.json; then
            SETUP_COMPLETE=1
            break
        fi
    fi
    sleep 2
done

# Print final status in test log
cat /tmp/fbx_status.json

rm -f /tmp/fbx_status.json

if [ "$SETUP_COMPLETE" -eq 0 ]; then
    echo "Error: first-boot setup did not complete in the allotted time." >&2
    exit 1
fi

journalctl --unit=plinth --unit=freedombox-privileged

# Access FreedomBox interface
curl --location --cookie "" --fail --write-out "%{response_code}" --insecure \
     --stderr - https://localhost/freedombox/
