192 lines
6.0 KiB
Bash
Executable File
192 lines
6.0 KiB
Bash
Executable File
#!/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 ""
|