/* * Pruefungen fuer die Postfachanbindung: `npm test` im Verzeichnis server/. * * Absichtlich ohne Test-Framework - reines Node, kein zusaetzliches Paket. Es * geht um zwei Teile, die unbeaufsichtigt laufen und sich von Hand kaum pruefen * lassen: * * 1. extract.js - was aus einer Mail als Kontakt herausfaellt. Fehler hier * landen still in der Kontaktliste. * 2. graph.js - Token, Wiederholungen, Fehlerbehandlung. Der echte Dienst * liefert 429 und 401 erst dann, wenn es unpassend ist. * * Alles, was eine Datenbank braucht (store.js, contacts.js, sync.js), ist hier * nicht abgedeckt. */ process.env.MS_TENANT_ID ||= 'test-tenant'; process.env.MS_CLIENT_ID ||= 'test-client'; process.env.MS_CLIENT_SECRET ||= 'test-secret'; process.env.MS_MAILBOX ||= 'crm@perinco.de'; const { htmlToText, sanitizeHtml } = await import('../src/mail/html.js'); const { extractCandidates, parsePersonName, parseSignature, isFunctionalAddress } = await import( '../src/mail/extract.js' ); const { accessToken, graphRequest, resetTokenCache, testConnection, GraphError, mailboxPath } = await import('../src/mail/graph.js'); let failures = 0; let currentGroup = ''; function group(name) { currentGroup = name; console.log(`\n${name}`); } function check(name, condition, detail = '') { if (condition) { console.log(` ok ${name}${detail ? ` - ${detail}` : ''}`); } else { console.log(` FAIL ${name}${detail ? ` - ${detail}` : ''}`); failures += 1; } } const OPTIONS = { internalDomains: ['perinco.de', 'perinco.onmicrosoft.com'], mailbox: 'crm@perinco.de', }; const byEmail = (candidates, email) => candidates.find((entry) => entry.email === email); const byName = (candidates, name) => candidates.find((entry) => [entry.firstName, entry.lastName].filter(Boolean).join(' ') === name); // --------------------------------------------------------------------------- group('HTML in Text'); const outlookHtml = `
| Dr. Michael Wagner Head of IT Sourcing Beispiel Consulting GmbH Musterstraße 12a 60311 Frankfurt am Main Tel.: +49 69 1234-567 Mobil: +49 171 9876543 michael.wagner@beispiel-consulting.de |