Files
bamort/backend/test_experience_wealth_api.sh
T
2025-07-24 07:39:43 +02:00

124 lines
4.1 KiB
Bash
Executable File

#!/bin/bash
# Test-Script für die neuen Experience/Wealth API-Endpunkte
CHARACTER_ID=15
BASE_URL="http://localhost:8180/api/characters"
LOGIN_URL="http://localhost:8180/login"
echo "=== Testing Experience and Wealth Update API ==="
echo
# Zuerst einloggen und Token holen
echo "0. Logging in to get token..."
TOKEN_RESPONSE=$(curl -s -X POST "${LOGIN_URL}" \
-H "Content-Type: application/json" \
-d '{"username": "testuser", "password": "testpass"}')
TOKEN=$(echo $TOKEN_RESPONSE | grep -o '"token":"[^"]*"' | cut -d'"' -f4)
if [ -z "$TOKEN" ]; then
echo "Login failed. Trying to run tests without authentication..."
echo "Response: $TOKEN_RESPONSE"
echo
else
echo "Login successful. Token obtained."
echo "Token: ${TOKEN:0:20}..."
echo
fi
# Auth header für alle folgenden Requests
AUTH_HEADER=""
if [ ! -z "$TOKEN" ]; then
AUTH_HEADER="-H \"Authorization: Bearer $TOKEN\""
fi
echo "=== Testing Experience and Wealth Update API ==="
echo
# Test 1: Update Experience Points with Reason
echo "1. Testing Experience Update with Reason..."
if [ ! -z "$TOKEN" ]; then
curl -X PUT "${BASE_URL}/${CHARACTER_ID}/experience" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{"experience_points": 150, "reason": "manual", "notes": "Test manual EP increase"}' \
-w "\nStatus: %{http_code}\n\n"
else
curl -X PUT "${BASE_URL}/${CHARACTER_ID}/experience" \
-H "Content-Type: application/json" \
-d '{"experience_points": 150, "reason": "manual", "notes": "Test manual EP increase"}' \
-w "\nStatus: %{http_code}\n\n"
fi
# Test 2: Update Gold with Reason
echo "2. Testing Gold Update with Reason..."
if [ ! -z "$TOKEN" ]; then
curl -X PUT "${BASE_URL}/${CHARACTER_ID}/wealth" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{"goldstücke": 250, "reason": "equipment", "notes": "Sold equipment for gold"}' \
-w "\nStatus: %{http_code}\n\n"
else
curl -X PUT "${BASE_URL}/${CHARACTER_ID}/wealth" \
-H "Content-Type: application/json" \
-d '{"goldstücke": 250, "reason": "equipment", "notes": "Sold equipment for gold"}' \
-w "\nStatus: %{http_code}\n\n"
fi
# Test 3: Simulate skill learning (EP reduction)
echo "3. Testing Skill Learning (EP reduction)..."
if [ ! -z "$TOKEN" ]; then
curl -X PUT "${BASE_URL}/${CHARACTER_ID}/experience" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{"experience_points": 100, "reason": "skill_learning", "notes": "Learned new sword fighting skill"}' \
-w "\nStatus: %{http_code}\n\n"
else
curl -X PUT "${BASE_URL}/${CHARACTER_ID}/experience" \
-H "Content-Type: application/json" \
-d '{"experience_points": 100, "reason": "skill_learning", "notes": "Learned new sword fighting skill"}' \
-w "\nStatus: %{http_code}\n\n"
fi
# Test 4: Get Audit Log
echo "4. Testing Get Audit Log..."
if [ ! -z "$TOKEN" ]; then
curl -X GET "${BASE_URL}/${CHARACTER_ID}/audit-log" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-w "\nStatus: %{http_code}\n\n"
else
curl -X GET "${BASE_URL}/${CHARACTER_ID}/audit-log" \
-H "Content-Type: application/json" \
-w "\nStatus: %{http_code}\n\n"
fi
# Test 5: Get Audit Log Stats
echo "5. Testing Get Audit Log Stats..."
if [ ! -z "$TOKEN" ]; then
curl -X GET "${BASE_URL}/${CHARACTER_ID}/audit-log/stats" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-w "\nStatus: %{http_code}\n\n"
else
curl -X GET "${BASE_URL}/${CHARACTER_ID}/audit-log/stats" \
-H "Content-Type: application/json" \
-w "\nStatus: %{http_code}\n\n"
fi
# Test 6: Get Experience-only Audit Log
echo "6. Testing Get Experience-only Audit Log..."
if [ ! -z "$TOKEN" ]; then
curl -X GET "${BASE_URL}/${CHARACTER_ID}/audit-log?field=experience_points" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-w "\nStatus: %{http_code}\n\n"
else
curl -X GET "${BASE_URL}/${CHARACTER_ID}/audit-log?field=experience_points" \
-H "Content-Type: application/json" \
-w "\nStatus: %{http_code}\n\n"
fi
echo "=== Tests completed ==="