test(anagrafica): allarga la scansione a tutto src/ per rilevare giunzioni non autorizzate

Rafforza il test che verifica l'isolamento tra identity e longevity.
Invece di scandire solo src/lib/longevity/, ora scandisce ricorsivamente
tutto src/ inclusi .astro e .ts, saltando node_modules e dist.

Preserva le due sole esclusioni autorizzate: anagrafica.ts (il modulo
autorizzato) e db.ts (dove le factory sono definite).

In questo modo il test rileva violazioni anche da route API e pagine
Astro, non solo da moduli della cartella longevity.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-21 19:38:56 +02:00
parent 9943312071
commit b7ceece4ed
+20 -6
View File
@@ -46,13 +46,27 @@ describe('anagrafica pseudonimizzata', () => {
expect(etaAllaData('1988-12-31', '2026-08-21')).toBe(37); // compleanno non ancora passato
});
it('nessun altro modulo apre entrambe le connessioni', () => {
const dir = join(process.cwd(), 'src/lib/longevity');
it('nessun file in src/ (escluso anagrafica.ts e db.ts) apre entrambe le connessioni', () => {
const srcDir = join(process.cwd(), 'src');
const colpevoli: string[] = [];
for (const f of readdirSync(dir)) {
if (!f.endsWith('.ts') || f === 'anagrafica.ts' || f === 'db.ts') continue;
const src = readFileSync(join(dir, f), 'utf8');
if (src.includes('createIdentityDb') && src.includes('createLongevityDb')) colpevoli.push(f);
const files = readdirSync(srcDir, { recursive: true, withFileTypes: false }) as string[];
for (const f of files) {
const path = join(srcDir, f);
// Salta node_modules e dist
if (f.includes('node_modules') || f.includes('dist')) continue;
// Accetta solo .ts e .astro
if (!f.endsWith('.ts') && !f.endsWith('.astro')) continue;
// Esclude i moduli autorizzati
if (f === 'lib/longevity/anagrafica.ts' || f === 'lib/longevity/db.ts') continue;
const src = readFileSync(path, 'utf8');
if (src.includes('createIdentityDb') && src.includes('createLongevityDb')) {
colpevoli.push(f);
}
}
expect(colpevoli).toEqual([]);
});