Files
wevads-platform/scripts/full-test-suite.sh

152 lines
8.4 KiB
Bash
Executable File

#!/bin/bash
echo "══════════════════════════════════════════════"
echo "FULL TEST SUITE — FRONTEND + BACKEND + CURL"
echo "══════════════════════════════════════════════"
PASS=0; FAIL=0; WARN=0
ok() { PASS=$((PASS+1)); }
fail() { FAIL=$((FAIL+1)); echo "$1"; }
warn() { WARN=$((WARN+1)); echo " ⚠️ $1"; }
echo ""
echo "▶ 1. ENCODER MODAL"
# Check modal HTML exists and has form elements
grep -q 'id="encoder-modal"' /opt/wevads/app/views/includes/modals/encoder_modal.html && ok || fail "encoder-modal ID missing"
grep -q 'encode\|decode\|base64\|html' /opt/wevads/app/views/includes/modals/encoder_modal.html && ok || fail "encoder has no encode/decode functionality"
# Check JS handler wired
grep -q 'encoder-trigger' /opt/wevads/app/views/includes/modals/send_hover_buttons.html && ok || fail "encoder-trigger handler missing"
echo " ✅ Encoder modal: HTML + handler OK"
echo ""
echo "▶ 2. HELP MODAL (Tags Reference)"
grep -q 'id="mta-drops-helper"' /opt/wevads/app/views/includes/modals/mta_drops_help.html && ok || fail "mta-drops-helper ID missing"
grep -q '\[open\]\|\[url\]\|\[domain\]\|\[email\]' /opt/wevads/app/views/includes/modals/mta_drops_help.html && ok || fail "help modal missing ADX tags"
grep -q 'send-help' /opt/wevads/app/views/includes/modals/send_hover_buttons.html && ok || fail "send-help handler missing"
echo " ✅ Help modal: tags reference OK"
echo ""
echo "▶ 3. PMTA COMMANDS MODAL"
grep -q 'id="pmta-commands-helper"' /opt/wevads/app/views/includes/modals/pmta_commands.html && ok || fail "pmta-commands-helper ID missing"
grep -q 'pmta-monitors-trigger' /opt/wevads/app/views/includes/modals/send_hover_buttons.html && ok || fail "pmta-monitors handler missing"
grep -q 'include.*pmta_commands' /opt/wevads/app/views/production/send-process.html && ok || fail "pmta_commands not included in send-process"
echo " ✅ PMTA modal: included + handler OK"
echo ""
echo "▶ 4. S3 UPLOADER MODAL"
grep -q 'id="s3-uploader-modal"' /opt/wevads/app/views/includes/modals/s3_uploader_modal.html && ok || fail "s3-uploader-modal ID missing"
grep -q 'uploader-s3-trigger' /opt/wevads/app/views/includes/modals/send_hover_buttons.html && ok || fail "uploader-s3 handler missing"
# Test S3 upload endpoint
code=$(curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:5821/s3_upload_direct.php 2>/dev/null)
[ "$code" = "200" ] && ok || warn "s3_upload_direct.php HTTP $code"
echo " ✅ S3 modal: HTML + handler + endpoint OK"
echo ""
echo "▶ 5. SEND/TEST ALL HANDLERS"
grep -q 'send-drop-trigger' /opt/wevads/app/views/includes/modals/send_hover_buttons.html && ok || fail "send-drop handler missing"
grep -q 'send-test-all-trigger' /opt/wevads/app/views/includes/modals/send_hover_buttons.html && ok || fail "test-all handler missing"
grep -q 'selected-vmtas' /opt/wevads/app/views/includes/modals/send_hover_buttons.html && ok || fail "vmta validation missing"
echo " ✅ Send/Test All: handlers + validation OK"
echo ""
echo "▶ 6. BRAIN INJECT (🏆 Trophy)"
code=$(curl -s -o /dev/null -w '%{http_code}' "http://127.0.0.1:5821/api/brain-inject-api.php?action=winners")
[ "$code" = "200" ] && ok || fail "brain-inject API HTTP $code"
W=$(curl -s "http://127.0.0.1:5821/api/brain-inject-api.php?action=winners" | python3 -c 'import json,sys;print(json.load(sys.stdin).get("count",0))' 2>/dev/null)
[ "$W" -gt 0 ] && ok || fail "brain-inject 0 winners"
# Check inject endpoint
I=$(curl -s "http://127.0.0.1:5821/api/brain-inject-api.php?action=inject&id=8" | python3 -c 'import json,sys;d=json.load(sys.stdin);print(len(d.get("config",{})))' 2>/dev/null)
[ "$I" -gt 5 ] && ok || fail "brain-inject config empty"
echo " ✅ Brain inject: $W winners, inject returns $I fields"
echo ""
echo "▶ 7. BRAIN PIXEL TRACKER"
code=$(curl -s -o /dev/null -w '%{http_code}' "http://127.0.0.1:5821/api/brain-pixel.php?t=finaltest")
[ "$code" = "200" ] && ok || fail "brain-pixel HTTP $code"
CT=$(curl -s -I "http://127.0.0.1:5821/api/brain-pixel.php?t=ct" 2>/dev/null | grep -i content-type)
echo "$CT" | grep -qi 'image/gif' && ok || warn "brain-pixel content-type: $CT"
echo " ✅ Brain pixel: tracking OK"
echo ""
echo "▶ 8. WEVAL MIND CHAT"
code=$(curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:5821/wevalmindads.php)
[ "$code" = "200" ] && ok || fail "wevalmindads HTTP $code"
CHAT=$(curl -s -X POST http://127.0.0.1:5821/api/hamid-api.php -d 'message=ping&session_id=test' 2>/dev/null | python3 -c 'import json,sys;d=json.load(sys.stdin);print("OK" if d.get("response") else "FAIL")' 2>/dev/null)
[ "$CHAT" = "OK" ] && ok || warn "hamid-api chat: $CHAT"
echo " ✅ WEVAL MIND: page + chat API OK"
echo ""
echo "▶ 9. SEEDS & WINNERS MANAGER"
code=$(curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:5890/seeds-winners-manager.html)
[ "$code" = "200" ] && ok || fail "seeds-winners page HTTP $code"
# Test all APIs
for api in "seeds" "winners" "cached_newsletters" "search&q=GMX" "all_seeds" "configs_stats"; do
resp=$(curl -s "http://127.0.0.1:5890/seeds-winners-manager.html?api=$api" 2>/dev/null)
echo "$resp" | python3 -c 'import json,sys;json.load(sys.stdin)' 2>/dev/null && ok || fail "API $api not valid JSON"
done
echo " ✅ Seeds Manager: page + 6 APIs OK"
echo ""
echo "▶ 10. FOOTER QUICK ACCESS"
code=$(curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:5821/js/footer-toggles.js?v=1772822000)
[ "$code" = "200" ] && ok || fail "footer-toggles.js HTTP $code"
grep -q 'wevalmindads' /opt/wevads/public/js/footer-toggles.js && ok || fail "WEVAL MIND not in Quick Access"
echo " ✅ Footer: JS + links OK"
echo ""
echo "▶ 11. ARSENAL 5890 — BATCH HTML CHECK"
ok_html=0; fail_html=0
cd /opt/wevads-arsenal/public 2>/dev/null || cd /opt/wevads/public 2>/dev/null
for f in *.html; do
body=$(curl -s --max-time 5 "http://127.0.0.1:5890/$f" 2>/dev/null)
code=$(echo "$body" | head -1)
php_err=$(echo "$body" | grep -c "Fatal error\|Parse error")
if [ "$php_err" = "0" ]; then ok_html=$((ok_html+1)); else fail_html=$((fail_html+1)); fail "$f has PHP errors"; fi
done
PASS=$((PASS+ok_html))
echo " ✅ Arsenal HTML: $ok_html OK, $fail_html fail"
echo ""
echo "▶ 12. DATABASE INTEGRITY"
PGPASSWORD=admin123 psql -U admin -d adx_system -t -c "
SELECT 'mta_servers=' || (SELECT COUNT(*) FROM admin.mta_servers WHERE status='Activated')
|| ' vmtas=' || (SELECT COUNT(*) FROM admin.servers_vmtas)
|| ' winners=' || (SELECT COUNT(*) FROM admin.brain_winners)
|| ' configs=' || (SELECT COUNT(*) FROM admin.brain_configs)
|| ' seeds_ok=' || (SELECT COUNT(*) FROM admin.brain_seeds WHERE check_status='ok')
|| ' nl_cache=' || (SELECT COUNT(*) FROM admin.newsletter_cache)
|| ' pixel_hits=' || (SELECT COUNT(*) FROM admin.brain_pixel_hits);" 2>/dev/null
ok
echo ""
echo "▶ 13. TRACKING TAGS COMPLIANCE"
TAGS=$(PGPASSWORD=admin123 psql -U admin -d adx_system -t -c "
SELECT COUNT(*) FILTER(WHERE body_template LIKE '%[open]%') || '/' ||
COUNT(*) FILTER(WHERE body_template LIKE '%[url]%') || '/' ||
COUNT(*) FILTER(WHERE body_template LIKE '%[unsub]%') || '/' ||
COUNT(*) FILTER(WHERE body_template LIKE '%[domain]%') || '/' ||
COUNT(*) FILTER(WHERE body_template LIKE '%[email_b64]%') || '/' ||
COUNT(*) as compliance
FROM admin.brain_configs WHERE id IN (SELECT config_id FROM admin.brain_winners);" 2>/dev/null)
echo " Tags [open/url/unsub/domain/email_b64/total]: $TAGS"
ok
echo ""
echo "▶ 14. EXTERNAL SERVICES"
curl -s -o /dev/null -w '%{http_code}' --max-time 5 http://151.80.235.110/track.php && ok || warn "OVH tracking down"
curl -s -o /dev/null -w '%{http_code}' --max-time 5 https://e36lbat.com/ && ok || warn "e36lbat down"
echo " ✅ External: OVH + e36lbat"
echo ""
echo "▶ 15. DNS + SECURITY"
echo " s89: $(dig +short s89.wevup.app A 2>/dev/null)"
echo " mx: $(dig +short mx.wevup.app A 2>/dev/null)"
echo " PMTA: $(systemctl is-active pmta 2>/dev/null || echo masked)"
echo " Postfix: $(systemctl is-active postfix 2>/dev/null || echo masked)"
echo " Port 25: $(ss -tlnp 2>/dev/null | grep -c ':25 ') listeners"
ok
echo ""
echo "══════════════════════════════════════════════"
echo "TOTAL: $PASS PASS | $FAIL FAIL | $WARN WARN"
echo "══════════════════════════════════════════════"