AkurAI Build
Menu

Public repository / 76f58dc21068ab7c01c75e65fe305d1b913124fb

AkurAI-Mail / scripts/validate.sh

Latest change 0d1dcaa65fa30faf54fc0b8981eadcff7a0bd853 - chore: add post-deploy validate.sh by Ólafur Búi Ólafsson

#!/usr/bin/env bash
# scripts/validate.sh — Post-deploy validation for AkurAI-Mail
# AkurAI-Mail is a SvelteKit+Bun app (not Framework-based).
set -euo pipefail

: "${DOMAIN:=mail.olibuijr.com}"
: "${PORT:=3000}"
: "${APP_NAME:=akurai-mail-ui}"
RED='\033[0;31m'; GRN='\033[0;32m'; NC='\033[0m'
pass=0; fail=0
pass_() { printf "  ${GRN}PASS${NC} %s\n" "$*"; ((pass++)); }
fail_() { printf "  ${RED}FAIL${NC} %s\n" "$*"; ((fail++)); }

echo "=== Post-deploy validation: ${APP_NAME} ==="

systemctl is-active --quiet "${APP_NAME}.service" 2>/dev/null && pass_ "systemd active" || fail_ "systemd not active"

curl -fsS --max-time 5 "http://127.0.0.1:${PORT}/" > /dev/null 2>&1 && pass_ "loopback reachable" || fail_ "loopback unreachable"
curl -fsS --max-time 10 "https://${DOMAIN}/" > /dev/null 2>&1 && pass_ "public reachable" || fail_ "public unreachable"

curl -fsS --max-time 5 "http://127.0.0.1:${PORT}/login" 2>/dev/null | grep -qi 'login\|password\|sign' && pass_ "login page renders" || fail_ "login page not found"
curl -fsS --max-time 5 "https://${DOMAIN}/api/auth/check" > /dev/null 2>&1 && pass_ "auth check endpoint" || fail_ "auth check endpoint failed"

echo "━━━━━━━━━━━━━━━━━━━━━━━━"
echo -e "${GRN}Pass: $pass${NC}  ${RED}Fail: $fail${NC}"
[ "$fail" -eq 0 ] || exit 1