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:
@@ -46,13 +46,27 @@ describe('anagrafica pseudonimizzata', () => {
|
|||||||
expect(etaAllaData('1988-12-31', '2026-08-21')).toBe(37); // compleanno non ancora passato
|
expect(etaAllaData('1988-12-31', '2026-08-21')).toBe(37); // compleanno non ancora passato
|
||||||
});
|
});
|
||||||
|
|
||||||
it('nessun altro modulo apre entrambe le connessioni', () => {
|
it('nessun file in src/ (escluso anagrafica.ts e db.ts) apre entrambe le connessioni', () => {
|
||||||
const dir = join(process.cwd(), 'src/lib/longevity');
|
const srcDir = join(process.cwd(), 'src');
|
||||||
const colpevoli: string[] = [];
|
const colpevoli: string[] = [];
|
||||||
for (const f of readdirSync(dir)) {
|
|
||||||
if (!f.endsWith('.ts') || f === 'anagrafica.ts' || f === 'db.ts') continue;
|
const files = readdirSync(srcDir, { recursive: true, withFileTypes: false }) as string[];
|
||||||
const src = readFileSync(join(dir, f), 'utf8');
|
for (const f of files) {
|
||||||
if (src.includes('createIdentityDb') && src.includes('createLongevityDb')) colpevoli.push(f);
|
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([]);
|
expect(colpevoli).toEqual([]);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user