what tag route pages net microsoft for aspnet asp asp.net-mvc unit-testing tdd mocking forms-authentication

asp.net-mvc - route - tag helpers asp net core



¿Cómo puedo probar la unidad de mi controlador ASP.NET MVC que usa FormsAuthentication? (1)

Comenzaría escribiendo una interfaz y una clase contenedora que encapsularán esta lógica y luego usarán la interfaz en mi controlador:

public interface IAuth { void DoAuth(string userName, bool remember); } public class FormsAuthWrapper : IAuth { public void DoAuth(string userName, bool remember) { FormsAuthentication.SetAuthCookie(userName, remember); } } public class MyController : Controller { private readonly IAuth _auth; public MyController(IAuth auth) { _auth = auth; } }

Ahora IAuth podría ser fácilmente burlado en una prueba unitaria y verificar que el controlador llama a los métodos esperados. Yo NO probaría unitariamente la clase FormsAuthWrapper porque simplemente delega la llamada a FormsAuthentication que hace lo que se supone que debe hacer (Microsoft garantiza :-)).

Estoy trabajando con una solución ASP.NET MVC de forma controlada por pruebas y deseo iniciar sesión en un usuario de mi aplicación mediante la autenticación de formularios. El código con el que me gustaría terminar en el controlador se ve así:

FormsAuthentication.SetAuthCookie(userName, false);

Mi pregunta es ¿cómo escribo una prueba para justificar este código?

¿Hay alguna manera de verificar que se haya llamado al método SetAuthCookie con los parámetros correctos?

¿Hay alguna forma de inyectar un FormsAuthentication falso / falso?