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");
|