Files
CurrenciCombo/scripts/test-e2e-flow.sh

181 lines
5.6 KiB
Bash
Raw Permalink Normal View History

#!/bin/bash
# End-to-End Flow Test Script
# Tests: create plan → sign → execute → view receipt
echo -e "\n========================================"
echo -e " END-TO-END FLOW TEST"
echo -e "========================================\n"
# Colors
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color
# Check if orchestrator is running
echo -e "1. Checking orchestrator service..."
if ! curl -s http://localhost:8080/health > /dev/null 2>&1; then
echo -e " ${RED}❌ Orchestrator not running${NC}"
echo -e " Start it with: cd orchestrator && npm run dev"
exit 1
fi
echo -e " ${GREEN}✅ Orchestrator is running${NC}"
# Check if webapp is running
echo -e "\n2. Checking webapp service..."
if ! curl -s http://localhost:3000 > /dev/null 2>&1; then
echo -e " ${YELLOW}⚠️ Webapp not running (optional for API tests)${NC}"
else
echo -e " ${GREEN}✅ Webapp is running${NC}"
fi
# Test 1: Create a plan
echo -e "\n3. Creating a test plan..."
PLAN_DATA='{
"creator": "test-user-123",
"steps": [
{
"type": "borrow",
"adapter": "aave",
"params": {
"asset": "USDC",
"amount": "1000"
}
},
{
"type": "swap",
"adapter": "uniswap",
"params": {
"tokenIn": "USDC",
"tokenOut": "ETH",
"amountIn": "1000"
}
}
],
"maxRecursion": 3,
"maxLtv": 0.6
}'
CREATE_RESPONSE=$(curl -s -X POST http://localhost:8080/api/plans \
-H "Content-Type: application/json" \
-d "$PLAN_DATA" \
-w "\n%{http_code}")
HTTP_CODE=$(echo "$CREATE_RESPONSE" | tail -n1)
BODY=$(echo "$CREATE_RESPONSE" | sed '$d')
if [ "$HTTP_CODE" = "201" ] || [ "$HTTP_CODE" = "200" ]; then
echo -e " ${GREEN}✅ Plan created successfully${NC}"
# Extract plan_id
if command -v jq &> /dev/null; then
PLAN_ID=$(echo "$BODY" | jq -r '.plan_id // .id // empty' 2>/dev/null)
if [ -n "$PLAN_ID" ] && [ "$PLAN_ID" != "null" ]; then
echo -e " Plan ID: $PLAN_ID"
else
echo -e " ${YELLOW}⚠️ Could not extract plan_id from response${NC}"
PLAN_ID=""
fi
else
echo -e " ${YELLOW}⚠️ jq not installed, cannot extract plan_id${NC}"
PLAN_ID=""
fi
else
echo -e " ${RED}❌ Failed to create plan (HTTP $HTTP_CODE)${NC}"
echo -e " Response: $BODY"
exit 1
fi
# Test 2: Get the plan
if [ -n "$PLAN_ID" ]; then
echo -e "\n4. Retrieving plan..."
GET_RESPONSE=$(curl -s -w "\n%{http_code}" http://localhost:8080/api/plans/$PLAN_ID)
GET_HTTP_CODE=$(echo "$GET_RESPONSE" | tail -n1)
if [ "$GET_HTTP_CODE" = "200" ]; then
echo -e " ${GREEN}✅ Plan retrieved successfully${NC}"
else
echo -e " ${YELLOW}⚠️ Could not retrieve plan (HTTP $GET_HTTP_CODE)${NC}"
fi
fi
# Test 3: Add signature (mock)
if [ -n "$PLAN_ID" ]; then
echo -e "\n5. Adding signature to plan..."
SIGNATURE_DATA='{
"signature": "0x1234567890abcdef",
"messageHash": "0xabcdef1234567890",
"signerAddress": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"
}'
SIGN_RESPONSE=$(curl -s -X POST http://localhost:8080/api/plans/$PLAN_ID/signature \
-H "Content-Type: application/json" \
-d "$SIGNATURE_DATA" \
-w "\n%{http_code}")
SIGN_HTTP_CODE=$(echo "$SIGN_RESPONSE" | tail -n1)
if [ "$SIGN_HTTP_CODE" = "200" ] || [ "$SIGN_HTTP_CODE" = "201" ]; then
echo -e " ${GREEN}✅ Signature added successfully${NC}"
else
echo -e " ${YELLOW}⚠️ Could not add signature (HTTP $SIGN_HTTP_CODE)${NC}"
fi
fi
# Test 4: Validate plan
if [ -n "$PLAN_ID" ]; then
echo -e "\n6. Validating plan..."
VALIDATE_RESPONSE=$(curl -s -X POST http://localhost:8080/api/plans/$PLAN_ID/validate \
-w "\n%{http_code}")
VALIDATE_HTTP_CODE=$(echo "$VALIDATE_RESPONSE" | tail -n1)
if [ "$VALIDATE_HTTP_CODE" = "200" ]; then
echo -e " ${GREEN}✅ Plan validation successful${NC}"
if command -v jq &> /dev/null; then
VALID=$(echo "$VALIDATE_RESPONSE" | sed '$d' | jq -r '.valid // false' 2>/dev/null)
if [ "$VALID" = "true" ]; then
echo -e " Plan is valid: ${GREEN}${NC}"
else
echo -e " Plan validation: ${YELLOW}⚠️${NC}"
fi
fi
else
echo -e " ${YELLOW}⚠️ Could not validate plan (HTTP $VALIDATE_HTTP_CODE)${NC}"
fi
fi
# Test 5: Check execution endpoint (if available)
echo -e "\n7. Testing execution endpoint..."
EXEC_RESPONSE=$(curl -s -X POST http://localhost:8080/api/execution/execute \
-H "Content-Type: application/json" \
-d "{\"plan_id\": \"$PLAN_ID\"}" \
-w "\n%{http_code}" 2>/dev/null)
if [ $? -eq 0 ]; then
EXEC_HTTP_CODE=$(echo "$EXEC_RESPONSE" | tail -n1)
if [ "$EXEC_HTTP_CODE" = "200" ] || [ "$EXEC_HTTP_CODE" = "202" ]; then
echo -e " ${GREEN}✅ Execution endpoint accessible${NC}"
else
echo -e " ${YELLOW}⚠️ Execution endpoint returned HTTP $EXEC_HTTP_CODE${NC}"
fi
else
echo -e " ${YELLOW}⚠️ Execution endpoint not available or requires authentication${NC}"
fi
# Summary
echo -e "\n========================================"
echo -e " TEST SUMMARY"
echo -e "========================================\n"
echo -e "${GREEN}✅ Basic flow test completed${NC}"
if [ -n "$PLAN_ID" ]; then
echo -e " Test plan ID: $PLAN_ID"
echo -e " View plan: http://localhost:8080/api/plans/$PLAN_ID"
fi
echo -e "\n📝 Next steps:"
echo -e " 1. Test full execution flow via webapp UI"
echo -e " 2. Verify receipt generation"
echo -e " 3. Check audit logs"
echo ""