#!/usr/bin/env bash
# 02-enviar-notificacion.sh — ingesta autenticada con la clave del paso 01.
#
# Demuestra:
#   * POST /api/notifications con token -> 201 + {"id"}
#   * Sin cabecera Authorization      -> 401 {"error":"unauthorized"}
#   * Token inventado                 -> 401 (mismo cuerpo, indistinguible)
#
# Uso:  ./02-enviar-notificacion.sh
set -euo pipefail

BASE="${VALET_BASE:-http://127.0.0.1:3458}"
WORK="${WORKDIR:-/tmp/opencode/valet-847}"
TOKEN="$(cat "$WORK/token.txt")"

echo "== POST /api/notifications  (Authorization: Bearer val_XXXXXXXX<…>) =="
RAW=$(curl -s -w $'\n%{http_code}' -X POST "$BASE/api/notifications" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"message":"Backup terminado con 3 avisos","origin":"backup-host","author":"nightly-job","level":"warning","metadata":{"warnings":3}}')
BODY=$(printf '%s' "$RAW" | head -n1)
CODE=$(printf '%s' "$RAW" | tail -n1)
echo "$BODY"
echo "[$CODE]"
# Guarda el id de la notificación para los pasos siguientes.
printf '%s' "$BODY" | python3 -c 'import sys,json;print(json.load(sys.stdin)["id"])' > "$WORK/nid.txt"

echo
echo "== sin cabecera Authorization -> 401 =="
curl -s -w "\n[%{http_code}]\n" -X POST "$BASE/api/notifications" \
  -H "Content-Type: application/json" -d '{"message":"x"}'

echo
echo "== Bearer con token inventado -> 401 (mismo cuerpo) =="
curl -s -w "\n[%{http_code}]\n" -X POST "$BASE/api/notifications" \
  -H "Authorization: Bearer val_estoNoExiste000000000000000000000000000000" \
  -H "Content-Type: application/json" -d '{"message":"x"}'

echo
echo "== Authorization mal formada (sin 'Bearer ') -> 401 =="
curl -s -w "\n[%{http_code}]\n" -X POST "$BASE/api/notifications" \
  -H "Authorization: val_algo" \
  -H "Content-Type: application/json" -d '{"message":"x"}'
