用于检查操作的全局授权过滤器的单元测试

时间:2018-01-04 20:22:45

标签: c# asp.net-mvc unit-testing

我正在使用Microsoft.VisualStudio.TestTools.UnitTesting和Moq为使用FilterConfig.cs添加了自定义授权过滤器的ASP.NET MVC 5应用编写单元测试:

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new AuthorizeRedirect());
        //...
    }
}

这是自定义授权属性:

public class AuthorizeRedirect: AuthorizeAttribute
{
    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        base.HandleUnauthorizedRequest(filterContext);

        if (filterContext.RequestContext.HttpContext.User.Identity.IsAuthenticated)
        {
            filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new
            {
                action = "Redirect",
                controller = "Error"
            }));
        }
    }
}

我正在使用IsAnonymous方法的略微修改版本:https://datatellblog.wordpress.com/2015/05/05/unit-testing-asp-net-mvc-authorization/。但是它只检查方法/控制器是否有明确定义的[AuthorizeRedirect]属性;在缺席的情况下,它认为该行为是匿名的。

在检查操作是否允许匿名访问时,是否可以检测到在单元测试中全局应用了上述属性?

1 个答案:

答案 0 :(得分:1)

以下是测试它的一种方法:查看它是否已添加到全局过滤器

class callback_change_X_train(keras.callbacks.Callback):

def on_epoch_end(self, epoch, logs={}):
    X_train = my_function_to_update_X_train(...)
    self.model.training_data[0] = X_train