97 lines
3.6 KiB
Bash
97 lines
3.6 KiB
Bash
#!/bin/bash
|
|
|
|
# End-to-End Testing Script for Zero-Knowledge Gaming Cloud
|
|
# Tests: Worker → Gateway → NATS → Storage → Dashboard
|
|
|
|
set -e
|
|
|
|
echo "🚀 Starting Zero-Knowledge Cloud E2E Test..."
|
|
|
|
# Colors for output
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
RED='\033[0;31m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Step 1: Check if Docker Compose is running
|
|
echo -e "\n${YELLOW}[1/7]${NC} Checking Docker Compose status..."
|
|
if ! docker-compose ps | grep -q "Up"; then
|
|
echo -e "${RED}❌ Docker Compose is not running. Start with: docker-compose up${NC}"
|
|
exit 1
|
|
fi
|
|
echo -e "${GREEN}✅ Docker Compose is running${NC}"
|
|
|
|
# Step 2: Verify NATS connectivity
|
|
echo -e "\n${YELLOW}[2/7]${NC} Testing NATS connectivity..."
|
|
if docker-compose exec -T nats nats-server --version > /dev/null 2>&1; then
|
|
echo -e "${GREEN}✅ NATS is healthy${NC}"
|
|
else
|
|
echo -e "${RED}❌ NATS is not responding${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Step 3: Check PostgreSQL
|
|
echo -e "\n${YELLOW}[3/7]${NC} Testing PostgreSQL connectivity..."
|
|
if docker-compose exec -T postgres-master pg_isready -U admin > /dev/null 2>&1; then
|
|
echo -e "${GREEN}✅ PostgreSQL is healthy${NC}"
|
|
else
|
|
echo -e "${RED}❌ PostgreSQL is not responding${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Step 4: Verify Gateway HTTP endpoint
|
|
echo -e "\n${YELLOW}[4/7]${NC} Testing Gateway API..."
|
|
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/api/auth/login/begin -X POST -H "Content-Type: application/json" -d '{"username":"test"}')
|
|
if [ "$HTTP_CODE" -eq 200 ] || [ "$HTTP_CODE" -eq 400 ]; then
|
|
echo -e "${GREEN}✅ Gateway API is responding (HTTP $HTTP_CODE)${NC}"
|
|
else
|
|
echo -e "${RED}❌ Gateway API failed (HTTP $HTTP_CODE)${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Step 5: Check Worker logs for encryption
|
|
echo -e "\n${YELLOW}[5/7]${NC} Verifying Worker encryption..."
|
|
WORKER_LOGS=$(docker-compose logs worker --tail=20 2>&1)
|
|
if echo "$WORKER_LOGS" | grep -q "Sent MOCK event"; then
|
|
echo -e "${GREEN}✅ Worker is sending encrypted events${NC}"
|
|
else
|
|
echo -e "${RED}❌ Worker is not sending events${NC}"
|
|
echo "Latest worker logs:"
|
|
echo "$WORKER_LOGS"
|
|
fi
|
|
|
|
# Step 6: Check Storage Node persistence
|
|
echo -e "\n${YELLOW}[6/7]${NC} Verifying Storage Node persistence..."
|
|
STORAGE_LOGS=$(docker-compose logs storage-node --tail=20 2>&1)
|
|
if echo "$STORAGE_LOGS" | grep -q "Persisted"; then
|
|
echo -e "${GREEN}✅ Storage Node is persisting logs${NC}"
|
|
else
|
|
echo -e "${YELLOW}⚠️ Storage Node might not be persisting (check manually)${NC}"
|
|
fi
|
|
|
|
# Step 7: Verify Dashboard accessibility
|
|
echo -e "\n${YELLOW}[7/7]${NC} Testing Dashboard frontend..."
|
|
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:5173)
|
|
if [ "$HTTP_CODE" -eq 200 ]; then
|
|
echo -e "${GREEN}✅ Dashboard is accessible (HTTP $HTTP_CODE)${NC}"
|
|
else
|
|
echo -e "${RED}❌ Dashboard is not responding (HTTP $HTTP_CODE)${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Final Summary
|
|
echo -e "\n${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|
echo -e "${GREEN}✅ All E2E tests passed!${NC}"
|
|
echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|
echo ""
|
|
echo "📊 Next steps:"
|
|
echo " 1. Open http://localhost:5173 in your browser"
|
|
echo " 2. Login with username 'demo' (WebAuthn will prompt)"
|
|
echo " 3. Watch real-time encrypted logs flowing through the system"
|
|
echo ""
|
|
echo "🔍 Inspect components:"
|
|
echo " docker-compose logs gateway"
|
|
echo " docker-compose logs storage-node"
|
|
echo " docker-compose logs worker"
|
|
echo " docker-compose logs discord-bot"
|