#!/bin/sh
# Spins up a throwaway MariaDB schema + PHP dev server and runs the WhatsApp bot tests.
# Needs: php (pdo_mysql, mbstring), mariadb/mysql server on localhost with root socket access, python3.
set -e
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
cd "$ROOT"
mkdir -p /run/mysqld && chown mysql:mysql /run/mysqld 2>/dev/null || true
mysqladmin ping >/dev/null 2>&1 || { nohup mysqld_safe > /tmp/mysqld.log 2>&1 & for i in $(seq 1 30); do mysqladmin ping >/dev/null 2>&1 && break; sleep 1; done; }
mysql -u root -e "DROP DATABASE IF EXISTS zc_safeguarding; CREATE DATABASE zc_safeguarding CHARACTER SET utf8mb4;
CREATE USER IF NOT EXISTS 'zc_app_user'@'localhost' IDENTIFIED BY 'change-me';
GRANT ALL PRIVILEGES ON zc_safeguarding.* TO 'zc_app_user'@'localhost'; FLUSH PRIVILEGES;"
mysql -u root zc_safeguarding < database/schema.sql
mysql -u root zc_safeguarding < database/seeds/permissions.sql
mysql -u root zc_safeguarding < database/migrations/001_whatsapp_bot.sql
mkdir -p storage/logs storage/evidence; rm -f storage/logs/whatsapp-outbox.log storage/logs/php-error.log
export DB_HOST=127.0.0.1 DB_NAME=zc_safeguarding DB_USER=zc_app_user DB_PASS=change-me APP_ENV=development
export ENCRYPTION_KEY_BASE64="$(php -r 'echo base64_encode(random_bytes(32));')" HASH_PEPPER="$(php -r 'echo bin2hex(random_bytes(32));')"
export ULTRAMSG_INSTANCE_ID=1150 WHATSAPP_WEBHOOK_SECRET=testsecret123
(cd public_html && nohup php -S 127.0.0.1:8100 > /tmp/wa-server.log 2>&1 &)
sleep 1
(cd public_html && APP_ENV=production ULTRAMSG_TOKEN= nohup php -S 127.0.0.1:8101 > /tmp/wa-server-prod.log 2>&1 &)
sleep 1
python3 tests/whatsapp_bot_test.py
# fresh state, then the production-mode rollback check (receipt can't be delivered)
mysql -u root zc_safeguarding -e "DELETE FROM anonymous_reports; DELETE FROM whatsapp_sessions; DELETE FROM whatsapp_messages;"
python3 tests/whatsapp_rollback_test.py
python3 tests/web_regression_test.py

# --- Cloud API provider: separate server instance, cloud_api selected ---
mysql -u root zc_safeguarding -e "DELETE FROM whatsapp_sessions; DELETE FROM whatsapp_processed_events; DELETE FROM whatsapp_messages;"
rm -f storage/logs/whatsapp-outbox.log storage/logs/php-error.log
(cd public_html && \
  WHATSAPP_PROVIDER=cloud_api \
  WHATSAPP_CLOUD_PHONE_NUMBER_ID=999888777 \
  WHATSAPP_CLOUD_ACCESS_TOKEN=testtoken \
  WHATSAPP_CLOUD_APP_SECRET=testappsecret \
  WHATSAPP_CLOUD_VERIFY_TOKEN=testverifytoken \
  nohup php -S 127.0.0.1:8102 > /tmp/wa-server-cloud.log 2>&1 &)
sleep 1
python3 tests/whatsapp_cloud_api_test.py
echo "--- php-error.log during Cloud API run (should be empty or only expected notices) ---"
cat storage/logs/php-error.log 2>/dev/null
