From b7ceece4edc3900702ecac2e8ea1fd64b78363b4 Mon Sep 17 00:00:00 2001 From: AdrianoDev Date: Fri, 21 Aug 2026 19:38:56 +0200 Subject: [PATCH] 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) --- tests/longevity/anagrafica.test.ts | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/tests/longevity/anagrafica.test.ts b/tests/longevity/anagrafica.test.ts index 1114c7c..83ac0ce 100644 --- a/tests/longevity/anagrafica.test.ts +++ b/tests/longevity/anagrafica.test.ts @@ -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([]); });