Exemplo n.º 1
0
 public void Init()
 {
     filter = new NonTenant
     {
         Logger = Substitute.For <ILogger>()
     };
 }
Exemplo n.º 2
0
        /// <summary>
        /// 执行
        /// </summary>
        /// <param name="context">操作执行上下文</param>
        /// <param name="next">委托</param>
        /// <returns></returns>
        public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (next == null)
            {
                throw new ArgumentNullException(nameof(next));
            }

            ActionFilterAttribute actionFilterAttribute = this;

            actionFilterAttribute.OnActionExecuting(context);
            await OnActionExecutingAsync(context);

            if (context.Result != null)
            {
                return;
            }
            var executedContext = await next();

            actionFilterAttribute.OnActionExecuted(executedContext);
        }
 /// <summary>
 /// 构造ApiExecutionContextHandler
 /// </summary>
 /// <param name="attr"></param>
 public ApiExecutionContextHandler(ActionFilterAttribute attr)
 {
     ExceptionHandler = new DefaultApiExceptionHandler();
     ModelStateValidationErrorHandler = new DefaultModelStateValidationErrorHandler();
     UnauthorizedRequestHandler       = new DefaultUnauthorizedRequestHandler();
     this.AssociateFilter             = attr;
 }
Exemplo n.º 4
0
        public ActionFilterAttributeTracer(ActionFilterAttribute innerFilter, ITraceWriter traceWriter)
        {
            Contract.Assert(innerFilter != null);
            Contract.Assert(traceWriter != null);

            _innerFilter = innerFilter;
            _traceWriter = traceWriter;
        }
Exemplo n.º 5
0
        public void Decorator_GetInner_On_ActionFilterAttributeTracer_Returns_ActionFilterAttribute()
        {
            // Arrange
            ActionFilterAttribute       expectedInner    = new Mock <ActionFilterAttribute>().Object;
            ActionFilterAttributeTracer productUnderTest = new ActionFilterAttributeTracer(expectedInner, new TestTraceWriter());

            // Act
            ActionFilterAttribute actualInner = Decorator.GetInner(productUnderTest as ActionFilterAttribute);

            // Assert
            Assert.Same(expectedInner, actualInner);
        }
Exemplo n.º 6
0
        public void Inner_Property_On_ActionFilterAttributeTracer_Returns_ActionFilterAttribute()
        {
            // Arrange
            ActionFilterAttribute       expectedInner    = new Mock <ActionFilterAttribute>().Object;
            ActionFilterAttributeTracer productUnderTest = new ActionFilterAttributeTracer(expectedInner, new TestTraceWriter());

            // Act
            ActionFilterAttribute actualInner = productUnderTest.Inner;

            // Assert
            Assert.Same(expectedInner, actualInner);
        }
        /// <summary>
        /// Tries to retrieve the id parameter from the currently executing action method.
        /// <br/>
        /// Throws ArgumentNullException if 'id' could not be found.
        /// <br/>
        /// Throws ArgumentException if 'id' is not an int.
        /// </summary>
        /// <returns>The int value of the 'id' parameter of the currently executing action method.</returns>
        internal static int GetIdValue(this ActionFilterAttribute actionFilter, ActionExecutingContext filterContext)
        {
            object reviewIdObj;

            if (!filterContext.ActionParameters.TryGetValue("id", out reviewIdObj))
            {
                throw new ArgumentNullException(
                          "id", string.Format(
                              "Could not find 'id' parameter in action method '{0}' but need it to control access!",
                              filterContext.ActionDescriptor.ActionName));
            }

            var reviewId = GetIdAsInt(reviewIdObj);

            return(reviewId);
        }
