Copre le parti nuove e una trappola che sarebbe passata inosservata. - unit: completamento del profilo (30/30/30/10), stato di scadenza dei documenti, export CSV, conversione riga <-> modello, anagrafica di squadra. - unit: risoluzione dei permessi admin, incluso il fatto che con una sessione attiva decide il database e la lista di nomi non conta più. - integration (schema-profili): verifica su un database vero le colonne che il codice legge, il bucket privato e la chiusura verso l'utente anonimo. - e2e: /admin entra nell'elenco delle schermate verificate. schema-profili tenta scritture da anonimo per dimostrare che la RLS le respinge, e poi rilegge la riga: su un UPDATE che tocca zero righe PostgREST risponde 2xx, quindi fidarsi del codice di risposta darebbe un falso verde. Si salta da solo dove M2/M3 non sono ancora applicate, indicandolo nel motivo. Verificato: 8/8 contro lo stack locale (che ha M2/M3), 21/21 file con npm run test:all contro il progetto cloud. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
25 lines
1.1 KiB
TypeScript
25 lines
1.1 KiB
TypeScript
/** Check dei permessi di amministrazione: `bun test/unit/ruoli.test.ts`. */
|
|
import assert from "node:assert/strict";
|
|
import { risolviAdmin } from "@/lib/ruoli";
|
|
import { adminNomi, giocatori } from "@/lib/crapp-data";
|
|
|
|
const referente = giocatori.find((g) => adminNomi.includes(g.nome))!;
|
|
const chiunque = giocatori.find((g) => !adminNomi.includes(g.nome))!;
|
|
|
|
// Con una sessione attiva decide il database, e basta: la lista di nomi non conta più.
|
|
assert.equal(risolviAdmin(true, chiunque.id), true, "il ruolo nel database concede");
|
|
assert.equal(
|
|
risolviAdmin(false, referente.id),
|
|
false,
|
|
"il ruolo nel database nega anche a chi è nella lista dei nomi",
|
|
);
|
|
assert.equal(risolviAdmin(true, null), true);
|
|
|
|
// Senza sessione (null) resta il ponte temporaneo sulla lista di nomi.
|
|
assert.equal(risolviAdmin(null, referente.id), true);
|
|
assert.equal(risolviAdmin(null, chiunque.id), false);
|
|
assert.equal(risolviAdmin(null, null), false, "nessuna identità, nessun permesso");
|
|
assert.equal(risolviAdmin(null, "gXX"), false, "un id sconosciuto non concede nulla");
|
|
|
|
console.log("ruoli: ok");
|