Come si effettua l'autorizzazione della pagina Web di unit test utilizzando ASP.NET MVC?
-
02-07-2019 - |
Domanda
Supponiamo che tu abbia una pagina del profilo a cui può accedere solo il proprietario di quel profilo. Questa pagina del profilo si trova in:
Utente / Profilo / {userID}
Ora, immagino che per impedire l'accesso a questa pagina da parte di altri utenti, potresti strutturare la funzione Profilo della tua classe UserController per verificare l'identità della sessione corrente:
HttpContext.Current.User.Identity.Name
Se l'id corrisponde a quello nell'URL, si procede. Altrimenti reindirizzi a una sorta di pagina di errore.
La mia domanda è: come testate qualcosa del genere? Immagino che sia necessario utilizzare una sorta di iniezione di dipendenza invece di HttpContext nel controller per eseguire il controllo, ma non sono chiaro quale sia il modo migliore per farlo. Qualsiasi consiglio sarebbe utile.
Soluzione 2
Ho finito con il " UserNameFilter " mostrato in post di blog . Funziona come un fascino e un test di unità facile.
Altri suggerimenti
Il link sopra è buono. Vorrei anche aggiungere che invece di controllare a livello di codice il valore User.Identity.Name, è necessario utilizzare gli attributi Autorizza come indicato nell'articolo:
http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx
Probabilmente puoi farlo usando un falso per il contesto del controller. Dai un'occhiata a questo articolo: http://stephenwalther.com/blog/archive/2008/07/01/asp-net-mvc-tip-12-faking-the-controller-context.aspx
Qui entra in gioco il derisione, con un falso HttpContext.