Можно ли проверить, что действие недоступно через URL-адрес?

Я использую MvcContrib для написания модульных тестов для нашей таблицы маршрутизации в проекте MVC3. Все идет нормально.

Я хотел бы убедиться, что действие доступно только «внутри» приложения и что оно не может быть перенаправлено с использованием URL-адреса. Реализация использует атрибут ChildActionOnly, чтобы предотвратить доступ к этому. Я могу проверить это вручную, и это работает, но можно ли написать модульный тест, который утверждает, что этот URL-адрес недоступен?

Дэн


person Dan Kendall    schedule 04.04.2011    source источник


Ответы (1)


Я не знаю ничего в MVCContrib TestHelper, позволяющего добиться этого. Вы всегда можете использовать отражение, чтобы проверить наличие этого атрибута в соответствующем действии контроллера.

[TestMethod]
public void Index_action_on_home_controller_is_a_child_action_only() 
{
    Expression<Func<HomeController, ActionResult>> ex = c => c.Index();
    var mce = (MethodCallExpression)ex.Body;
    var atts = mce.Method.GetCustomAttributes(typeof(ChildActionOnlyAttribute), false);
    Assert.IsTrue(atts.Length > 0);
}
person Darin Dimitrov    schedule 04.04.2011
comment
Нравится реализация. Но ты заставил меня задуматься о том, чего я действительно хочу. Мне не нравится идея проверки наличия атрибута метода, и, тем не менее, это именно то, о чем я спрашивал в своем первоначальном вопросе. Я изменю вопрос в свете этого. Ваше здоровье. - person Dan Kendall; 04.04.2011