7.6 KiB
7.6 KiB
🧪 Test Complet Odentas Sign + Vérification + Ledger
📋 Prérequis
- Serveur Next.js lancé :
npm run dev - Variables d'environnement configurées dans
.env.local:AWS_ACCESS_KEY_ID=... AWS_SECRET_ACCESS_KEY=... AWS_REGION=eu-west-3 ODENTAS_SIGN_BUCKET=odentas-sign AWS_LAMBDA_SIGN_FUNCTION=odentas-pades-sign NEXT_PUBLIC_APP_URL=http://localhost:3000 - PDF de test :
test-contrat.pdfà la racine du projet - Migration appliquée :
20251029_add_signature_metadata_to_signers.sql
🚀 Lancer le test
node test-odentas-sign-complete.js
📖 Ce que fait le script
Étape 1 : Préparation (automatique)
- ✅ Upload du PDF vers S3 (
source/test/TEST-xxx.pdf) - ✅ Création de la demande de signature avec 2 signataires
Étape 2 : Affichage des liens
Le script affiche les 2 liens de signature :
1. Employeur - Odentas Paie
http://localhost:3000/signer/[request-id]/[employeur-id]
2. Salarié - Renaud Breviere
http://localhost:3000/signer/[request-id]/[salarie-id]
Étape 3 : Signature manuelle (VOUS)
3.1. Ouvrir le premier lien (Employeur)
- Le navigateur s'ouvre sur la page de vérification OTP
- Cliquer sur "Envoyer le code"
- Récupérer le code OTP dans les logs du serveur :
[OTP] 🔐 CODE OTP GÉNÉRÉ (MODE TEST): 123456 - Entrer le code dans l'interface
- Dessiner la signature
- Valider
3.2. Ouvrir le second lien (Salarié)
- Même processus que l'employeur
- Nouveau code OTP dans les logs
- Signer et valider
Étape 4 : Attente automatique
Le script vérifie toutes les 5 secondes si les 2 signatures sont complètes :
⏳ Signatures: 0/2
⏳ Signatures: 1/2
⏳ Signatures: 2/2
✅ Toutes les signatures sont complètes !
Étape 5 : Scellement PAdES (automatique)
- 🔒 Appel de l'API
/api/odentas-sign/seal-document - 🔒 Invocation de la Lambda
odentas-pades-sign2 fois :- Signature Employeur avec
/Name="Odentas Paie"et/Reason="Signature employeur" - Signature Salarié avec
/Name="Renaud Breviere"et/Reason="Signature salarié"
- Signature Employeur avec
- ✅ PDF final avec 2 signatures PAdES :
signed-pades/TEST-xxx-final.pdf
Étape 6 : Création de la preuve (automatique)
- 📜 Appel de l'API
/api/signatures/create-verification - 📜 Création du ledger immuable dans S3 Compliance Lock :
- Bucket :
odentas-signatures-ledger - Clé :
verifications/[verification-id].json - Retention : 10 ans (mode COMPLIANCE)
- Bucket :
- 📄 Génération du PDF de preuve avec QR code
- ✅ Enregistrement dans Supabase
signature_verifications
Étape 7 : Résultats
🎉 TEST COMPLET RÉUSSI !
🔗 LIEN DE VÉRIFICATION PUBLIQUE:
http://localhost:3000/verify/[verification-id]
🔒 LEDGER IMMUABLE (S3 Compliance Lock):
Clé S3: verifications/abc-123.json
Verrouillé jusqu'au: 29/10/2035 14:30:00
Mode: COMPLIANCE (aucune suppression possible)
📄 PDF DE PREUVE:
https://odentas-sign.s3.eu-west-3.amazonaws.com/evidence/proofs/...
🔍 Vérifier les résultats
1. Page de vérification publique
Ouvrir le lien affiché : http://localhost:3000/verify/[id]
Vous devriez voir :
- ✅ Badge "Signature Électronique Valide"
- ✅ Badges de conformité (PAdES ETSI, RSA 2048, SHA-256)
- ✅ Informations du document
- ✅ Sceau électronique Odentas
- ✅ Horodatage
- ✅ Section "Preuve Immuable" avec :
- Statut du verrouillage (Actif)
- Intégrité vérifiée
- Date d'expiration (10 ans)
- Clé S3 du ledger
2. Dans Supabase
-- Voir la demande
SELECT * FROM sign_requests WHERE ref LIKE 'TEST-%' ORDER BY created_at DESC LIMIT 1;
-- Voir les signataires (avec les nouvelles colonnes)
SELECT
role,
name,
signature_name, -- ← Nouveau
signature_reason, -- ← Nouveau
signed_at
FROM signers
WHERE request_id = '[request_id]';
-- Voir la preuve de vérification
SELECT * FROM signature_verifications ORDER BY created_at DESC LIMIT 1;
-- Vérifier le ledger
SELECT
id,
s3_ledger_key,
s3_ledger_locked_until,
s3_ledger_integrity_verified
FROM signature_verifications
WHERE s3_ledger_key IS NOT NULL
ORDER BY created_at DESC LIMIT 1;
3. Dans S3
# Voir le PDF signé final
aws s3 ls s3://odentas-sign/signed-pades/ --recursive | grep TEST
# Voir le ledger immuable
aws s3 ls s3://odentas-signatures-ledger/verifications/ --recursive
# Télécharger le ledger pour inspection
aws s3 cp s3://odentas-signatures-ledger/verifications/[id].json ./ledger-test.json
# Vérifier l'Object Lock
aws s3api head-object \
--bucket odentas-signatures-ledger \
--key verifications/[id].json
4. Dans Adobe Acrobat
- Télécharger le PDF signé final depuis S3
- Ouvrir dans Adobe Acrobat Reader
- Panneau "Signatures" (à gauche) :
✓ Odentas Media SAS Nom: Odentas Paie ← signature_name Raison: Signature employeur ← signature_reason ✓ Odentas Media SAS Nom: Renaud Breviere ← signature_name Raison: Signature salarié ← signature_reason
🐛 Dépannage
Le code OTP n'apparaît pas dans les logs
- Vérifier que les emails sont en mode TEST (
paie@odentas.frou@example.com) - Regarder les logs du serveur Next.js dans le terminal
Erreur "Lambda invocation failed"
- Vérifier que la Lambda
odentas-pades-signexiste - Vérifier que les credentials AWS sont corrects
- Vérifier que la Lambda accepte le paramètre
signatureMetadata
Erreur "S3 bucket not found"
- Le bucket
odentas-signatures-ledgerdoit exister avec Object Lock activé - Créer avec :
aws s3api create-bucket \ --bucket odentas-signatures-ledger \ --region eu-west-3 \ --create-bucket-configuration LocationConstraint=eu-west-3 \ --object-lock-enabled-for-bucket
Le script reste bloqué sur "En attente des signatures"
- Ouvrir les liens de signature dans le navigateur
- Signer manuellement les deux parties
- Le script vérifie toutes les 5 secondes
📊 Données de test générées
Après le test, vous aurez :
test-complete-info.json: Infos de la demande de signature- Entrée dans
sign_requests(ref: TEST-xxx) - 2 entrées dans
signersavecsignature_nameetsignature_reason - Entrée dans
sign_assets(PDF scellé) - Entrée dans
signature_verifications(preuve publique) - Ledger JSON dans S3 Compliance Lock (10 ans de retention)
🧹 Nettoyage
-- Supprimer les données de test
DELETE FROM signature_verifications WHERE document_name LIKE '%Test%';
DELETE FROM sign_requests WHERE ref LIKE 'TEST-%';
# Supprimer les fichiers S3 (attention : le ledger est IMMUTABLE !)
aws s3 rm s3://odentas-sign/source/test/ --recursive
aws s3 rm s3://odentas-sign/signed-pades/ --recursive --exclude "*" --include "TEST-*"
# Le ledger ne peut PAS être supprimé (Compliance Lock activé)
# Il expirera automatiquement après 10 ans
✅ Critères de succès
Le test est réussi si :
- ✅ Les 2 liens de signature s'affichent
- ✅ Les 2 signatures sont enregistrées
- ✅ Le PDF est scellé avec 2 signatures PAdES
- ✅ La preuve de vérification est créée
- ✅ Le ledger S3 Compliance Lock est créé (vérifiable dans S3)
- ✅ La page de vérification affiche correctement toutes les infos
- ✅ Le PDF ouvert dans Adobe montre 2 signatures avec les bons noms
- ✅ Le ledger est verrouillé pour 10 ans (mode COMPLIANCE)
Note : Ce test utilise des données réelles (vraie Lambda, vrai S3, vraie signature PAdES). Le ledger créé sera réellement immutable pendant 10 ans.