#!/bin/bash # Script pour tester rapidement les étapes de signature # Usage: ./test-signature-flow.sh # Charger les infos de la dernière demande créée INFO_FILE="test-odentas-sign-info.json" if [ ! -f "$INFO_FILE" ]; then echo "❌ Fichier $INFO_FILE introuvable" echo " Lancez d'abord: node test-odentas-sign.js" exit 1 fi # Extraire les IDs des signataires EMPLOYEUR_ID=$(cat "$INFO_FILE" | grep -A 4 '"role": "Employeur"' | grep '"signerId"' | cut -d'"' -f4) SALARIE_ID=$(cat "$INFO_FILE" | grep -A 4 '"role": "Salarié"' | grep '"signerId"' | cut -d'"' -f4) REQUEST_ID=$(cat "$INFO_FILE" | grep '"id"' | head -1 | cut -d'"' -f4) API_URL="${NEXT_PUBLIC_APP_URL:-http://localhost:3000}" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "🧪 Test du workflow de signature Odentas Sign" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" echo "Request ID: $REQUEST_ID" echo "Employeur ID: $EMPLOYEUR_ID" echo "Salarié ID: $SALARIE_ID" echo "" # Menu echo "Que voulez-vous tester ?" echo "1) Envoyer OTP Employeur" echo "2) Envoyer OTP Salarié" echo "3) Vérifier OTP Employeur" echo "4) Vérifier OTP Salarié" echo "5) Signer (Employeur)" echo "6) Signer (Salarié)" echo "7) Voir statut de la demande" echo "8) Tout tester automatiquement" echo "" read -p "Choix (1-8): " CHOICE case $CHOICE in 1) echo "" echo "📤 Envoi OTP Employeur..." curl -X POST "$API_URL/api/odentas-sign/signers/$EMPLOYEUR_ID/send-otp" | jq echo "" echo "📧 Vérifiez votre email paie@odentas.fr" echo "⚠️ Le code OTP est aussi affiché dans les logs du serveur Next.js" ;; 2) echo "" echo "📤 Envoi OTP Salarié..." curl -X POST "$API_URL/api/odentas-sign/signers/$SALARIE_ID/send-otp" | jq echo "" echo "📧 Vérifiez votre email renaud.breviere@gmail.com" echo "⚠️ Le code OTP est aussi affiché dans les logs du serveur Next.js" ;; 3) echo "" read -p "Entrez le code OTP reçu: " OTP_CODE echo "" echo "🔐 Vérification OTP Employeur..." RESPONSE=$(curl -s -X POST "$API_URL/api/odentas-sign/signers/$EMPLOYEUR_ID/verify-otp" \ -H "Content-Type: application/json" \ -d "{\"otp\": \"$OTP_CODE\"}") echo "$RESPONSE" | jq TOKEN=$(echo "$RESPONSE" | jq -r '.sessionToken // empty') if [ -n "$TOKEN" ]; then echo "" echo "✅ Session token obtenu !" echo "💾 Token sauvegardé dans .test-employeur-token" echo "$TOKEN" > .test-employeur-token fi ;; 4) echo "" read -p "Entrez le code OTP reçu: " OTP_CODE echo "" echo "🔐 Vérification OTP Salarié..." RESPONSE=$(curl -s -X POST "$API_URL/api/odentas-sign/signers/$SALARIE_ID/verify-otp" \ -H "Content-Type: application/json" \ -d "{\"otp\": \"$OTP_CODE\"}") echo "$RESPONSE" | jq TOKEN=$(echo "$RESPONSE" | jq -r '.sessionToken // empty') if [ -n "$TOKEN" ]; then echo "" echo "✅ Session token obtenu !" echo "💾 Token sauvegardé dans .test-salarie-token" echo "$TOKEN" > .test-salarie-token fi ;; 5) if [ ! -f ".test-employeur-token" ]; then echo "❌ Token employeur introuvable. Vérifiez d'abord l'OTP (option 3)" exit 1 fi TOKEN=$(cat .test-employeur-token) # Image de signature de test (carré rouge 100x50) SIG_B64="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAyCAYAAACqNX6+AAAABmJLR0QA/wD/AP+gvaeTAAAAeklEQVR4nO3QMQEAAAjAMMC/52ECvlRA00ASAgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQcNkFzQABOWLnlYwAAAAASUVORK5CYII=" echo "" echo "✍️ Enregistrement signature Employeur..." curl -X POST "$API_URL/api/odentas-sign/signers/$EMPLOYEUR_ID/sign" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ -d "{\"signatureImageBase64\": \"$SIG_B64\", \"consentText\": \"Je consens à signer électroniquement ce document.\"}" | jq ;; 6) if [ ! -f ".test-salarie-token" ]; then echo "❌ Token salarié introuvable. Vérifiez d'abord l'OTP (option 4)" exit 1 fi TOKEN=$(cat .test-salarie-token) # Image de signature de test (carré rouge 100x50) SIG_B64="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAyCAYAAACqNX6+AAAABmJLR0QA/wD/AP+gvaeTAAAAeklEQVR4nO3QMQEAAAjAMMC/52ECvlRA00ASAgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQcNkFzQABOWLnlYwAAAAASUVORK5CYII=" echo "" echo "✍️ Enregistrement signature Salarié..." curl -X POST "$API_URL/api/odentas-sign/signers/$SALARIE_ID/sign" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ -d "{\"signatureImageBase64\": \"$SIG_B64\", \"consentText\": \"Je consens à signer électroniquement ce document.\"}" | jq ;; 7) echo "" echo "📊 Statut de la demande..." curl "$API_URL/api/odentas-sign/requests/$REQUEST_ID" | jq ;; 8) echo "" echo "🤖 Test automatique complet..." echo "" # 1. OTP Employeur echo "1️⃣ Envoi OTP Employeur..." curl -s -X POST "$API_URL/api/odentas-sign/signers/$EMPLOYEUR_ID/send-otp" > /dev/null echo " Consultez les logs serveur pour le code OTP" echo "" # 2. OTP Salarié echo "2️⃣ Envoi OTP Salarié..." curl -s -X POST "$API_URL/api/odentas-sign/signers/$SALARIE_ID/send-otp" > /dev/null echo " Consultez les logs serveur pour le code OTP" echo "" echo "⚠️ Pour continuer le test automatique, vous devez :" echo " 1. Relever les codes OTP dans les logs serveur" echo " 2. Exécuter les options 3-6 manuellement" ;; *) echo "❌ Choix invalide" exit 1 ;; esac echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"