#!/bin/bash # Complete test suite for Secure Proxy echo "๐Ÿงช Running Secure Proxy Test Suite..." echo "" TEST_PASSED=0 TEST_FAILED=0 # Color codes GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' NC='\033[0m' # Helper functions pass() { echo -e "${GREEN}โœ“${NC} $1" TEST_PASSED=$((TEST_PASSED+1)) } fail() { echo -e "${RED}โœ—${NC} $1" TEST_FAILED=$((TEST_FAILED+1)) } warn() { echo -e "${YELLOW}โš ${NC} $1" } # Test 1: Node.js version echo "Test 1: Environment" if command -v node &> /dev/null; then NODE_VERSION=$(node --version) pass "Node.js installed: $NODE_VERSION" else fail "Node.js not installed" fi # Test 2: npm version if command -v npm &> /dev/null; then NPM_VERSION=$(npm --version) pass "npm installed: $NPM_VERSION" else fail "npm not installed" fi echo "" echo "Test 2: Project Structure" # Test 3: Key directories for dir in "src" "public" "scripts" "db" "sessions"; do if [ -d "$dir" ]; then pass "Directory exists: $dir" else fail "Directory missing: $dir" fi done echo "" echo "Test 3: Configuration Files" # Test 4: Configuration files if [ -f ".env" ]; then pass "Configuration file exists: .env" else warn "No .env file (can use .env.example)" fi if [ -f "package.json" ]; then pass "Package file exists: package.json" else fail "Missing: package.json" fi echo "" echo "Test 4: Source Files" # Test 5: Key source files for file in \ "src/server.js" \ "src/config.js" \ "src/db.js" \ "src/middleware/oidcMiddleware.js" \ "src/middleware/security.js" \ "src/middleware/proxyMiddleware.js" \ "public/admin.html"; do if [ -f "$file" ]; then pass "File exists: $file" else fail "File missing: $file" fi done echo "" echo "Test 5: Dependencies" # Test 6: node_modules if [ -d "node_modules" ]; then MODULES=$(find node_modules -maxdepth 1 -type d | wc -l) pass "Dependencies installed: $MODULES packages" else warn "Dependencies not installed (run 'npm install')" fi echo "" echo "Test 6: Database" # Test 7: Database if [ -f "db/services.db" ]; then if command -v sqlite3 &> /dev/null; then TABLES=$(sqlite3 db/services.db "SELECT count(*) FROM sqlite_master WHERE type='table';" 2>/dev/null) if [ "$TABLES" -gt 0 ]; then pass "Database initialized with $TABLES tables" else fail "Database exists but no tables" fi else warn "sqlite3 not installed (can't verify database)" fi else warn "Database not initialized yet (run 'npm run init-db')" fi echo "" echo "Test 7: Scripts" # Test 8: NPM scripts for script in "start" "dev" "init-db" "seed-db"; do if grep -q "\"$script\"" package.json; then pass "NPM script available: $script" else fail "Missing NPM script: $script" fi done echo "" echo "Test 8: Documentation" # Test 9: Documentation files for doc in \ "00-START-HERE.md" \ "README.md" \ "QUICKSTART.md" \ "INSTALLATION.md" \ "ARCHITECTURE.md"; do if [ -f "$doc" ]; then pass "Documentation: $doc" else fail "Missing documentation: $doc" fi done echo "" echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" echo "Test Results:" echo -e " ${GREEN}Passed: $TEST_PASSED${NC}" if [ $TEST_FAILED -gt 0 ]; then echo -e " ${RED}Failed: $TEST_FAILED${NC}" else echo -e " ${RED}Failed: 0${NC}" fi echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" if [ $TEST_FAILED -eq 0 ]; then echo "" echo "โœ… All tests passed!" echo "" echo "Next steps:" echo " 1. Start the server:" echo " npm run dev" echo "" echo " 2. Open browser:" echo " http://localhost:3000" exit 0 else echo "" echo "โš ๏ธ Some tests failed. Please address the issues above." echo "" echo "Common fixes:" echo " - npm install # Install dependencies" echo " - npm run init-db # Initialize database" exit 1 fi