/** * Test complet: Signature + Création de la preuve + Génération du PDF de preuve * * Prérequis: * 1. Migration Supabase appliquée * 2. Serveur dev lancé (npm run dev) * 3. Authentification Supabase valide */ import fs from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const OUTPUT_DIR = path.join(__dirname, 'test-signature-output'); const VERIFICATION_DATA_PATH = path.join(OUTPUT_DIR, 'verification-data.json'); const API_URL = 'http://localhost:3000'; async function main() { console.log('🧪 Test complet: Création de preuve de signature\n'); // Vérifier que les données de signature existent if (!fs.existsSync(VERIFICATION_DATA_PATH)) { console.error('❌ Fichier verification-data.json non trouvé!'); console.error(' Exécutez d\'abord: node test-signature-complete.mjs\n'); process.exit(1); } // Charger les données de vérification const verificationData = JSON.parse(fs.readFileSync(VERIFICATION_DATA_PATH, 'utf-8')); console.log('✅ Données de vérification chargées\n'); // Note: Pour appeler l'API, il faut être authentifié // En production, l'API serait appelée depuis le frontend avec une session valide console.log('📝 Données à envoyer à l\'API:'); console.log(JSON.stringify(verificationData, null, 2)); console.log('\n'); console.log('🔧 Pour tester manuellement:\n'); console.log('1. Appliquez la migration Supabase:'); console.log(' supabase db push'); console.log(' OU'); console.log(' Copiez le contenu de supabase/migrations/20251028_signature_verifications.sql'); console.log(' dans le SQL Editor de Supabase Dashboard\n'); console.log('2. Lancez le serveur dev:'); console.log(' npm run dev\n'); console.log('3. Visitez:'); console.log(` ${API_URL}/test-signature-verification\n`); console.log('4. Le système va automatiquement:'); console.log(' ✅ Créer une entrée dans signature_verifications'); console.log(' ✅ Générer un QR code'); console.log(' ✅ Créer un PDF de preuve'); console.log(' ✅ Afficher l\'URL de vérification publique\n'); console.log('5. Scannez le QR code ou visitez l\'URL pour voir la page de vérification\n'); // Sauvegarder un fichier HTML de test local const htmlPath = path.join(OUTPUT_DIR, 'test-verification.html'); const html = generateTestHtml(verificationData); fs.writeFileSync(htmlPath, html); console.log(`📄 Page HTML de test créée: ${htmlPath}`); console.log(' Ouvrez ce fichier dans un navigateur pour voir un aperçu\n'); console.log('✅ Tout est prêt pour le test !\n'); } function generateTestHtml(data) { return ` Aperçu - Vérification de Signature
Odentas Sign

Vérification de Signature

Certificat de signature électronique

Signature Techniquement Valide

La signature est techniquement correcte mais utilise un certificat auto-signé non reconnu par les autorités de certification européennes.

Document Signé

Nom du document

${data.document_name}

Signataire

${data.signer_name}

Email

${data.signer_email}

Date de signature

${new Date(data.timestamp.timestamp).toLocaleDateString('fr-FR')}

Télécharger le document signé

Détails Techniques

Format PAdES-BASELINE-B
Algorithme RSASSA-PSS avec SHA-256
Intégrité du document vérifiée

Hash SHA-256

${data.signature_hash}

Odentas Media SAS - Signature électronique conforme PAdES-BASELINE-B

`; } main().catch(error => { console.error('\n❌ ERREUR:', error); process.exit(1); });