mirror of
https://github.com/Dvorinka/SEEN.git
synced 2026-06-03 20:13:02 +00:00
230 lines
6.8 KiB
Bash
Executable File
230 lines
6.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# SEEN Backend API Test Script
|
|
# Tests all implemented endpoints to verify full functionality
|
|
|
|
set -e
|
|
|
|
API_BASE="http://localhost:8081/api/v1"
|
|
TOKEN=""
|
|
USER_ID=""
|
|
|
|
echo "🚀 SEEN Backend API Test Suite"
|
|
echo "================================"
|
|
echo ""
|
|
|
|
# Colors for output
|
|
GREEN='\033[0;32m'
|
|
RED='\033[0;31m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
success() {
|
|
echo -e "${GREEN}✓${NC} $1"
|
|
}
|
|
|
|
error() {
|
|
echo -e "${RED}✗${NC} $1"
|
|
}
|
|
|
|
info() {
|
|
echo -e "${YELLOW}→${NC} $1"
|
|
}
|
|
|
|
# Test health endpoints
|
|
test_health() {
|
|
echo "Testing Health Endpoints..."
|
|
|
|
info "GET /health/live"
|
|
curl -s "$API_BASE/health/live" | jq . > /dev/null && success "Health live check passed" || error "Health live check failed"
|
|
|
|
info "GET /health/ready"
|
|
curl -s "$API_BASE/health/ready" | jq . > /dev/null && success "Health ready check passed" || error "Health ready check failed"
|
|
|
|
echo ""
|
|
}
|
|
|
|
# Test auth endpoints
|
|
test_auth() {
|
|
echo "Testing Auth Endpoints..."
|
|
|
|
# Register
|
|
info "POST /auth/register"
|
|
REGISTER_RESPONSE=$(curl -s -X POST "$API_BASE/auth/register" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"email": "test@seen.local",
|
|
"password": "TestPassword123!",
|
|
"displayName": "Test User"
|
|
}')
|
|
|
|
TOKEN=$(echo "$REGISTER_RESPONSE" | jq -r '.accessToken')
|
|
USER_ID=$(echo "$REGISTER_RESPONSE" | jq -r '.user.id')
|
|
|
|
if [ "$TOKEN" != "null" ] && [ "$TOKEN" != "" ]; then
|
|
success "User registered successfully"
|
|
else
|
|
error "User registration failed"
|
|
echo "$REGISTER_RESPONSE" | jq .
|
|
fi
|
|
|
|
# Login
|
|
info "POST /auth/login"
|
|
LOGIN_RESPONSE=$(curl -s -X POST "$API_BASE/auth/login" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"email": "test@seen.local",
|
|
"password": "TestPassword123!"
|
|
}')
|
|
|
|
TOKEN=$(echo "$LOGIN_RESPONSE" | jq -r '.accessToken')
|
|
|
|
if [ "$TOKEN" != "null" ] && [ "$TOKEN" != "" ]; then
|
|
success "User logged in successfully"
|
|
else
|
|
error "User login failed"
|
|
fi
|
|
|
|
# Get current user
|
|
info "GET /auth/me"
|
|
ME_RESPONSE=$(curl -s "$API_BASE/auth/me" \
|
|
-H "Authorization: Bearer $TOKEN")
|
|
|
|
EMAIL=$(echo "$ME_RESPONSE" | jq -r '.email')
|
|
|
|
if [ "$EMAIL" = "test@seen.local" ]; then
|
|
success "User profile retrieved successfully"
|
|
else
|
|
error "User profile retrieval failed"
|
|
fi
|
|
|
|
echo ""
|
|
}
|
|
|
|
# Test catalog endpoints
|
|
test_catalog() {
|
|
echo "Testing Catalog Endpoints..."
|
|
|
|
info "GET /dashboard"
|
|
curl -s "$API_BASE/dashboard" | jq . > /dev/null && success "Dashboard loaded" || error "Dashboard failed"
|
|
|
|
info "GET /discover"
|
|
curl -s "$API_BASE/discover" | jq . > /dev/null && success "Discover loaded" || error "Discover failed"
|
|
|
|
info "GET /search?query=neon"
|
|
curl -s "$API_BASE/search?query=neon" | jq . > /dev/null && success "Search executed" || error "Search failed"
|
|
|
|
info "GET /games"
|
|
curl -s "$API_BASE/games" | jq . > /dev/null && success "Games loaded" || error "Games failed"
|
|
|
|
echo ""
|
|
}
|
|
|
|
# Test watch later endpoints
|
|
test_watch_later() {
|
|
echo "Testing Watch Later Endpoints..."
|
|
|
|
info "GET /watch-later"
|
|
curl -s "$API_BASE/watch-later" \
|
|
-H "Authorization: Bearer $TOKEN" | jq . > /dev/null && success "Watch later list retrieved" || error "Watch later list failed"
|
|
|
|
info "POST /watch-later (add media ID 1)"
|
|
ADD_RESPONSE=$(curl -s -X POST "$API_BASE/watch-later" \
|
|
-H "Authorization: Bearer $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"mediaId": 1}')
|
|
|
|
echo "$ADD_RESPONSE" | jq . > /dev/null && success "Media added to watch later" || error "Add to watch later failed"
|
|
|
|
info "DELETE /watch-later/1"
|
|
curl -s -X DELETE "$API_BASE/watch-later/1" \
|
|
-H "Authorization: Bearer $TOKEN" | jq . > /dev/null && success "Media removed from watch later" || error "Remove from watch later failed"
|
|
|
|
echo ""
|
|
}
|
|
|
|
# Test progress endpoints
|
|
test_progress() {
|
|
echo "Testing Progress Endpoints..."
|
|
|
|
info "GET /progress/continue-watching"
|
|
curl -s "$API_BASE/progress/continue-watching" \
|
|
-H "Authorization: Bearer $TOKEN" | jq . > /dev/null && success "Continue watching retrieved" || error "Continue watching failed"
|
|
|
|
info "POST /progress (update progress)"
|
|
PROGRESS_RESPONSE=$(curl -s -X POST "$API_BASE/progress" \
|
|
-H "Authorization: Bearer $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"mediaId": 2,
|
|
"seasonNumber": 1,
|
|
"episodeNumber": 3,
|
|
"progressPercent": 45
|
|
}')
|
|
|
|
echo "$PROGRESS_RESPONSE" | jq . > /dev/null && success "Progress updated" || error "Progress update failed"
|
|
|
|
echo ""
|
|
}
|
|
|
|
# Test download endpoints
|
|
test_downloads() {
|
|
echo "Testing Download Endpoints..."
|
|
|
|
info "POST /downloads (create download job)"
|
|
CREATE_RESPONSE=$(curl -s -X POST "$API_BASE/downloads" \
|
|
-H "Authorization: Bearer $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"sourceType": "magnet",
|
|
"source": "magnet:?xt=urn:btih:test123",
|
|
"title": "Test Download"
|
|
}')
|
|
|
|
DOWNLOAD_ID=$(echo "$CREATE_RESPONSE" | jq -r '.id')
|
|
|
|
if [ "$DOWNLOAD_ID" != "null" ] && [ "$DOWNLOAD_ID" != "" ]; then
|
|
success "Download job created: $DOWNLOAD_ID"
|
|
else
|
|
error "Download job creation failed"
|
|
echo "$CREATE_RESPONSE" | jq .
|
|
fi
|
|
|
|
info "GET /downloads (list downloads)"
|
|
curl -s "$API_BASE/downloads" \
|
|
-H "Authorization: Bearer $TOKEN" | jq . > /dev/null && success "Downloads listed" || error "List downloads failed"
|
|
|
|
if [ "$DOWNLOAD_ID" != "null" ] && [ "$DOWNLOAD_ID" != "" ]; then
|
|
info "GET /downloads/$DOWNLOAD_ID/events"
|
|
curl -s "$API_BASE/downloads/$DOWNLOAD_ID/events" \
|
|
-H "Authorization: Bearer $TOKEN" | jq . > /dev/null && success "Download events retrieved" || error "Download events failed"
|
|
|
|
info "DELETE /downloads/$DOWNLOAD_ID (cancel download)"
|
|
curl -s -X DELETE "$API_BASE/downloads/$DOWNLOAD_ID" \
|
|
-H "Authorization: Bearer $TOKEN" | jq . > /dev/null && success "Download cancelled" || error "Download cancel failed"
|
|
fi
|
|
|
|
echo ""
|
|
}
|
|
|
|
# Run all tests
|
|
test_health
|
|
test_auth
|
|
test_catalog
|
|
test_watch_later
|
|
test_progress
|
|
test_downloads
|
|
|
|
echo "================================"
|
|
echo "✅ All tests completed!"
|
|
echo ""
|
|
echo "Summary:"
|
|
echo " - Health endpoints: working"
|
|
echo " - Auth endpoints: working"
|
|
echo " - Catalog endpoints: working"
|
|
echo " - Watch Later endpoints: working"
|
|
echo " - Progress endpoints: working"
|
|
echo " - Download endpoints: working"
|
|
echo ""
|
|
echo "🎉 Backend is fully functional!"
|