public void WrapperResolvesExceptionFilterFromDependencyScope()
        {
            var builder = new ContainerBuilder();
            builder.Register<ILogger>(c => new Logger()).InstancePerDependency();
            var activationCount = 0;
            builder.Register<IAutofacExceptionFilter>(c => new TestExceptionFilter(c.Resolve<ILogger>()))
                .AsWebApiExceptionFilterFor<TestController>(c => c.Get())
                .InstancePerRequest()
                .OnActivated(e => activationCount++);
            var container = builder.Build();

            var resolver = new AutofacWebApiDependencyResolver(container);
            var configuration = new HttpConfiguration { DependencyResolver = resolver };
            var requestMessage = new HttpRequestMessage();
            requestMessage.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, configuration);
            var contollerContext = new HttpControllerContext { Request = requestMessage };
            var controllerDescriptor = new HttpControllerDescriptor { ControllerType = typeof(TestController) };
            var methodInfo = typeof(TestController).GetMethod("Get");
            var actionDescriptor = new ReflectedHttpActionDescriptor(controllerDescriptor, methodInfo);
            var actionContext = new HttpActionContext(contollerContext, actionDescriptor);
            var actionExecutedContext = new HttpActionExecutedContext(actionContext, null);
            var metadata = new FilterMetadata
            {
                ControllerType = typeof(TestController),
                FilterScope = FilterScope.Action,
                MethodInfo = methodInfo
            };
            var wrapper = new ExceptionFilterWrapper(metadata);

            wrapper.OnException(actionExecutedContext);
            Assert.Equal(1, activationCount);
        }
        public async void WrapperResolvesExceptionFilterFromDependencyScope()
        {
            var builder = new ContainerBuilder();

            builder.Register <ILogger>(c => new Logger()).InstancePerDependency();
            var activationCount = 0;

            builder.Register <IAutofacExceptionFilter>(c => new TestExceptionFilter(c.Resolve <ILogger>()))
            .AsWebApiExceptionFilterFor <TestController>(c => c.Get())
            .InstancePerRequest()
            .OnActivated(e => activationCount++);
            var container = builder.Build();

            var resolver      = new AutofacWebApiDependencyResolver(container);
            var configuration = new HttpConfiguration {
                DependencyResolver = resolver
            };
            var requestMessage = new HttpRequestMessage();

            requestMessage.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, configuration);
            var contollerContext = new HttpControllerContext {
                Request = requestMessage
            };
            var controllerDescriptor = new HttpControllerDescriptor {
                ControllerType = typeof(TestController)
            };
            var methodInfo            = typeof(TestController).GetMethod("Get");
            var actionDescriptor      = new ReflectedHttpActionDescriptor(controllerDescriptor, methodInfo);
            var actionContext         = new HttpActionContext(contollerContext, actionDescriptor);
            var actionExecutedContext = new HttpActionExecutedContext(actionContext, null);
            var metadata = new FilterMetadata
            {
                ControllerType = typeof(TestController),
                FilterScope    = FilterScope.Action,
                MethodInfo     = methodInfo
            };
            var wrapper = new ExceptionFilterWrapper(metadata);

            await wrapper.OnExceptionAsync(actionExecutedContext, new CancellationToken());

            Assert.Equal(1, activationCount);
        }
예제 #3
0
        public void WrapperResolvesExceptionFilterFromDependencyScope()
        {
            var builder = new ContainerBuilder();

            builder.Register <ILogger>(c => new Logger()).InstancePerDependency();
            var activationCount = 0;

            builder.Register <IAutofacExceptionFilter>(c => new TestExceptionFilter(c.Resolve <ILogger>()))
            .AsExceptionFilterFor <TestController>(c => c.Get())
            .InstancePerApiRequest()
            .OnActivated(e => activationCount++);
            var container = builder.Build();

            var resolver      = new AutofacWebApiDependencyResolver(container);
            var configuration = new HttpConfiguration {
                DependencyResolver = resolver
            };
            var requestMessage = new HttpRequestMessage();

            requestMessage.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, configuration);
            var contollerContext = new HttpControllerContext {
                Request = requestMessage
            };
            var controllerDescriptor = new HttpControllerDescriptor {
                ControllerType = typeof(TestController)
            };
            var methodInfo            = typeof(TestController).GetMethod("Get");
            var actionDescriptor      = new ReflectedHttpActionDescriptor(controllerDescriptor, methodInfo);
            var actionContext         = new HttpActionContext(contollerContext, actionDescriptor);
            var actionExecutedContext = new HttpActionExecutedContext(actionContext, null);
            var metadata = new Mock <IFilterMetadata>();

            metadata.Setup(mock => mock.ControllerType).Returns(typeof(TestController));
            metadata.Setup(mock => mock.FilterScope).Returns(FilterScope.Action);
            metadata.Setup(mock => mock.MethodInfo).Returns(methodInfo);

            var wrapper = new ExceptionFilterWrapper(metadata.Object);

            wrapper.OnException(actionExecutedContext);
            Assert.That(activationCount, Is.EqualTo(1));
        }