public void OnAuthorization_should_set_action_result_when_unauthorized()
        {
            var filterContext = new AuthorizationContext();
            var attribute     = new ExtendedAuthorizeAttributeTestDouble(false);

            attribute.OnAuthorization(filterContext);

            Assert.IsType <HttpUnauthorizedResult>(filterContext.Result);
        }
        public void OnAuthorization_should_set_action_result_when_unauthorized()
        {
            var filterContext = new AuthorizationContext();
            var attribute = new ExtendedAuthorizeAttributeTestDouble(false);

            attribute.OnAuthorization(filterContext);

            Assert.IsType<HttpUnauthorizedResult>(filterContext.Result);
        }
        public void OnAuthorization_should_not_execute_for_child_action()
        {
            var httpContext = new Mock<HttpContextBase>();

            var routeData = new RouteData();
            routeData.DataTokens.Add("ParentActionViewContext", new object());

            var requestContext = new RequestContext(httpContext.Object, routeData);
            var controllerContext = new ControllerContext(requestContext, new Mock<ControllerBase>().Object);
            var filterContext = new AuthorizationContext(controllerContext, new Mock<ActionDescriptor>().Object);

            var attribute = new ExtendedAuthorizeAttributeTestDouble(false);

            attribute.OnAuthorization(filterContext);

            Assert.Null(filterContext.Result);
        }
        public void OnAuthorization_should_return_cache_validation_status_as_valid()
        {
            var httpContext = new Mock <HttpContextBase>();

            var requestContext    = new RequestContext(httpContext.Object, new RouteData());
            var controllerContext = new ControllerContext(requestContext, new Mock <ControllerBase>().Object);
            var filterContext     = new AuthorizationContext(controllerContext, new Mock <ActionDescriptor>().Object);

            HttpValidationStatus cacheValidation = HttpValidationStatus.IgnoreThisRequest;

            httpContext.Setup(c => c.Response.Cache.AddValidationCallback(It.IsAny <HttpCacheValidateHandler>(), It.IsAny <object>())).Callback((HttpCacheValidateHandler handler, object data) => handler(null, data, ref cacheValidation));

            var attribute = new ExtendedAuthorizeAttributeTestDouble(true);

            attribute.OnAuthorization(filterContext);

            Assert.Equal(HttpValidationStatus.Valid, cacheValidation);
        }
        public void OnAuthorization_should_not_execute_for_child_action()
        {
            var httpContext = new Mock <HttpContextBase>();

            var routeData = new RouteData();

            routeData.DataTokens.Add("ParentActionViewContext", new object());

            var requestContext    = new RequestContext(httpContext.Object, routeData);
            var controllerContext = new ControllerContext(requestContext, new Mock <ControllerBase>().Object);
            var filterContext     = new AuthorizationContext(controllerContext, new Mock <ActionDescriptor>().Object);

            var attribute = new ExtendedAuthorizeAttributeTestDouble(false);

            attribute.OnAuthorization(filterContext);

            Assert.Null(filterContext.Result);
        }
        public void OnAuthorization_should_return_cache_validation_status_as_valid()
        {
            var httpContext = new Mock<HttpContextBase>();

            var requestContext = new RequestContext(httpContext.Object, new RouteData());
            var controllerContext = new ControllerContext(requestContext, new Mock<ControllerBase>().Object);
            var filterContext = new AuthorizationContext(controllerContext, new Mock<ActionDescriptor>().Object);

            HttpValidationStatus cacheValidation = HttpValidationStatus.IgnoreThisRequest;

            httpContext.Setup(c => c.Response.Cache.AddValidationCallback(It.IsAny<HttpCacheValidateHandler>(), It.IsAny<object>())).Callback((HttpCacheValidateHandler handler, object data) => handler(null, data, ref cacheValidation));

            var attribute = new ExtendedAuthorizeAttributeTestDouble(true);

            attribute.OnAuthorization(filterContext);

            Assert.Equal(HttpValidationStatus.Valid, cacheValidation);
        }