Files
ThothII/docs/testing/authentication-manual-acceptance.md

6.0 KiB

Accettazione di shell e autenticazione

Questa matrice è un gate di rilascio, non una dichiarazione che le prove server siano già state eseguite. Registrare ambiente, data, SHA ThothII/portale, immagini, modalità effettive e risultato di ogni caso. Usare account di prova autorizzati; non incollare token, cookie, password o dati clinici nelle evidenze.

Configurazione prima della prova

  • Full/local: descrittore shell.mode: full, default en, auth.yaml local; AUTH_MODE non impostato. Scegliere browser/origin coerenti con publicUrl.
  • Full/OIDC: full, configurazione OIDC valida e callback esatta PUBLIC_URL/api/auth/oidc/callback; AUTH_MODE non impostato.
  • Embedded/Omics: embedded/omics-portal, core upstream senza auth.yaml/runtime projection, sessione portale e capability; API attraverso il solo proxy fidato.
  • Config pubblico caricato prima del modulo React, no-store e senza segreti; connessioni private del core non raggiungibili da client non fidati.

Full, senza documento Omics

Prova Risultato atteso
Primo accesso con preferenze browser assenti Header ThothII; inglese e light; nessun errore per elementi Omics mancanti
Login locale valido/errato Identità verificata nel primo caso; errore generico e nessun contenuto protetto nel secondo
Remember me Sessione persistente secondo TTL local; senza Remember me cookie non persistente
OIDC con provider raggiungibile Redirect, callback validata, nome e permessi dall'identità verificata
OIDC con claim gruppi invalido Login rifiutato; nessuna informazione sensibile nel browser
OIDC con gruppi validi ma non mappati Nessun ruolo, accesso alle route protette negato
Nome → Log out Sessione ThothII revocata; una nuova richiesta protetta con quella sessione non accede
Nuovo login OIDC dopo logout Può riusare SSO provider; nessuna promessa di logout globale
Disabilitazione/ruolo/password/logout-all locale La sessione precedente viene invalidata al controllo server
Cambio lingua e tema Etichette aggiornate, preferenze ricordate, leggibilità anche di popup e griglie
Fullscreen, Esc, rifiuto del browser Stato/icona coerenti; errore visibile su rifiuto, nessun falso fullscreen
Schermo stretto/largo Margini simmetrici almeno 20px; header adattivo; nessuna rotellina amministrativa

Embedded, dal portale reale

Prova Risultato atteso
Utente già autenticato e autorizzato → Datamart Builder Nessun secondo login e un solo header, quello Omics
Utente senza capability o sessione scaduta Pagina/API protette rifiutate, non UI autenticata ottenuta da eventi DOM
/datamart-builder/api/me autorizzato Issuer portal, subject stabile, ruoli attesi; session/CSRF ThothII null
Utente normale vs amministratore Azioni amministrative protette server-side; flag admin non controllabile dal client
Header identità inventati dal client, anche admin Non concedono accesso né elevazione; il proxy usa soltanto la verifica Django
Richiesta cross-origin a un'operazione di prova Rifiutata senza modificare dati; testare con risorse fittizie in ambiente isolato
IT/EN selezionato prima dell'apertura Locale iniziale uguale a quello Django confermato
Cambio lingua dal form Omics Reload normale con CSRF/next; selezione sessione conservata, nessuna generazione automatica
Cambio tema con menu/form aperti UI, popup e griglia seguono Omics, senza controlli locali duplicati
Fullscreen dall'header e uscita con Esc Stato reale sincronizzato anche dentro ThothII
Logout Omics e ritorno in una seconda scheda Al ricontrollo /me lo stato protetto viene rimosso; rientro tramite Omics
Riconnessione SSE dopo scadenza Verifica accesso prima di riprendere; nessun aggiramento del proxy
403 su una sola operazione con /me ancora valido Errore operativo, non logout indiscriminato
Contesto host mancante/tema invalido Errore d'integrazione; niente fallback full o login autonomo
API, config e asset dopo rebuild Prefissi corretti, config no-store, manifest aggiornato dopo la sua cache di 30 s

Le prove con header inventati devono attraversare l'ingresso pubblico protetto, non certificare la sicurezza inviando header direttamente al core che per contratto si fida del proxy. L'isolamento di rete del core va verificato a parte. Non promettere che il logout chiuda immediatamente tutti gli SSE già aperti: il proxy autorizza all'apertura e i ricontrolli avvengono sulle nuove richieste.

Continuità del workflow, entrambe le modalità

Prova Risultato atteso
Nuova sessione con UI italiana/inglese interaction_language acquisita alla creazione; domande e scelte nella lingua salvata
Cambio UI dopo creazione e ripresa La lingua della sessione resta invariata
Vecchio manifest senza lingua Prima ripresa fissa la lingua workspace secondo il criterio di compatibilità
Bozza/modifica amministrativa e navigazione Conferma prima della perdita; annullamento conserva la modifica
Reload con selezione esistente Riapre documenti senza avviare Pi/generazione automaticamente
Cambio utente Nessuno stato protetto della precedente identità riutilizzato
SQL, identificatori, Evidence e Memory Contenuti originali non tradotti/riscritti dal cambio UI

Copertura automatica e limiti

Frontend: AuthGate.test.tsx, authState.test.ts, OmicsPortalAdapter.test.ts, AppShell.host.test.tsx, test di stream/sessioni e e2e/ui-visual-review.spec.ts. Backend: test di auth, principal, route e isolamento della configurazione. CLI: normalizzazione shell e proiezioni. I test Omics isolati sono descritti nel suo docs/thothii-integration.md.

I test automatici con API/IdP simulati non sostituiscono callback reali, sessioni Omics, permessi di rete, TLS, cookie reali e interazioni fra schede sul server. Prima di chiudere il rilascio indicare esplicitamente prove superate, non eseguite e motivi del rinvio. Procedure e rollback: shell e deploy.