113 lines
4.0 KiB
Bash
Executable File
113 lines
4.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Test script for Strapi webhooks
|
|
# Usage: ./test-webhooks.sh [article-id]
|
|
|
|
set -e
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo -e "${YELLOW}=== Strapi Webhook Test Script ===${NC}\n"
|
|
|
|
# Default article ID (first article from Strapi)
|
|
DEFAULT_ARTICLE_ID="r07qatlpgvx82d7337n3nz1l"
|
|
ARTICLE_ID=${1:-$DEFAULT_ARTICLE_ID}
|
|
|
|
echo "Testing with article ID: $ARTICLE_ID"
|
|
echo ""
|
|
|
|
# Test 1: Check backend is running
|
|
echo -e "${YELLOW}1. Testing backend connectivity...${NC}"
|
|
if curl -s -f "http://localhost:3000/api/v1/articles" > /dev/null; then
|
|
echo -e "${GREEN}✓ Backend is running${NC}"
|
|
else
|
|
echo -e "${RED}✗ Backend is not accessible${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Test 2: Check Strapi is running
|
|
echo -e "${YELLOW}2. Testing Strapi connectivity...${NC}"
|
|
if curl -s -f "http://localhost:1337/_health" > /dev/null 2>&1 || curl -s -f "http://localhost:1337/admin" > /dev/null; then
|
|
echo -e "${GREEN}✓ Strapi is running${NC}"
|
|
else
|
|
echo -e "${RED}✗ Strapi is not accessible${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Test 3: Send test webhook
|
|
echo -e "${YELLOW}3. Sending test webhook...${NC}"
|
|
WEBHOOK_RESPONSE=$(curl -s -w "%{http_code}" -X POST "http://localhost:3000/api/v1/webhooks/strapi/article" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{
|
|
\"event\": \"entry.publish\",
|
|
\"model\": \"article\",
|
|
\"entry\": {
|
|
\"documentId\": \"$ARTICLE_ID\"
|
|
}
|
|
}")
|
|
|
|
# Extract status code and body
|
|
HTTP_STATUS=${WEBHOOK_RESPONSE: -3}
|
|
RESPONSE_BODY=${WEBHOOK_RESPONSE%???}
|
|
|
|
if [[ "$HTTP_STATUS" =~ ^2[0-9][0-9]$ ]]; then
|
|
echo -e "${GREEN}✓ Webhook sent successfully (HTTP $HTTP_STATUS)${NC}"
|
|
echo "Response: $RESPONSE_BODY"
|
|
else
|
|
echo -e "${RED}✗ Webhook failed (HTTP $HTTP_STATUS)${NC}"
|
|
echo "Response: $RESPONSE_BODY"
|
|
exit 1
|
|
fi
|
|
|
|
# Test 4: Check if article is in backend
|
|
echo -e "${YELLOW}4. Verifying article in backend...${NC}"
|
|
sleep 2 # Give backend time to process
|
|
|
|
ARTICLE_COUNT=$(curl -s "http://localhost:3000/api/v1/articles?status=published" | jq '.total // 0')
|
|
|
|
if [ "$ARTICLE_COUNT" -gt 0 ]; then
|
|
echo -e "${GREEN}✓ Backend has $ARTICLE_COUNT published article(s)${NC}"
|
|
|
|
# List articles
|
|
echo -e "\n${YELLOW}Articles in backend:${NC}"
|
|
curl -s "http://localhost:3000/api/v1/articles?status=published" | jq -r '.data[] | "• \(.title) (ID: \(.id))"'
|
|
else
|
|
echo -e "${RED}✗ No articles found in backend${NC}"
|
|
fi
|
|
|
|
# Test 5: Check Strapi articles
|
|
echo -e "\n${YELLOW}5. Checking Strapi articles...${NC}"
|
|
STRAPI_TOKEN="578d628f62df967ff95f95bedb205b5d10bbf792340519c8c467d6473208e16b3918151a97b49fa2285a53df0ec8e340a9ca555b01a654bd22152847840e6a368ee626a6f1338ce2f23790c171013b263ec80fbaf116e2b459d3663b234d08855fd0eb631991ed15bb94f7dbb0b80f190352965c72c7fd327c73629ceff38fbb"
|
|
STRAPI_ARTICLES=$(curl -s -H "Authorization: Bearer $STRAPI_TOKEN" "http://localhost:1337/api/articles")
|
|
|
|
STRAPI_COUNT=$(echo "$STRAPI_ARTICLES" | jq '.data | length // 0')
|
|
|
|
if [ "$STRAPI_COUNT" -gt 0 ]; then
|
|
echo -e "${GREEN}✓ Strapi has $STRAPI_COUNT article(s)${NC}"
|
|
|
|
echo -e "\n${YELLOW}Articles in Strapi:${NC}"
|
|
echo "$STRAPI_ARTICLES" | jq -r '.data[] | "• \(.title) (Strapi ID: \(.documentId))"'
|
|
else
|
|
echo -e "${RED}✗ No articles found in Strapi${NC}"
|
|
fi
|
|
|
|
echo -e "\n${YELLOW}=== Summary ===${NC}"
|
|
echo "Backend articles: $ARTICLE_COUNT"
|
|
echo "Strapi articles: $STRAPI_COUNT"
|
|
|
|
if [ "$ARTICLE_COUNT" -eq "$STRAPI_COUNT" ]; then
|
|
echo -e "${GREEN}✓ Sync appears to be working correctly!${NC}"
|
|
else
|
|
echo -e "${YELLOW}⚠ Article counts don't match. Manual sync may be needed.${NC}"
|
|
echo "Run: curl -X POST http://localhost:3000/api/v1/webhooks/strapi/sync/all -H \"Authorization: Bearer YOUR_TOKEN\""
|
|
fi
|
|
|
|
echo -e "\n${YELLOW}Next steps:${NC}"
|
|
echo "1. Configure webhooks in Strapi admin: http://localhost:1337/admin"
|
|
echo "2. Test by publishing an article in Strapi"
|
|
echo "3. Check backend logs: docker logs placebo-backend-dev --tail 20"
|
|
echo "4. Visit frontend: http://localhost:5173/articles" |