#!/bin/bash
# Smoke test: validación de conexión (orq_test) + vencimiento .p12.
# Ejecutar DENTRO de WSL:  bash recursos/smoke-conexion.sh
set -u
BASE="http://localhost:8081/api.php"

say() { printf '\n==================== %s ====================\n' "$1"; }
jpost() { # $1=label  $2=json
  echo "--- $1 ---"
  curl -s -w '\n[HTTP %{http_code}]\n' -X POST "$BASE" -H 'Content-Type: application/json' -d "$2"
  echo
}

say "1) login admin"
LOGIN=$(curl -s -X POST "$BASE" -H 'Content-Type: application/json' \
  -d '{"w":"manager","r":"manager_login","userName":"admin","pwd":"admin123"}')
SK=$(echo "$LOGIN" | grep -oP '"sessionKey"\s*:\s*"\K[^"]+')
echo "sessionKey=$SK"
[ -z "$SK" ] && { echo "!! no se obtuvo sessionKey"; exit 1; }

say "2) generar llave .p12 VÁLIDA (autofirmada, vence en 365 dias)"
rm -f /tmp/llave_test.p12 /tmp/llave_test.key /tmp/llave_test.crt
openssl req -x509 -newkey rsa:2048 -keyout /tmp/llave_test.key -out /tmp/llave_test.crt -days 365 -nodes -subj "/CN=3101424727" 2>/dev/null
openssl pkcs12 -export -out /tmp/llave_test.p12 -inkey /tmp/llave_test.key -in /tmp/llave_test.crt -passout pass:1234 2>/dev/null
ls -la /tmp/llave_test.p12

say "3) orq_subir_p12 (llave valida) — debe devolver p12Vencimiento"
curl -s -w '\n[HTTP %{http_code}]\n' -X POST "$BASE" \
  -F 'w=orquestador' -F 'r=orq_subir_p12' -F "sessionKey=$SK" \
  -F 'idClient=1' -F 'pinP12=1234' -F 'fileToUpload=@/tmp/llave_test.p12'
echo

say "4) orq_config GET — verificar p12Vencimiento guardado"
jpost "orq_config" "{\"w\":\"orquestador\",\"r\":\"orq_config\",\"sessionKey\":\"$SK\",\"idClient\":1}"

say "5) orq_test — valida contra endpoints reales de Hacienda"
jpost "orq_test" "{\"w\":\"orquestador\",\"r\":\"orq_test\",\"sessionKey\":\"$SK\",\"idClient\":1}"

say "6) orq_lista_config — verificar vencimiento + credenciales ATV en la lista"
jpost "orq_lista_config" "{\"w\":\"orquestador\",\"r\":\"orq_lista_config\",\"sessionKey\":\"$SK\"}"
