Files
metamask-integration/scripts/test-portfolio-integration.sh

192 lines
6.0 KiB
Bash
Raw Permalink Normal View History

#!/bin/bash
# Test MetaMask Portfolio Integration
# This script tests Blockscout API endpoints required for MetaMask Portfolio
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
# Colors
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
log_success() { echo -e "${GREEN}[✓]${NC} $1"; }
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
EXPLORER_URL="${EXPLORER_URL:-https://explorer.d-bis.org}"
TEST_ADDRESS="${TEST_ADDRESS:-0x4207aA9aC89B8bF4795dbAbBbE17fdd224E7947C}"
CUSDT_ADDRESS="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
CUSDC_ADDRESS="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
log_info "========================================="
log_info "MetaMask Portfolio Integration Test"
log_info "========================================="
log_info ""
log_info "Explorer URL: $EXPLORER_URL"
log_info "Test Address: $TEST_ADDRESS"
log_info ""
# Test CORS headers
log_info "Testing CORS headers..."
CORS_TEST=$(curl -s -I -X OPTIONS "$EXPLORER_URL/api/v2/tokens/$CUSDT_ADDRESS" \
-H "Origin: https://portfolio.metamask.io" \
-H "Access-Control-Request-Method: GET" 2>&1)
if echo "$CORS_TEST" | grep -q "Access-Control-Allow-Origin"; then
log_success "CORS headers present"
echo "$CORS_TEST" | grep -i "access-control" | head -5
else
log_warn "CORS headers not found or incomplete"
echo "$CORS_TEST" | head -10
fi
log_info ""
# Test token metadata API
log_info "Testing token metadata API endpoints..."
# Test cUSDT metadata
log_info "1. Testing cUSDT metadata..."
TOKEN_METADATA=$(curl -s "$EXPLORER_URL/api/v2/tokens/$CUSDT_ADDRESS" 2>&1 || echo "ERROR")
if echo "$TOKEN_METADATA" | grep -q "symbol\|name\|decimals"; then
log_success "cUSDT metadata API working"
echo "$TOKEN_METADATA" | jq -r '.symbol, .name, .decimals' 2>/dev/null || echo "$TOKEN_METADATA" | head -5
else
log_error "cUSDT metadata API failed"
echo "$TOKEN_METADATA" | head -5
fi
log_info ""
# Test cUSDC metadata
log_info "2. Testing cUSDC metadata..."
TOKEN_METADATA=$(curl -s "$EXPLORER_URL/api/v2/tokens/$CUSDC_ADDRESS" 2>&1 || echo "ERROR")
if echo "$TOKEN_METADATA" | grep -q "symbol\|name\|decimals"; then
log_success "cUSDC metadata API working"
echo "$TOKEN_METADATA" | jq -r '.symbol, .name, .decimals' 2>/dev/null || echo "$TOKEN_METADATA" | head -5
else
log_error "cUSDC metadata API failed"
echo "$TOKEN_METADATA" | head -5
fi
log_info ""
# Test account token balances
log_info "3. Testing account token balances..."
BALANCES=$(curl -s "$EXPLORER_URL/api/v2/addresses/$TEST_ADDRESS/token-balances" 2>&1 || echo "ERROR")
if echo "$BALANCES" | grep -q "token\|balance"; then
log_success "Token balances API working"
echo "$BALANCES" | jq -r '.[] | "\(.token.symbol): \(.value)"' 2>/dev/null | head -5 || echo "$BALANCES" | head -5
else
log_warn "Token balances API may not be available"
echo "$BALANCES" | head -5
fi
log_info ""
# Test account transactions
log_info "4. Testing account transactions API..."
TXS=$(curl -s "$EXPLORER_URL/api/v2/addresses/$TEST_ADDRESS/transactions" 2>&1 || echo "ERROR")
if echo "$TXS" | grep -q "hash\|block_number"; then
log_success "Transactions API working"
TX_COUNT=$(echo "$TXS" | jq '.items | length' 2>/dev/null || echo "0")
log_info "Found $TX_COUNT transactions"
else
log_warn "Transactions API may not be available"
echo "$TXS" | head -5
fi
log_info ""
# Test logo URLs
log_info "5. Testing token logo URLs..."
LOGO_URLS=(
"$EXPLORER_URL/images/tokens/$CUSDT_ADDRESS.png"
"$EXPLORER_URL/images/tokens/$CUSDC_ADDRESS.png"
)
for logo_url in "${LOGO_URLS[@]}"; do
LOGO_TEST=$(curl -s -I "$logo_url" 2>&1 | head -1)
if echo "$LOGO_TEST" | grep -q "200\|OK"; then
log_success "Logo accessible: $(basename $logo_url)"
else
log_warn "Logo not found: $(basename $logo_url)"
fi
done
log_info ""
# Create test report
REPORT_FILE="$PROJECT_ROOT/portfolio-integration-test-report.md"
cat > "$REPORT_FILE" << EOF
# MetaMask Portfolio Integration Test Report
**Date**: $(date)
**Explorer URL**: $EXPLORER_URL
**Test Address**: $TEST_ADDRESS
## Test Results
### CORS Configuration
- Status: $(echo "$CORS_TEST" | grep -q "Access-Control-Allow-Origin" && echo "✅ PASS" || echo "❌ FAIL")
- Headers: $(echo "$CORS_TEST" | grep -i "access-control" | head -3 | tr '\n' ' ')
### API Endpoints
1. **Token Metadata API**
- cUSDT: $(echo "$TOKEN_METADATA" | grep -q "symbol" && echo "✅ Working" || echo "❌ Failed")
- cUSDC: $(echo "$TOKEN_METADATA" | grep -q "symbol" && echo "✅ Working" || echo "❌ Failed")
2. **Token Balances API**
- Status: $(echo "$BALANCES" | grep -q "token\|balance" && echo "✅ Working" || echo "⚠️ Limited")
3. **Transactions API**
- Status: $(echo "$TXS" | grep -q "hash" && echo "✅ Working" || echo "⚠️ Limited")
4. **Logo URLs**
- cUSDT Logo: $(curl -s -I "$EXPLORER_URL/images/tokens/$CUSDT_ADDRESS.png" 2>&1 | grep -q "200" && echo "✅ Accessible" || echo "❌ Not Found")
- cUSDC Logo: $(curl -s -I "$EXPLORER_URL/images/tokens/$CUSDC_ADDRESS.png" 2>&1 | grep -q "200" && echo "✅ Accessible" || echo "❌ Not Found")
## Recommendations
1. Ensure all API endpoints are accessible
2. Verify CORS headers are correctly configured
3. Test from MetaMask Portfolio after deployment
4. Monitor API response times
5. Verify token logos are accessible
## Next Steps
1. Deploy Blockscout with CORS configuration
2. Test from MetaMask Portfolio
3. Verify token auto-detection
4. Verify balance display
5. Verify transaction history
EOF
log_success "Created test report: $REPORT_FILE"
log_info ""
log_info "========================================="
log_info "Portfolio Integration Test Complete!"
log_info "========================================="
log_info ""
log_info "Test report saved to: $REPORT_FILE"
log_info ""
log_info "Next steps:"
log_info "1. Review test report"
log_info "2. Fix any failing tests"
log_info "3. Test from MetaMask Portfolio"
log_info ""