Files
threetwo-core-service/examples/test-graphql-endpoint.sh

88 lines
2.8 KiB
Bash
Executable File

#!/bin/bash
# Test GraphQL Endpoint Script
# This script tests the GraphQL endpoint with various queries
GRAPHQL_URL="http://localhost:3000/graphql"
echo "🧪 Testing GraphQL Endpoint: $GRAPHQL_URL"
echo "================================================"
echo ""
# Test 1: List Comics
echo "📚 Test 1: List Comics (first 5)"
echo "--------------------------------"
curl -s -X POST $GRAPHQL_URL \
-H "Content-Type: application/json" \
-d '{
"query": "query { comics(limit: 5) { comics { id rawFileDetails { name pageCount } } totalCount } }"
}' | jq '.'
echo ""
echo ""
# Test 2: Get Single Comic (you need to replace COMIC_ID)
echo "📖 Test 2: Get Single Comic"
echo "--------------------------------"
echo "⚠️ Replace COMIC_ID with an actual comic ID from your database"
read -p "Enter Comic ID (or press Enter to skip): " COMIC_ID
if [ ! -z "$COMIC_ID" ]; then
curl -s -X POST $GRAPHQL_URL \
-H "Content-Type: application/json" \
-d "{
\"query\": \"query GetComic(\$id: ID!) { comic(id: \$id) { id rawFileDetails { name filePath fileSize pageCount } sourcedMetadata { locg { name publisher rating } } } }\",
\"variables\": { \"id\": \"$COMIC_ID\" }
}" | jq '.'
else
echo "Skipped"
fi
echo ""
echo ""
# Test 3: Get User Preferences
echo "⚙️ Test 3: Get User Preferences"
echo "--------------------------------"
curl -s -X POST $GRAPHQL_URL \
-H "Content-Type: application/json" \
-d '{
"query": "query { userPreferences(userId: \"default\") { id userId conflictResolution minConfidenceThreshold autoMerge { enabled onImport onMetadataUpdate } } }"
}' | jq '.'
echo ""
echo ""
# Test 4: Search Comics
echo "🔍 Test 4: Search Comics"
echo "--------------------------------"
read -p "Enter search term (or press Enter to skip): " SEARCH_TERM
if [ ! -z "$SEARCH_TERM" ]; then
curl -s -X POST $GRAPHQL_URL \
-H "Content-Type: application/json" \
-d "{
\"query\": \"query SearchComics(\$search: String) { comics(search: \$search, limit: 10) { comics { id rawFileDetails { name } } totalCount } }\",
\"variables\": { \"search\": \"$SEARCH_TERM\" }
}" | jq '.'
else
echo "Skipped"
fi
echo ""
echo ""
# Test 5: GraphQL Introspection (get schema info)
echo "🔬 Test 5: Introspection - Available Queries"
echo "--------------------------------"
curl -s -X POST $GRAPHQL_URL \
-H "Content-Type: application/json" \
-d '{
"query": "{ __schema { queryType { fields { name description } } } }"
}' | jq '.data.__schema.queryType.fields[] | {name, description}'
echo ""
echo ""
echo "✅ GraphQL endpoint tests complete!"
echo ""
echo "💡 Tips:"
echo " - Open http://localhost:3000/graphql in your browser for GraphQL Playground"
echo " - Use 'jq' for better JSON formatting (install with: apt-get install jq)"
echo " - Check the docs at: docs/FRONTEND_GRAPHQL_INTEGRATION.md"