- Changed CreateSessionOptions.activePlayers from number[] to string[] - Updated socket-server.ts fallback from [1] to [data.userId] - Added debug logging to validateFlipCard to diagnose turn validation issues This ensures that when a session is created without explicit activePlayers, it uses the actual UUID of the requesting player instead of the numeric value 1.
58 lines
1.8 KiB
Bash
Executable File
58 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
echo "=== Arcade Session API Test ==="
|
|
echo ""
|
|
|
|
# Get viewer ID
|
|
echo "1. Getting viewer ID..."
|
|
VIEWER_ID=$(curl -s http://localhost:3000/api/viewer | jq -r '.viewerId')
|
|
echo " Viewer ID: $VIEWER_ID"
|
|
echo ""
|
|
|
|
# Create user if doesn't exist
|
|
echo "2. Creating user in database..."
|
|
sqlite3 data/sqlite.db "INSERT OR IGNORE INTO users (id, guest_id, created_at) VALUES ('$VIEWER_ID', '$VIEWER_ID', datetime('now'));"
|
|
echo " User created/exists"
|
|
echo ""
|
|
|
|
# Create arcade session for matching
|
|
echo "3. Creating arcade session for matching game..."
|
|
curl -s -X POST http://localhost:3000/api/arcade-session \
|
|
-H 'Content-Type: application/json' \
|
|
-d "{
|
|
\"userId\": \"$VIEWER_ID\",
|
|
\"gameName\": \"matching\",
|
|
\"gameUrl\": \"/arcade/matching\",
|
|
\"initialState\": {
|
|
\"gamePhase\": \"playing\",
|
|
\"cards\": [],
|
|
\"gameCards\": [],
|
|
\"flippedCards\": [],
|
|
\"matchedPairs\": 0,
|
|
\"totalPairs\": 6
|
|
},
|
|
\"activePlayers\": [1]
|
|
}" | jq '.'
|
|
echo ""
|
|
|
|
# Get session
|
|
echo "4. Getting active session..."
|
|
curl -s "http://localhost:3000/api/arcade-session?userId=$VIEWER_ID" | jq '.'
|
|
echo ""
|
|
|
|
echo "=== What should happen now ==="
|
|
echo "1. Open http://localhost:3000/arcade/matching in your browser"
|
|
echo "2. The guard should NOT redirect (you're already on the active game)"
|
|
echo "3. Open http://localhost:3000/arcade/memory-quiz in a NEW TAB"
|
|
echo "4. The guard SHOULD redirect you back to /arcade/matching"
|
|
echo ""
|
|
|
|
echo "=== Current Issue ==="
|
|
echo "The guard is implemented but NOT integrated with the game."
|
|
echo "The game doesn't create sessions when it starts."
|
|
echo "You need to manually create the session (as shown above) to test the guard."
|
|
echo ""
|
|
|
|
echo "To clean up:"
|
|
echo " curl -X DELETE \"http://localhost:3000/api/arcade-session?userId=$VIEWER_ID\""
|