Monorepo for Aesthetic.Computer aesthetic.computer
at main 202 lines 7.4 kB view raw
1#!/bin/bash 2# 3# Keeps Contract Test Suite 4# 5# Tests all contract entrypoints on Ghostnet 6# 7 8CONTRACT_ADDRESS=$(cat contract-address.txt 2>/dev/null) 9 10if [ -z "$CONTRACT_ADDRESS" ]; then 11 echo "❌ No contract address found. Run: node keeps.mjs deploy" 12 exit 1 13fi 14 15echo "╔══════════════════════════════════════════════════════════════╗" 16echo "║ 🧪 Keeps Contract Test Suite ║" 17echo "╚══════════════════════════════════════════════════════════════╝" 18echo "" 19echo "📍 Contract: $CONTRACT_ADDRESS" 20echo "🌐 Network: Ghostnet" 21echo "" 22 23PASSED=0 24FAILED=0 25SKIPPED=0 26 27test_step() { 28 echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" 29 echo "🔬 Test: $1" 30 echo "" 31} 32 33pass() { 34 echo "✅ PASS: $1" 35 echo "" 36 ((PASSED++)) 37} 38 39fail() { 40 echo "❌ FAIL: $1" 41 echo "" 42 ((FAILED++)) 43} 44 45skip() { 46 echo "⚠️ SKIP: $1" 47 echo "" 48 ((SKIPPED++)) 49} 50 51# ============================================================================ 52# Test 1: Contract Status 53# ============================================================================ 54test_step "Contract Status Query" 55 56if node keeps.mjs status > /tmp/test-status.txt 2>&1; then 57 pass "Contract status retrieved successfully" 58 grep -E "Next Token ID|Administrator|Balance" /tmp/test-status.txt || true 59else 60 fail "Failed to get contract status" 61fi 62 63# ============================================================================ 64# Test 2: Check Balance 65# ============================================================================ 66test_step "Wallet Balance Query" 67 68if node keeps.mjs balance > /tmp/test-balance.txt 2>&1; then 69 pass "Wallet balance retrieved" 70 grep -E "Balance|Address" /tmp/test-balance.txt || true 71else 72 fail "Failed to get wallet balance" 73fi 74 75# ============================================================================ 76# Test 3: List Tokens 77# ============================================================================ 78test_step "Token Listing Query" 79 80if node keeps.mjs tokens > /tmp/test-tokens.txt 2>&1; then 81 pass "Token list retrieved" 82 tail -5 /tmp/test-tokens.txt || true 83else 84 fail "Failed to list tokens" 85fi 86 87# ============================================================================ 88# Test 4: Fee Query (expected to show N/A on current contract) 89# ============================================================================ 90test_step "Check Current Fee" 91 92if node keeps.mjs fee > /tmp/test-fee.txt 2>&1; then 93 pass "Fee retrieved" 94 grep -E "Fee|Contract" /tmp/test-fee.txt || true 95else 96 echo " Expected behavior: fee command not implemented or contract lacks fee storage" 97 skip "Fee system check (requires entrypoints)" 98fi 99 100# ============================================================================ 101# Test 5: TzKT API - Contract Storage 102# ============================================================================ 103test_step "TzKT API - Contract Storage" 104 105if curl -s "https://api.ghostnet.tzkt.io/v1/contracts/$CONTRACT_ADDRESS/storage" > /tmp/test-tzkt-storage.json 2>&1; then 106 if command -v jq &> /dev/null; then 107 pass "TzKT storage query successful" 108 jq -r '. | "Next ID: \(.next_token_id), Admin: \(.administrator)"' /tmp/test-tzkt-storage.json || cat /tmp/test-tzkt-storage.json 109 else 110 pass "TzKT storage query successful (install jq for formatted output)" 111 cat /tmp/test-tzkt-storage.json 112 fi 113else 114 fail "TzKT API query failed" 115fi 116 117# ============================================================================ 118# Test 6: TzKT API - Contract Entrypoints 119# ============================================================================ 120test_step "TzKT API - Contract Entrypoints" 121 122if curl -s "https://api.ghostnet.tzkt.io/v1/contracts/$CONTRACT_ADDRESS/entrypoints" > /tmp/test-tzkt-entrypoints.json 2>&1; then 123 pass "Entrypoints retrieved" 124 echo " Available entrypoints:" 125 if command -v jq &> /dev/null; then 126 jq -r '.[].name' /tmp/test-tzkt-entrypoints.json | sed 's/^/ - /' || true 127 echo "" 128 129 # Check for fee entrypoints 130 if jq -e '.[] | select(.name == "set_keep_fee")' /tmp/test-tzkt-entrypoints.json > /dev/null 2>&1; then 131 pass "Fee entrypoints present ✓" 132 else 133 echo " ⚠️ Fee entrypoints missing (expected for current contract)" 134 echo "" 135 fi 136 else 137 cat /tmp/test-tzkt-entrypoints.json 138 fi 139else 140 fail "Failed to fetch entrypoints" 141fi 142 143# ============================================================================ 144# Test 7: TzKT API - Token Metadata 145# ============================================================================ 146test_step "Token Metadata Query" 147 148if curl -s "https://api.ghostnet.tzkt.io/v1/tokens?contract=$CONTRACT_ADDRESS&limit=3" > /tmp/test-tokens.json 2>&1; then 149 if command -v jq &> /dev/null; then 150 TOKEN_COUNT=$(jq 'length' /tmp/test-tokens.json) 151 152 if [ "$TOKEN_COUNT" -gt 0 ]; then 153 pass "Token metadata retrieved (found $TOKEN_COUNT tokens)" 154 jq -r '.[] | "Token #\(.tokenId): \(.metadata.name // "unnamed")"' /tmp/test-tokens.json || true 155 echo "" 156 else 157 skip "No tokens minted yet" 158 fi 159 else 160 pass "Tokens queried (install jq for formatted output)" 161 fi 162else 163 fail "Failed to query tokens" 164fi 165 166# ============================================================================ 167# Test 8: Contract Balance 168# ============================================================================ 169test_step "Contract Balance Check" 170 171if curl -s "https://api.ghostnet.tzkt.io/v1/contracts/$CONTRACT_ADDRESS" > /tmp/test-contract-info.json 2>&1; then 172 if command -v jq &> /dev/null; then 173 BALANCE=$(jq -r '.balance' /tmp/test-contract-info.json) 174 BALANCE_XTZ=$(echo "scale=6; $BALANCE / 1000000" | bc) 175 pass "Contract balance: $BALANCE_XTZ XTZ" 176 else 177 pass "Contract info retrieved" 178 fi 179else 180 fail "Failed to get contract info" 181fi 182 183# ============================================================================ 184# Summary 185# ============================================================================ 186echo "" 187echo "╔══════════════════════════════════════════════════════════════╗" 188echo "║ 📊 Test Summary ║" 189echo "╚══════════════════════════════════════════════════════════════╝" 190echo "" 191echo " ✅ Passed: $PASSED" 192echo " ❌ Failed: $FAILED" 193echo " ⚠️ Skipped: $SKIPPED" 194echo "" 195 196if [ $FAILED -eq 0 ]; then 197 echo " 🎉 All non-skipped tests passed!" 198 exit 0 199else 200 echo " ⚠️ Some tests failed" 201 exit 1 202fi