longevity: l'endpoint del questionario apre solo longevity, e il test anti-giunzione diventa strutturale
L'endpoint /api/longevity/questionario apriva anche identity (getIdentityDb) per risolvere il client_code, violando la garanzia della spec (§4): un solo modulo, anagrafica.ts, tiene insieme le due connessioni. La logica di giunzione era gia' al posto giusto (chiamava codicePerUtente, che sta in anagrafica.ts) ma l'APERTURA delle connessioni no. - anagrafica.ts: nuova codicePerUtenteLoggato(userId), apre lei stessa identity via getIdentityDb() (e' il modulo autorizzato) e delega a codicePerUtente. L'endpoint chiama solo questa: apre esclusivamente longevity, per salvare. - tests/longevity/anagrafica.test.ts: il test anti-giunzione cercava due nomi letterali (createIdentityDb/createLongevityDb) e non vedeva getIdentityDb/ getLongevityDb, nati dopo di lui - la stessa lezione del semaforo nel Task 1 (proteggere il nome invece della cosa). Ora e' strutturale: segnala qualunque file (esclusi anagrafica.ts e db.ts) che contenga sia "Identity" sia "Longevity", in qualunque forma. Verificato con un file finto sotto src/ che apriva entrambe con i nomi nuovi: il test diventa rosso, poi torna verde dopo la cancellazione.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import type { APIRoute } from 'astro';
|
||||
import { getIdentityDb, getLongevityDb } from '../../../lib/longevity/db';
|
||||
import { codicePerUtente } from '../../../lib/longevity/anagrafica';
|
||||
import { getLongevityDb } from '../../../lib/longevity/db';
|
||||
import { codicePerUtenteLoggato } from '../../../lib/longevity/anagrafica';
|
||||
import { salvaDalForm } from '../../../lib/longevity/vista';
|
||||
import { CAMPI_LIBERI } from '../../../lib/longevity/questionario';
|
||||
|
||||
@@ -11,8 +11,10 @@ const json = (status: number, body: object) =>
|
||||
|
||||
export const POST: APIRoute = async ({ request, locals }) => {
|
||||
// Il codice cliente si ricava SEMPRE dalla sessione dell'utente loggato (spec §8), mai dal
|
||||
// corpo della richiesta: qui infatti il corpo non viene mai letto per questo campo.
|
||||
const codice = codicePerUtente(getIdentityDb(), locals.user!.id);
|
||||
// corpo della richiesta: qui infatti il corpo non viene mai letto per questo campo. La
|
||||
// risoluzione passa da anagrafica.ts (l'unico modulo autorizzato a toccare quella
|
||||
// connessione): questo file apre solo longevity, per salvare.
|
||||
const codice = codicePerUtenteLoggato(locals.user!.id);
|
||||
if (!codice) return json(403, { error: 'Nessun fascicolo cliente associato a questo utente.' });
|
||||
|
||||
let data: Record<string, unknown>;
|
||||
|
||||
Reference in New Issue
Block a user