veza/test_mvp_endpoints.sh

180 lines
5.8 KiB
Bash
Raw Permalink Normal View History

#!/bin/bash
# Script de test MVP - À exécuter après redémarrage du backend
set -e
echo "=== MVP ENDPOINTS TEST ==="
echo ""
# 1. Register
TIMESTAMP=$(date +%s)
echo "1. Testing Register..."
REGISTER=$(curl -s -X POST "http://localhost:8080/api/v1/auth/register" \
-H "Content-Type: application/json" \
-d "{\"email\":\"mvp${TIMESTAMP}@test.com\",\"username\":\"mvp${TIMESTAMP}\",\"password\":\"Test123!Password\",\"password_confirm\":\"Test123!Password\"}")
HTTP_CODE=$(echo "$REGISTER" | jq -r '.success // false')
TOKEN=$(echo "$REGISTER" | jq -r '.data.token.access_token // .data.access_token // .access_token // empty')
if [ "$HTTP_CODE" = "true" ] && [ -n "$TOKEN" ] && [ "$TOKEN" != "null" ] && [ "$TOKEN" != "" ]; then
echo "✅ Register: Token reçu"
ACCESS_TOKEN="$TOKEN"
else
echo "❌ Register: Échec"
echo "$REGISTER" | jq .
exit 1
fi
# 2. Login
echo ""
echo "2. Testing Login..."
LOGIN=$(curl -s -X POST "http://localhost:8080/api/v1/auth/login" \
-H "Content-Type: application/json" \
-d "{\"email\":\"mvp${TIMESTAMP}@test.com\",\"password\":\"Test123!Password\"}")
LOGIN_HTTP=$(echo "$LOGIN" | jq -r '.success // false')
LOGIN_TOKEN=$(echo "$LOGIN" | jq -r '.data.token.access_token // .data.access_token // .access_token // empty')
if [ "$LOGIN_HTTP" = "true" ] && [ -n "$LOGIN_TOKEN" ] && [ "$LOGIN_TOKEN" != "null" ]; then
echo "✅ Login: OK"
ACCESS_TOKEN="$LOGIN_TOKEN"
else
echo "❌ Login: Échec"
echo "$LOGIN" | jq .
exit 1
fi
# 3. Get Me
echo ""
echo "3. Testing Get Me..."
ME=$(curl -s -X GET "http://localhost:8080/api/v1/auth/me" \
-H "Authorization: Bearer $ACCESS_TOKEN")
ME_SUCCESS=$(echo "$ME" | jq -r '.success // false')
if [ "$ME_SUCCESS" = "true" ]; then
echo "✅ Get Me: OK"
else
echo "❌ Get Me: Échec"
echo "$ME" | jq .
exit 1
fi
# 4. Create Track (ISSUE-003)
echo ""
echo "4. Testing Create Track (ISSUE-003)..."
TRACK=$(curl -s -w "\nHTTP_CODE:%{http_code}" -X POST "http://localhost:8080/api/v1/tracks" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"MVP Test Track","genre":"Electronic","artist":"Test Artist"}')
HTTP_CODE=$(echo "$TRACK" | grep "HTTP_CODE" | cut -d: -f2)
TRACK_BODY=$(echo "$TRACK" | grep -v "HTTP_CODE")
TRACK_SUCCESS=$(echo "$TRACK_BODY" | jq -r '.success // false')
if [ "$HTTP_CODE" = "201" ] || [ "$HTTP_CODE" = "200" ]; then
if [ "$TRACK_SUCCESS" = "true" ]; then
echo "✅ Create Track: OK"
TRACK_ID=$(echo "$TRACK_BODY" | jq -r '.data.track.id // .data.id // empty')
echo " Track ID: $TRACK_ID"
else
echo "⚠️ Create Track: HTTP $HTTP_CODE mais success=false"
echo "$TRACK_BODY" | jq .
fi
else
echo "❌ Create Track: Échec (HTTP $HTTP_CODE)"
echo "$TRACK_BODY" | jq .
fi
# 5. Create Playlist (ISSUE-005)
echo ""
echo "5. Testing Create Playlist (ISSUE-005)..."
PLAYLIST=$(curl -s -w "\nHTTP_CODE:%{http_code}" -X POST "http://localhost:8080/api/v1/playlists" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"MVP Test Playlist","description":"Test","visibility":"private"}')
HTTP_CODE=$(echo "$PLAYLIST" | grep "HTTP_CODE" | cut -d: -f2)
PLAYLIST_BODY=$(echo "$PLAYLIST" | grep -v "HTTP_CODE")
PLAYLIST_SUCCESS=$(echo "$PLAYLIST_BODY" | jq -r '.success // false')
if [ "$HTTP_CODE" = "201" ] || [ "$HTTP_CODE" = "200" ]; then
if [ "$PLAYLIST_SUCCESS" = "true" ]; then
echo "✅ Create Playlist: OK"
else
echo "⚠️ Create Playlist: HTTP $HTTP_CODE mais success=false"
echo "$PLAYLIST_BODY" | jq .
fi
else
echo "❌ Create Playlist: Échec (HTTP $HTTP_CODE)"
echo "$PLAYLIST_BODY" | jq .
fi
# 6. List Playlists (ISSUE-004)
echo ""
echo "6. Testing List Playlists (ISSUE-004)..."
PLAYLISTS=$(curl -s -w "\nHTTP_CODE:%{http_code}" -X GET "http://localhost:8080/api/v1/playlists" \
-H "Authorization: Bearer $ACCESS_TOKEN")
HTTP_CODE=$(echo "$PLAYLISTS" | grep "HTTP_CODE" | cut -d: -f2)
PLAYLISTS_BODY=$(echo "$PLAYLISTS" | grep -v "HTTP_CODE")
PLAYLISTS_SUCCESS=$(echo "$PLAYLISTS_BODY" | jq -r '.success // false')
if [ "$HTTP_CODE" = "200" ]; then
if [ "$PLAYLISTS_SUCCESS" = "true" ]; then
echo "✅ List Playlists: OK"
else
echo "⚠️ List Playlists: HTTP $HTTP_CODE mais success=false"
echo "$PLAYLISTS_BODY" | jq .
fi
else
echo "❌ List Playlists: Échec (HTTP $HTTP_CODE)"
echo "$PLAYLISTS_BODY" | jq .
fi
# 7. Search Playlists (ISSUE-006)
echo ""
echo "7. Testing Search Playlists (ISSUE-006)..."
SEARCH=$(curl -s -w "\nHTTP_CODE:%{http_code}" -X GET "http://localhost:8080/api/v1/playlists/search?q=test" \
-H "Authorization: Bearer $ACCESS_TOKEN")
HTTP_CODE=$(echo "$SEARCH" | grep "HTTP_CODE" | cut -d: -f2)
SEARCH_BODY=$(echo "$SEARCH" | grep -v "HTTP_CODE")
SEARCH_SUCCESS=$(echo "$SEARCH_BODY" | jq -r '.success // false')
if [ "$HTTP_CODE" = "200" ]; then
if [ "$SEARCH_SUCCESS" = "true" ]; then
echo "✅ Search Playlists: OK"
else
echo "⚠️ Search Playlists: HTTP $HTTP_CODE mais success=false"
echo "$SEARCH_BODY" | jq .
fi
else
echo "❌ Search Playlists: Échec (HTTP $HTTP_CODE)"
echo "$SEARCH_BODY" | jq .
fi
# 8. Logout
echo ""
echo "8. Testing Logout..."
REFRESH_TOKEN=$(echo "$LOGIN" | jq -r '.data.token.refresh_token // .data.refresh_token // .refresh_token // empty')
if [ -n "$REFRESH_TOKEN" ] && [ "$REFRESH_TOKEN" != "null" ]; then
LOGOUT=$(curl -s -X POST "http://localhost:8080/api/v1/auth/logout" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"refresh_token\":\"$REFRESH_TOKEN\"}")
LOGOUT_SUCCESS=$(echo "$LOGOUT" | jq -r '.success // false')
if [ "$LOGOUT_SUCCESS" = "true" ]; then
echo "✅ Logout: OK"
else
echo "⚠️ Logout: Échec"
echo "$LOGOUT" | jq .
fi
else
echo "⏭️ Logout: Skip (pas de refresh token)"
fi
echo ""
echo "=== MVP TEST COMPLETE ==="