Exemplo n.º 8
0
        /// <summary>
        ///     Adds a type to a <see cref="FilterCollection" /> if it doesn't already exist.
        /// </summary>
        /// <typeparam name="TType">The type of the t type.</typeparam>
        /// <param name="col">The col.</param>
        /// <param name="order">Filter order</param>
        /// <returns>FilterCollection.</returns>
        public static FilterCollection TryAdd <TType>(this FilterCollection col, int?order = null)
            where TType : IFilterMetadata
        {
            var vt = typeof(TType);

            if (col.All(t =>
            {
                // Yet more lameness, really should be able to do a simple test here...
                return(t switch
                {
                    TypeFilterAttribute tf => tf.ImplementationType != vt,
                    ServiceFilterAttribute sf => sf.ServiceType != vt,
                    FormatFilterAttribute ff => ff.GetType() != vt,
                    ResultFilterAttribute rs => rs.GetType() != vt,
                    ExceptionFilterAttribute ef => ef.GetType() != vt,
                    ActionFilterAttribute af => af.GetType() != vt,
                    _ => t.GetType() != vt
                });
            }
        public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
        {
            ActionFilterAttribute actionFilterAttribute = this;

            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (next == null)
            {
                throw new ArgumentNullException(nameof(next));
            }
            actionFilterAttribute.OnActionExecuting(context);
            if (context.Result != null)
            {
                return;
            }
            var context1 = await next();

            await ProcessODataQuery(context1);

            OnActionExecuted(context1);
        }
Exemplo n.º 10
0
 public ActionFilterAttributeTracer(ActionFilterAttribute innerFilter, ITraceWriter traceWriter)
 {
     _innerFilter = innerFilter;
     _traceWriter = traceWriter;
 }
Exemplo n.º 11
0
        public static IEnumerable <IFilter> CreateFilterTracers(IFilter filter, ITraceWriter traceWriter)
        {
            List <IFilter> filters = new List <IFilter>();
            bool           addedActionAttributeTracer        = false;
            bool           addedAuthorizationAttributeTracer = false;
            bool           addedExceptionAttributeTracer     = false;

            ActionFilterAttribute actionFilterAttribute = filter as ActionFilterAttribute;

            if (actionFilterAttribute != null)
            {
                filters.Add(new ActionFilterAttributeTracer(actionFilterAttribute, traceWriter));
                addedActionAttributeTracer = true;
            }

            AuthorizationFilterAttribute authorizationFilterAttribute = filter as AuthorizationFilterAttribute;

            if (authorizationFilterAttribute != null)
            {
                filters.Add(new AuthorizationFilterAttributeTracer(authorizationFilterAttribute, traceWriter));
                addedAuthorizationAttributeTracer = true;
            }

            ExceptionFilterAttribute exceptionFilterAttribute = filter as ExceptionFilterAttribute;

            if (exceptionFilterAttribute != null)
            {
                filters.Add(new ExceptionFilterAttributeTracer(exceptionFilterAttribute, traceWriter));
                addedExceptionAttributeTracer = true;
            }

            // Do not add an IActionFilter tracer if we already added an ActionFilterAttribute tracer
            IActionFilter actionFilter = filter as IActionFilter;

            if (actionFilter != null && !addedActionAttributeTracer)
            {
                filters.Add(new ActionFilterTracer(actionFilter, traceWriter));
            }

            // Do not add an IAuthorizationFilter tracer if we already added an AuthorizationFilterAttribute tracer
            IAuthorizationFilter authorizationFilter = filter as IAuthorizationFilter;

            if (authorizationFilter != null && !addedAuthorizationAttributeTracer)
            {
                filters.Add(new AuthorizationFilterTracer(authorizationFilter, traceWriter));
            }

            // Do not add an IExceptionFilter tracer if we already added an ExceptoinFilterAttribute tracer
            IExceptionFilter exceptionFilter = filter as IExceptionFilter;

            if (exceptionFilter != null && !addedExceptionAttributeTracer)
            {
                filters.Add(new ExceptionFilterTracer(exceptionFilter, traceWriter));
            }

            if (filters.Count == 0)
            {
                filters.Add(new FilterTracer(filter, traceWriter));
            }

            return(filters);
        }
Exemplo n.º 12
0
 public AuthenticationFilterAttribute()
 {
     principalFilter = new PrincipalPersistFilterAttribute();
 }
Exemplo n.º 13
0
 protected override ActionFilterAttribute CreateSubject() => sut = Substitute.For <ActionFilterAttribute>();