cambiar-entrada.sh: crear el secreto de sesión antes de la prueba con cookie

En el primer despliegue (27-oct) el servicio todavía no había creado /srv/projects/drogheda/.sesion-secreto
(lo crea la primera vez que firma o revisa una cookie), la cookie de prueba salió vacía y las 3 pruebas
«con sesión» fallaron; nginx regresó solo al anterior. Ahora la prueba obliga al servicio a crearlo y,
si aun así no hay cookie válida, lo dice con claridad.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013SfRSvDd335NPYEbBrDFGE
This commit is contained in:
Leopoldo Rodríguez 2026-10-27 14:28:55 -06:00
parent 78b8fb9cff
commit 866eb4eb82

View File

@ -33,6 +33,9 @@ probar_backend() {
prueba "standup cargado" '"ok":true' "curl -s -H 'X-Remote-User: vigia' http://127.0.0.1:8081/api/standup/estado" prueba "standup cargado" '"ok":true' "curl -s -H 'X-Remote-User: vigia' http://127.0.0.1:8081/api/standup/estado"
} }
cookie_de_prueba() { # sesión de 5 minutos para leo, firmada con el secreto del servicio (sin contraseña) cookie_de_prueba() { # sesión de 5 minutos para leo, firmada con el secreto del servicio (sin contraseña)
# El servicio crea su secreto la primera vez que firma o revisa una cookie; en el primer despliegue aún no existe
# (27-oct: por eso fallaron las 3 pruebas «con sesión»). Una cookie falsa «vigente» lo obliga a crearlo (responde 401).
[ -s "$DATOS/.sesion-secreto" ] || curl -s -o /dev/null --max-time 5 -b 'hbox_sesion=x~9999999999~x~x' http://127.0.0.1:8081/api/_auth
python3 - "$DATOS/.sesion-secreto" "$HTP" <<'PY' python3 - "$DATOS/.sesion-secreto" "$HTP" <<'PY'
import sys, time, hmac, hashlib import sys, time, hmac, hashlib
sec = open(sys.argv[1]).read().strip().encode() sec = open(sys.argv[1]).read().strip().encode()
@ -54,6 +57,9 @@ probar_nginx() {
prueba "entrar con contraseña mala → 401" '"codigo":"' "$C -H 'Content-Type: application/json' -d '{\"usuario\":\"vigia-prueba\",\"password\":\"x\"}' https://$HOST/api/entrar" prueba "entrar con contraseña mala → 401" '"codigo":"' "$C -H 'Content-Type: application/json' -d '{\"usuario\":\"vigia-prueba\",\"password\":\"x\"}' https://$HOST/api/entrar"
prueba "curl -u (Basic) ya no entra" '"sesion":false' "$C -A curl -u leo:x https://$HOST/api/whoami" prueba "curl -u (Basic) ya no entra" '"sesion":false' "$C -A curl -u leo:x https://$HOST/api/whoami"
local CK; CK="$(cookie_de_prueba 2>/dev/null)" local CK; CK="$(cookie_de_prueba 2>/dev/null)"
if [[ ! "$CK" =~ ^leo~[0-9]+~[0-9a-f]{12}~[0-9a-f]{40}$ ]]; then
mal=$((mal+1)); echo " ✕ no pude armar la sesión de prueba de leo: ¿existe $DATOS/.sesion-secreto? ¿está leo en $HTP?"
fi
prueba "con sesión: /api/whoami = leo" '"user":"leo"' "$C -b hbox_sesion=$CK https://$HOST/api/whoami" prueba "con sesión: /api/whoami = leo" '"user":"leo"' "$C -b hbox_sesion=$CK https://$HOST/api/whoami"
prueba "con sesión: la página abre (200)" "200" "$C -b hbox_sesion=$CK -o /dev/null -w '%{http_code}' https://$HOST/tableros/pendientes/" prueba "con sesión: la página abre (200)" "200" "$C -b hbox_sesion=$CK -o /dev/null -w '%{http_code}' https://$HOST/tableros/pendientes/"
prueba "POST desde otro sitio → 403" "otro sitio" "$C -b hbox_sesion=$CK -H 'Origin: https://malo.example' -H 'Content-Type: application/json' -d '{}' https://$HOST/api/incidencias" prueba "POST desde otro sitio → 403" "otro sitio" "$C -b hbox_sesion=$CK -H 'Origin: https://malo.example' -H 'Content-Type: application/json' -d '{}' https://$HOST/api/incidencias"