#!/bin/bash
set -u
API="http://127.0.0.1:8090"
TS=$(date +%s)
EMAIL="hubtest_${TS}@bugforge.de"; PASS="Test1234!"
j() { python3 -c "import sys,json;d=json.load(sys.stdin);print(d.get('$1',''))" 2>/dev/null; }

curl -s -X POST "$API/auth/register" -H "Content-Type: application/json" -d "{\"email\":\"$EMAIL\",\"password\":\"$PASS\"}" -o /dev/null
TOKEN=$(curl -s -X POST "$API/auth/login" -H "Content-Type: application/json" -d "{\"email\":\"$EMAIL\",\"password\":\"$PASS\"}" | j access_token)
CHARID=$(curl -s -X POST "$API/characters" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -d "{\"name\":\"HubHeld\",\"class_index\":1,\"spec_index\":2}" | j id)
echo "Token ok, Charakter=$CHARID"

echo "== Welt betreten (ensure_hub) =="
W=$(curl -s -X POST "$API/world/enter" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -d "{\"character_id\":$CHARID}")
echo "  $W"

echo "== Hub-Container =="
docker ps --filter "name=projectcat-hub" --format "  {{.Names}}  {{.Status}}  {{.Ports}}"

echo "== list_lobbies darf den Hub NICHT enthalten =="
curl -s "$API/lobbies" -H "Authorization: Bearer $TOKEN"; echo

echo "== 2. Welt betreten liefert denselben Hub (kein 2. Container) =="
W2=$(curl -s -X POST "$API/world/enter" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -d "{\"character_id\":$CHARID}")
echo "  $W2"
echo "  Hub-Container-Anzahl: $(docker ps -q --filter "name=projectcat-hub" | wc -l)"

echo "== 20s warten, Hub-Boot-Log =="
sleep 20
docker logs projectcat-hub 2>&1 | tail -6 | sed 's/^/  /'
echo "== restart-policy =="
docker inspect -f '  RestartPolicy={{.HostConfig.RestartPolicy.Name}}' projectcat-hub 2>/dev/null
echo "== fertig =="
