Moved 9 documentation .md files from root into docs/. Moved 4 test scripts from root into tests/. Updated cross-references in README.md and docs to reflect new paths. Co-authored-by: Cursor <cursoragent@cursor.com>
183 lines
6.4 KiB
Bash
Executable File
183 lines
6.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Simple Webhook Test Script for macOS
|
|
# Uses webhook.site for easy testing
|
|
|
|
set -e
|
|
|
|
# Colors
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
API_URL="${API_URL:-https://hso.cottongin.xyz/api}"
|
|
|
|
echo -e "\n${BLUE}╔════════════════════════════════════════════════════╗${NC}"
|
|
echo -e "${BLUE}║ Webhook Test Script (webhook.site) ║${NC}"
|
|
echo -e "${BLUE}╚════════════════════════════════════════════════════╝${NC}\n"
|
|
|
|
# Check if JWT_TOKEN is set
|
|
if [ -z "$JWT_TOKEN" ]; then
|
|
echo -e "${RED}❌ ERROR: JWT_TOKEN not set!${NC}\n"
|
|
echo "Please set your JWT token:"
|
|
echo " 1. Get token:"
|
|
echo " curl -X POST https://hso.cottongin.xyz/api/auth/login \\"
|
|
echo " -H \"Content-Type: application/json\" \\"
|
|
echo " -d '{\"key\":\"YOUR_ADMIN_KEY\"}'"
|
|
echo ""
|
|
echo " 2. Export the token:"
|
|
echo " export JWT_TOKEN=\"your_token_here\""
|
|
echo ""
|
|
echo " 3. Run this script:"
|
|
echo " ./test-webhook-simple.sh"
|
|
echo ""
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "${GREEN}✓${NC} JWT_TOKEN is set"
|
|
echo -e "${GREEN}✓${NC} API URL: $API_URL"
|
|
echo ""
|
|
|
|
# Get a webhook.site URL
|
|
echo -e "${BLUE}📡 Getting webhook.site URL...${NC}"
|
|
WEBHOOK_RESPONSE=$(curl -s -X POST https://webhook.site/token)
|
|
WEBHOOK_UUID=$(echo "$WEBHOOK_RESPONSE" | grep -o '"uuid":"[^"]*' | cut -d'"' -f4)
|
|
|
|
if [ -z "$WEBHOOK_UUID" ]; then
|
|
echo -e "${RED}❌ Failed to get webhook.site URL${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
WEBHOOK_URL="https://webhook.site/$WEBHOOK_UUID"
|
|
WEBHOOK_SECRET="test_secret_$(date +%s)"
|
|
|
|
echo -e "${GREEN}✓${NC} Webhook URL: $WEBHOOK_URL"
|
|
echo -e "${GREEN}✓${NC} View webhooks at: $WEBHOOK_URL"
|
|
echo -e "${GREEN}✓${NC} Secret: $WEBHOOK_SECRET"
|
|
echo ""
|
|
|
|
# Cleanup function
|
|
cleanup() {
|
|
echo ""
|
|
echo -e "${YELLOW}🧹 Cleaning up...${NC}"
|
|
|
|
if [ -n "$WEBHOOK_ID" ]; then
|
|
echo " Deleting webhook $WEBHOOK_ID..."
|
|
DELETE_RESPONSE=$(curl -s -X DELETE \
|
|
"$API_URL/webhooks/$WEBHOOK_ID" \
|
|
-H "Authorization: Bearer $JWT_TOKEN")
|
|
|
|
if echo "$DELETE_RESPONSE" | grep -q "deleted successfully"; then
|
|
echo -e " ${GREEN}✓${NC} Webhook deleted"
|
|
else
|
|
echo -e " ${YELLOW}⚠${NC} Could not delete webhook (you may need to delete it manually)"
|
|
fi
|
|
fi
|
|
|
|
echo -e " ${GREEN}✓${NC} Cleanup complete"
|
|
echo ""
|
|
echo -e "${BLUE}👋 Goodbye!${NC}\n"
|
|
exit 0
|
|
}
|
|
|
|
# Trap Ctrl+C
|
|
trap cleanup SIGINT SIGTERM
|
|
|
|
echo -e "${BLUE}═══════════════════════════════════════════════════════${NC}"
|
|
echo -e "${BLUE}Starting Webhook Tests${NC}"
|
|
echo -e "${BLUE}═══════════════════════════════════════════════════════${NC}\n"
|
|
|
|
# Test 1: Create webhook
|
|
echo -e "${YELLOW}📝 Test 1: Creating webhook...${NC}"
|
|
CREATE_RESPONSE=$(curl -s -X POST \
|
|
"$API_URL/webhooks" \
|
|
-H "Authorization: Bearer $JWT_TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{
|
|
\"name\": \"Test Webhook\",
|
|
\"url\": \"$WEBHOOK_URL\",
|
|
\"secret\": \"$WEBHOOK_SECRET\",
|
|
\"events\": [\"game.added\"]
|
|
}")
|
|
|
|
if echo "$CREATE_RESPONSE" | grep -q '"id"'; then
|
|
WEBHOOK_ID=$(echo "$CREATE_RESPONSE" | grep -o '"id":[0-9]*' | head -1 | cut -d':' -f2)
|
|
echo -e "${GREEN}✓${NC} Webhook created with ID: $WEBHOOK_ID"
|
|
else
|
|
echo -e "${RED}✗${NC} Failed to create webhook"
|
|
echo " Response: $CREATE_RESPONSE"
|
|
exit 1
|
|
fi
|
|
echo ""
|
|
|
|
# Test 2: List webhooks
|
|
echo -e "${YELLOW}📝 Test 2: Listing webhooks...${NC}"
|
|
LIST_RESPONSE=$(curl -s "$API_URL/webhooks" \
|
|
-H "Authorization: Bearer $JWT_TOKEN")
|
|
|
|
WEBHOOK_COUNT=$(echo "$LIST_RESPONSE" | grep -o '"id":' | wc -l | tr -d ' ')
|
|
echo -e "${GREEN}✓${NC} Found $WEBHOOK_COUNT webhook(s)"
|
|
echo ""
|
|
|
|
# Test 3: Send test webhook
|
|
echo -e "${YELLOW}📝 Test 3: Sending test webhook...${NC}"
|
|
TEST_RESPONSE=$(curl -s -X POST \
|
|
"$API_URL/webhooks/test/$WEBHOOK_ID" \
|
|
-H "Authorization: Bearer $JWT_TOKEN")
|
|
|
|
if echo "$TEST_RESPONSE" | grep -q "Test webhook sent"; then
|
|
echo -e "${GREEN}✓${NC} Test webhook sent"
|
|
else
|
|
echo -e "${RED}✗${NC} Failed to send test webhook"
|
|
echo " Response: $TEST_RESPONSE"
|
|
fi
|
|
echo ""
|
|
|
|
# Wait for webhook delivery
|
|
echo -e "${YELLOW}⏳ Waiting for webhook delivery (3 seconds)...${NC}"
|
|
sleep 3
|
|
echo ""
|
|
|
|
# Test 4: Check webhook logs
|
|
echo -e "${YELLOW}📝 Test 4: Checking webhook logs...${NC}"
|
|
LOGS_RESPONSE=$(curl -s "$API_URL/webhooks/$WEBHOOK_ID/logs?limit=10" \
|
|
-H "Authorization: Bearer $JWT_TOKEN")
|
|
|
|
LOG_COUNT=$(echo "$LOGS_RESPONSE" | grep -o '"id":' | wc -l | tr -d ' ')
|
|
echo -e "${GREEN}✓${NC} Found $LOG_COUNT log entries"
|
|
|
|
if [ "$LOG_COUNT" -gt 0 ]; then
|
|
echo ""
|
|
echo "Recent webhook deliveries:"
|
|
echo "$LOGS_RESPONSE" | python3 -c "import sys, json; print(json.dumps(json.load(sys.stdin), indent=2))" 2>/dev/null || echo "$LOGS_RESPONSE"
|
|
fi
|
|
echo ""
|
|
|
|
# Summary
|
|
echo -e "${BLUE}═══════════════════════════════════════════════════════${NC}"
|
|
echo -e "${BLUE}Test Summary${NC}"
|
|
echo -e "${BLUE}═══════════════════════════════════════════════════════${NC}"
|
|
echo -e "${GREEN}✓${NC} Webhook created: ID $WEBHOOK_ID"
|
|
echo -e "${GREEN}✓${NC} Test webhook sent"
|
|
echo -e "${GREEN}✓${NC} Webhook logs: $LOG_COUNT entries"
|
|
echo -e "${BLUE}═══════════════════════════════════════════════════════${NC}\n"
|
|
|
|
echo -e "${GREEN}🎉 All tests completed!${NC}"
|
|
echo ""
|
|
echo -e "${BLUE}💡 Next steps:${NC}"
|
|
echo " 1. Visit $WEBHOOK_URL to see webhook deliveries"
|
|
echo " 2. Add a game to an active session in the Picker page"
|
|
echo " 3. Refresh webhook.site to see the real webhook"
|
|
echo " 4. Press Ctrl+C to cleanup and exit"
|
|
echo ""
|
|
echo -e "${YELLOW}⏳ Press Ctrl+C when done to cleanup...${NC}"
|
|
echo ""
|
|
|
|
# Wait for Ctrl+C
|
|
while true; do
|
|
sleep 1
|
|
done
|
|
|