public ExceptionFilterAttributeTracer(ExceptionFilterAttribute innerFilter, ITraceWriter traceWriter)
        {
            Contract.Assert(innerFilter != null);
            Contract.Assert(traceWriter != null);

            _innerFilter = innerFilter;
            _traceStore  = traceWriter;
        }
        public void Decorator_GetInner_On_ExceptionFilterAttributeTracer_Returns_ExceptionFilterAttribute()
        {
            // Arrange
            ExceptionFilterAttribute       expectedInner    = new Mock <ExceptionFilterAttribute>().Object;
            ExceptionFilterAttributeTracer productUnderTest = new ExceptionFilterAttributeTracer(expectedInner, new TestTraceWriter());

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

            // Assert
            Assert.Same(expectedInner, actualInner);
        }
        public void Inner_Property_On_ExceptionFilterAttributeTracer_Returns_ExceptionFilterAttribute()
        {
            // Arrange
            ExceptionFilterAttribute       expectedInner    = new Mock <ExceptionFilterAttribute>().Object;
            ExceptionFilterAttributeTracer productUnderTest = new ExceptionFilterAttributeTracer(expectedInner, new TestTraceWriter());

            // Act
            ExceptionFilterAttribute actualInner = productUnderTest.Inner;

            // Assert
            Assert.Same(expectedInner, actualInner);
        }
Esempio n. 4
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
                });
            }
Esempio n. 5
0
        public async Task ExceptionFilterAttribute_ExceptionTestAsync()
        {
            var mockKey = "29d342d1-8d08-44fc-a8bc-2ac3e25af903";

            Environment.SetEnvironmentVariable("APPINSIGHTS_INSTRUMENTATIONKEY", mockKey);

            var exceptionFilter = new ExceptionFilterAttribute();

            var exceptionContext = new FunctionExceptionContext(
                functionInstanceId: Guid.NewGuid(),
                functionName: "FunctionMock",
                logger: _loggerMock.Object,
                exceptionDispatchInfo: ExceptionDispatchInfo.Capture(new Exception("MockException")),
                properties: new Dictionary <string, object>());

            await exceptionFilter.OnExceptionAsync(exceptionContext, new CancellationToken());

            Assert.NotNull(exceptionFilter);
        }
Esempio n. 6
0
        /// <summary>
        /// The create filter tracers.
        /// </summary>
        /// <param name="filter">
        /// The filter.
        /// </param>
        /// <param name="traceWriter">
        /// The trace writer.
        /// </param>
        /// <returns>
        /// The <see cref="IEnumerable"/>.
        /// </returns>
        public static IEnumerable <IFilter> CreateFilterTracers(IFilter filter, ITraceWriter traceWriter)
        {
            List <IFilter> filters = new List <IFilter>();
            bool           addedCommandHandlerAttributeTracer = false;
            bool           addedExceptionAttributeTracer      = false;
            bool           addedEventHandlerAttributeTracer   = false;

            CommandHandlerFilterAttribute commandHandlerFilterAttribute = filter as CommandHandlerFilterAttribute;

            if (commandHandlerFilterAttribute != null)
            {
                filters.Add(new CommandHandlerFilterAttributeTracer(commandHandlerFilterAttribute, traceWriter));
                addedCommandHandlerAttributeTracer = true;
            }

            ExceptionFilterAttribute exceptionFilterAttribute = filter as ExceptionFilterAttribute;

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

            EventHandlerFilterAttribute eventHandlerFilterAttribute = filter as EventHandlerFilterAttribute;

            if (eventHandlerFilterAttribute != null)
            {
                filters.Add(new EventHandlerFilterAttributeTracer(eventHandlerFilterAttribute, traceWriter));
                addedEventHandlerAttributeTracer = true;
            }

            // Do not add an IHandlerFilter tracer if we already added an HandlerFilterAttribute tracer
            ICommandHandlerFilter commandHandlerFilter = filter as ICommandHandlerFilter;

            if (commandHandlerFilter != null && !addedCommandHandlerAttributeTracer)
            {
                filters.Add(new CommandHandlerFilterTracer(commandHandlerFilter, 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));
            }

            // Do not add an IEventHandlerFilter tracer if we already added an EventHandlerFilterAttribute tracer
            IEventHandlerFilter eventHandlerFilter = filter as IEventHandlerFilter;

            if (eventHandlerFilter != null && !addedEventHandlerAttributeTracer)
            {
                filters.Add(new EventHandlerFilterTracer(eventHandlerFilter, traceWriter));
            }

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

            return(filters);
        }
Esempio n. 7
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);
        }
 public ExceptionFilterAttributeTracer(ExceptionFilterAttribute innerFilter, ITraceWriter traceStore)
 {
     _innerFilter = innerFilter;
     _traceStore  = traceStore;
 }
Esempio n. 9
0
 public PipelineExceptionFilterAttribute Add(ExceptionFilterAttribute filter)
 {
     filters.Add(filter);
     return(this);
 }
 public static void AddErrorHandling(this MvcOptions options, ExceptionFilterAttribute exceptionFilterAttribute)
 {
     options.Filters.Add(exceptionFilterAttribute);
 }
Esempio n. 11
0
 public ConfigureExceptionHandling WithWebApiExceptionFilter(ExceptionFilterAttribute filter)
 {
     _exceptionFilters.Add(filter);
     return(this);
 }