re-uploading work
This commit is contained in:
155
scripts/test-webhook-event-processing.sh
Executable file
155
scripts/test-webhook-event-processing.sh
Executable file
@@ -0,0 +1,155 @@
|
||||
#!/bin/bash
|
||||
# Test script to verify webhook events properly trigger rule processing
|
||||
# This script demonstrates that webhook events now correctly publish EventCreated messages
|
||||
|
||||
set -e
|
||||
|
||||
API_URL="${API_URL:-http://localhost:8080}"
|
||||
WEBHOOK_TRIGGER="${WEBHOOK_TRIGGER:-default.example}"
|
||||
|
||||
echo "=================================================="
|
||||
echo "Webhook Event Processing Test"
|
||||
echo "=================================================="
|
||||
echo ""
|
||||
echo "This script tests that webhook events properly trigger rule processing"
|
||||
echo "by verifying the EventCreated message is published to the message queue."
|
||||
echo ""
|
||||
|
||||
# Step 1: Check if the trigger exists
|
||||
echo "Step 1: Checking if trigger '${WEBHOOK_TRIGGER}' exists..."
|
||||
TRIGGER_CHECK=$(curl -s -w "\n%{http_code}" "${API_URL}/api/v1/triggers/${WEBHOOK_TRIGGER}")
|
||||
HTTP_CODE=$(echo "$TRIGGER_CHECK" | tail -n1)
|
||||
TRIGGER_DATA=$(echo "$TRIGGER_CHECK" | head -n-1)
|
||||
|
||||
if [ "$HTTP_CODE" != "200" ]; then
|
||||
echo "❌ Trigger '${WEBHOOK_TRIGGER}' not found (HTTP ${HTTP_CODE})"
|
||||
echo " Please create the trigger first or set WEBHOOK_TRIGGER environment variable"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ Trigger '${WEBHOOK_TRIGGER}' exists"
|
||||
echo ""
|
||||
|
||||
# Step 2: Check if there are any rules for this trigger
|
||||
echo "Step 2: Checking for rules that subscribe to '${WEBHOOK_TRIGGER}'..."
|
||||
RULES_CHECK=$(curl -s "${API_URL}/api/v1/rules")
|
||||
MATCHING_RULES=$(echo "$RULES_CHECK" | jq -r ".data[] | select(.trigger_ref == \"${WEBHOOK_TRIGGER}\") | .ref")
|
||||
|
||||
if [ -z "$MATCHING_RULES" ]; then
|
||||
echo "⚠️ No rules found for trigger '${WEBHOOK_TRIGGER}'"
|
||||
echo " Events will be created but no enforcements will be generated"
|
||||
else
|
||||
echo "✅ Found rules for trigger '${WEBHOOK_TRIGGER}':"
|
||||
echo "$MATCHING_RULES" | while read -r rule; do
|
||||
echo " - $rule"
|
||||
done
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Step 3: Send a webhook
|
||||
echo "Step 3: Sending webhook to trigger '${WEBHOOK_TRIGGER}'..."
|
||||
WEBHOOK_PAYLOAD='{"test": "data", "timestamp": "'$(date -u +"%Y-%m-%dT%H:%M:%SZ")'"}'
|
||||
|
||||
WEBHOOK_RESPONSE=$(curl -s -w "\n%{http_code}" \
|
||||
-X POST \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$WEBHOOK_PAYLOAD" \
|
||||
"${API_URL}/api/v1/webhooks/${WEBHOOK_TRIGGER}")
|
||||
|
||||
HTTP_CODE=$(echo "$WEBHOOK_RESPONSE" | tail -n1)
|
||||
RESPONSE_DATA=$(echo "$WEBHOOK_RESPONSE" | head -n-1)
|
||||
|
||||
if [ "$HTTP_CODE" != "200" ]; then
|
||||
echo "❌ Webhook submission failed (HTTP ${HTTP_CODE})"
|
||||
echo "$RESPONSE_DATA" | jq '.' 2>/dev/null || echo "$RESPONSE_DATA"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
EVENT_ID=$(echo "$RESPONSE_DATA" | jq -r '.data.event_id')
|
||||
echo "✅ Webhook received successfully"
|
||||
echo " Event ID: ${EVENT_ID}"
|
||||
echo ""
|
||||
|
||||
# Step 4: Check the event was created
|
||||
echo "Step 4: Verifying event was created in database..."
|
||||
sleep 1
|
||||
EVENT_CHECK=$(curl -s "${API_URL}/api/v1/events/${EVENT_ID}")
|
||||
EVENT_TRIGGER=$(echo "$EVENT_CHECK" | jq -r '.data.trigger_ref')
|
||||
EVENT_RULE=$(echo "$EVENT_CHECK" | jq -r '.data.rule')
|
||||
|
||||
echo "✅ Event ${EVENT_ID} exists"
|
||||
echo " Trigger: ${EVENT_TRIGGER}"
|
||||
echo " Associated Rule: ${EVENT_RULE}"
|
||||
echo ""
|
||||
|
||||
# Step 5: Check API logs for EventCreated message publishing
|
||||
echo "Step 5: Checking API logs for EventCreated message..."
|
||||
echo " (Looking for 'Published EventCreated message for event ${EVENT_ID}')"
|
||||
echo ""
|
||||
|
||||
if command -v docker &> /dev/null; then
|
||||
# Check if running in Docker
|
||||
if docker compose ps api &> /dev/null; then
|
||||
echo " Docker logs from API service:"
|
||||
docker compose logs api --tail=50 | grep -i "event ${EVENT_ID}" || echo " No logs found (service may not be running in Docker)"
|
||||
else
|
||||
echo " ⚠️ Docker Compose not running, skipping log check"
|
||||
fi
|
||||
else
|
||||
echo " ⚠️ Docker not available, skipping log check"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Step 6: Check for enforcements
|
||||
echo "Step 6: Checking if enforcements were created..."
|
||||
sleep 2
|
||||
ENFORCEMENTS_CHECK=$(curl -s "${API_URL}/api/v1/events/${EVENT_ID}/enforcements" 2>/dev/null || echo '{"data": []}')
|
||||
ENFORCEMENT_COUNT=$(echo "$ENFORCEMENTS_CHECK" | jq -r '.data | length')
|
||||
|
||||
if [ "$ENFORCEMENT_COUNT" -gt 0 ]; then
|
||||
echo "✅ ${ENFORCEMENT_COUNT} enforcement(s) created for event ${EVENT_ID}"
|
||||
echo "$ENFORCEMENTS_CHECK" | jq -r '.data[] | " - Enforcement \(.id): \(.rule_ref) (\(.status))"'
|
||||
else
|
||||
if [ -z "$MATCHING_RULES" ]; then
|
||||
echo "ℹ️ No enforcements created (expected - no rules for this trigger)"
|
||||
else
|
||||
echo "⚠️ No enforcements found (unexpected - rules exist for this trigger)"
|
||||
echo " This may indicate the EventCreated message was not published or processed"
|
||||
fi
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Step 7: Check for executions
|
||||
echo "Step 7: Checking if executions were created..."
|
||||
if [ "$ENFORCEMENT_COUNT" -gt 0 ]; then
|
||||
EXECUTIONS_CHECK=$(curl -s "${API_URL}/api/v1/executions?limit=10")
|
||||
EVENT_EXECUTIONS=$(echo "$EXECUTIONS_CHECK" | jq -r ".data[] | select(.event == ${EVENT_ID})")
|
||||
|
||||
if [ -n "$EVENT_EXECUTIONS" ]; then
|
||||
echo "✅ Executions created for event ${EVENT_ID}:"
|
||||
echo "$EVENT_EXECUTIONS" | jq -r '" - Execution \(.id): \(.action_ref) (\(.status))"'
|
||||
else
|
||||
echo "⚠️ No executions found yet (may still be processing)"
|
||||
fi
|
||||
else
|
||||
echo "ℹ️ Skipping execution check (no enforcements created)"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Summary
|
||||
echo "=================================================="
|
||||
echo "Test Summary"
|
||||
echo "=================================================="
|
||||
echo "✅ Webhook received and event created: ${EVENT_ID}"
|
||||
if [ "$ENFORCEMENT_COUNT" -gt 0 ]; then
|
||||
echo "✅ Event processing working: ${ENFORCEMENT_COUNT} enforcement(s) created"
|
||||
echo ""
|
||||
echo "🎉 SUCCESS: Webhook events are properly triggering rule processing!"
|
||||
else
|
||||
if [ -z "$MATCHING_RULES" ]; then
|
||||
echo "ℹ️ No rules to process (create a rule for '${WEBHOOK_TRIGGER}' to test full flow)"
|
||||
else
|
||||
echo "⚠️ Event processing may not be working (check executor logs)"
|
||||
fi
|
||||
fi
|
||||
echo ""
|
||||
Reference in New Issue
Block a user