Trainer_LLM/llm-api/test_llm_api_full.sh

91 lines
2.5 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# 1) Basis-URL Deines FastAPI-Servers
export BASE_URL="http://localhost:8000"
# 2) MediaWiki-Zugangsdaten
export WIKI_API_URL="https://karatetrainer.net/api.php"
export WIKI_BOT_USER="LarsS@APIBot"
export WIKI_BOT_PASSWORD="6snci781sh79tbmvb2u9ld4bkd1i7n5t"
echo -e "\n?? Starte Health-Check für MediaWiki…"
HTTP=$(curl -s -o /dev/null -w '%{http_code}' "${BASE_URL}/import/wiki/health")
if [[ "$HTTP" != "200" ]]; then
echo "? Health-Check fehlgeschlagen (HTTP $HTTP)"
exit 1
fi
echo "? MediaWiki-Health OK (200)"
echo -e "\n?? Teste MediaWiki-Login…"
LOGIN_RESP=$(curl -s -X POST "${BASE_URL}/import/wiki/login" \
-H "Content-Type: application/json" \
-d "{\"username\":\"${WIKI_BOT_USER}\",\"password\":\"${WIKI_BOT_PASSWORD}\"}" )
echo "? Login-Response: $LOGIN_RESP"
# Optional: prüfen, ob "success" enthalten ist
if [[ "$LOGIN_RESP" != *"success"* ]]; then
echo "? MediaWiki-Login fehlgeschlagen"
exit 1
fi
echo "? MediaWiki-Login erfolgreich"
echo -e "\n?? Testet bestehenden /exercise-Endpoint…"
# Collection exercises aufräumen
curl -s -X DELETE "${BASE_URL}/delete-collection?collection=exercises" || true >/dev/null
# Erzeugen
CREATE=$(curl -s -X POST "${BASE_URL}/exercise" \
-H 'Content-Type: application/json' \
-d '{
"title":"TestÜbung",
"summary":"Zusammenfassung",
"short_description":"Kurz",
"discipline":"Test",
"age_group":"Erwachsene",
"target_group":"Tester",
"min_participants":1,
"duration_minutes":5,
"category":"test",
"purpose":"Demo",
"execution":"Ausführen",
"notes":"",
"preparation":"",
"method":"",
"equipment":[]
}')
echo "? Create Übung: $CREATE"
if [[ "$CREATE" != *"TestÜbung"* ]]; then
echo "? Übung wurde nicht angelegt"
exit 1
fi
echo "? /exercise POST OK"
# Auflisten
LIST=$(curl -s "${BASE_URL}/exercise?discipline=Test")
if [[ "$LIST" != *"TestÜbung"* ]]; then
echo "? /exercise GET liefert nicht die TestÜbung"
exit 1
fi
echo "? /exercise GET OK"
echo -e "\n?? Testet Embed/Search…"
# Einen Chunk einbetten
curl -s -X POST "${BASE_URL}/embed" \
-H 'Content-Type: application/json' \
-d '{
"chunks": [
{"text":"Hallo Welt","source":"test","source_type":"txt","title":"T","version":"1","related_to":"","tags":[],"owner":""}
],
"collection":"default"
}' >/dev/null
# Suche
SEARCH=$(curl -s "${BASE_URL}/search?query=Hallo")
if [[ "$SEARCH" != *"Hallo Welt"* ]]; then
echo "? /search liefert unerwartetes Ergebnis"
exit 1
fi
echo "? /search OK"
echo -e "\n?? Alle Tests erfolgreich abgeschlossen!"