#!/usr/bin/env bash # Seed a confirmed payment_session for the test customer and fire a general blast. # Used by Maestro flows that drive the mitra side and need a customer's request to # arrive without running a second app. # # Reads from .maestro/config.yaml env (BACKEND_URL, TEST_CUSTOMER_ID, TEST_CUSTOMER_JWT). set -euo pipefail : "${BACKEND_URL:?BACKEND_URL must be set in .maestro/config.yaml}" : "${TEST_CUSTOMER_JWT:?TEST_CUSTOMER_JWT must be set in .maestro/config.yaml}" # Step 1: create a payment session (paid tier, 30 minutes) echo "Creating payment session..." ps_response=$(curl -fsSL -X POST "$BACKEND_URL/api/client/payment-sessions" \ -H "Authorization: Bearer $TEST_CUSTOMER_JWT" \ -H "Content-Type: application/json" \ -d '{"duration_minutes": 30}') payment_session_id=$(echo "$ps_response" | jq -r '.data.id') echo " payment_session_id=$payment_session_id" # Step 2: confirm the payment session echo "Confirming payment session..." curl -fsSL -X POST "$BACKEND_URL/api/client/payment-sessions/$payment_session_id/confirm" \ -H "Authorization: Bearer $TEST_CUSTOMER_JWT" \ -H "Content-Type: application/json" \ -d '{}' > /dev/null # Step 3: fire the chat request (general blast) echo "Firing general blast..." curl -fsSL -X POST "$BACKEND_URL/api/client/chat-requests" \ -H "Authorization: Bearer $TEST_CUSTOMER_JWT" \ -H "Content-Type: application/json" \ -d "{\"payment_session_id\":\"$payment_session_id\",\"topic_sensitivity\":\"regular\"}" > /dev/null # Persist payment_session_id so follow-up scripts (e.g. customer_cancel_latest_blast.sh) # can read it without a peek-payment endpoint. /tmp lifetime is sufficient # for one test run. echo "$payment_session_id" > /tmp/halobestie_last_blast_payment_session_id echo "OK — blast fired. Mitra should receive the WS event within ~1s."