У меня есть тест MSpec, чтобы проверить, правильно ли моя авторизация форм перенаправляет неавторизованный запрос, однако тестовый вызов защищенного действия просто идет прямо к нему, не будучи пойманным авторизацией.
Из того, что я читал, людям обычно требуется поддельная аутентификация для проверки действий, выполняемых с помощью тега [Authorize], поэтому я не понимаю, как это просто перейти к методу защищенного действия.
Если кто-то может помочь, это будет высоко ценится, это моя первая попытка использовать MSpec, и похоже, что она должна быть действительно полезной, я просто не могу заставить ее работать!
Контроллер:
[Authorize]
public class HomeController : Controller
{
public ActionResult Index()
{
return View("Index", null);
}
}
Тест:
[Subject("Login and Authentication")]
public class when_protected_page_invoked
{
private static HomeController homeController;
private static SecurityController securityController;
private static ActionResult result;
private Establish context = () =>
{
homeController = new HomeController();
securityController = new SecurityController(new SecurityService(new NHibernateRepository<User>(), new NHibernateRepository<Session>()));
};
private Because of = () => result = homeController.Index();
private It should_redirect_to_securityController = () =>
{
result.ShouldBeARedirectToRoute().And().ControllerName().ShouldEqual("Security");
};
}
Когда я запускаю тест в данный момент, он завершается неудачей, за исключением того, что возвращается ViewResult, а если я отлаживаю, он просто возвращает результат Home.Index ().