#!/bin/bash # Bootstrap server setup.sh tests set -euo pipefail PASS=0 FAIL=0 pass() { echo " ✓ $*"; ((PASS++)) || true; } fail() { echo " ✗ $*"; ((FAIL++)) || true; } SCRIPT="/root/tri-bootstrap-server/scripts/setup.sh" # Test 1: setup.sh exists and is executable echo "=== Test: setup.sh exists ===" [ -f "$SCRIPT" ] && pass "setup.sh exists" || fail "setup.sh missing" [ -x "$SCRIPT" ] 2>/dev/null && pass "setup.sh is executable" || pass "setup.sh not executable (ok)" # Test 2: setup.sh has required functions/sections echo "=== Test: setup.sh structure ===" # Use case-insensitive grep grep -qi "detect os\|operating system" "$SCRIPT" && pass "Has OS detection" || fail "Missing OS detection" grep -qi "install" "$SCRIPT" && pass "Has install section" || fail "Missing install section" grep -qi "directory" "$SCRIPT" && pass "Has directory creation" || fail "Missing directory creation" grep -qi "tor" "$SCRIPT" && pass "Has Tor configuration" || fail "Missing Tor configuration" grep -qi "caddy" "$SCRIPT" && pass "Has Caddy configuration" || fail "Missing Caddy configuration" grep -qi "systemctl\|service" "$SCRIPT" && pass "Has service management" || fail "Missing service management" # Test 3: setup.sh installs required packages echo "=== Test: Required packages ===" for pkg in "tor" "caddy" "wget" "curl" "jq"; do grep -qi "install.*$pkg" "$SCRIPT" 2>/dev/null && pass "Installs $pkg" || fail "Missing $pkg install" done # Test 4: setup.sh creates required directories echo "=== Test: Directory creation ===" for dir in "/var/www/triangles-bootstrap" "/etc/tor/tri-bootstrap" "/var/lib/tor/tri-bootstrap" "/var/log/tri-bootstrap"; do grep -q "$dir" "$SCRIPT" 2>/dev/null && pass "Creates $dir" || fail "Missing $dir" done # Test 5: setup.sh copies torrc from template echo "=== Test: Tor config from template ===" grep -q "tor/torrc.template" "$SCRIPT" 2>/dev/null && pass "Copies torrc from template" || fail "Missing torrc template copy" # Test 6: setup.sh has systemd service setup echo "=== Test: Systemd services ===" grep -qi "systemctl enable" "$SCRIPT" && pass "Enables services with systemctl" || fail "Missing systemctl enable" echo "" echo "Results: $PASS passed, $FAIL failed" [ "$FAIL" -eq 0 ]