Exemple #1
0
        public async void WrapperResolvesActionFilterFromDependencyScope()
        {
            var builder = new ContainerBuilder();

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

            builder.Register <IAutofacActionFilter>(c => new TestActionFilter(c.Resolve <ILogger>()))
            .AsWebApiActionFilterFor <TestController>(c => c.Get())
            .InstancePerRequest()
            .OnActivated(e => activationCount++);
            var container = builder.Build();

            var resolver                  = new AutofacWebApiDependencyResolver(container);
            var controllerContext         = CreateControllerContext(resolver);
            var methodInfo                = typeof(TestController).GetMethod("Get");
            var actionDescriptor          = CreateActionDescriptor(methodInfo);
            var actionContext             = new HttpActionContext(controllerContext, actionDescriptor);
            var httpActionExecutedContext = new HttpActionExecutedContext(actionContext, null);
            var metadata                  = new FilterMetadata
            {
                ControllerType = typeof(TestController),
                FilterScope    = FilterScope.Action,
                MethodInfo     = methodInfo
            };
            var wrapper = new ActionFilterWrapper(metadata);

            await wrapper.OnActionExecutingAsync(actionContext, CancellationToken.None);

            Assert.Equal(1, activationCount);

            await wrapper.OnActionExecutedAsync(httpActionExecutedContext, CancellationToken.None);

            Assert.Equal(1, activationCount);
        }
        public async void WrapperResolvesActionFilterFromDependencyScope()
        {
            var builder = new ContainerBuilder();

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

            builder.Register <IAutofacActionFilter>(c => new TestActionFilter(c.Resolve <ILogger>()))
            .AsWebApiActionFilterFor <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 httpActionContext         = new HttpActionContext(contollerContext, actionDescriptor);
            var actionContext             = new HttpActionContext(contollerContext, actionDescriptor);
            var httpActionExecutedContext = new HttpActionExecutedContext(actionContext, null);
            var metadata = new FilterMetadata
            {
                ControllerType = typeof(TestController),
                FilterScope    = FilterScope.Action,
                MethodInfo     = methodInfo
            };
            var wrapper = new ActionFilterWrapper(metadata);

            await wrapper.OnActionExecutingAsync(httpActionContext, new CancellationToken());

            Assert.Equal(1, activationCount);

            await wrapper.OnActionExecutedAsync(httpActionExecutedContext, new CancellationToken());

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

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

            builder.Register <IAutofacActionFilter>(c => new TestActionFilter(c.Resolve <ILogger>()))
            .AsActionFilterFor <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 httpActionContext         = new HttpActionContext(contollerContext, actionDescriptor);
            var actionContext             = new HttpActionContext(contollerContext, actionDescriptor);
            var httpActionExecutedContext = 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 ActionFilterWrapper(metadata.Object);

            wrapper.OnActionExecuting(httpActionContext);
            Assert.That(activationCount, Is.EqualTo(1));

            wrapper.OnActionExecuted(httpActionExecutedContext);
            Assert.That(activationCount, Is.EqualTo(1));
        }
Exemple #4
0
        public async void RunsFiltersInCorrectOrder()
        {
            // Issue #16: Filters need to run 1, 2, 3 in Executing but 3, 2, 1 in Executed.
            var builder = new ContainerBuilder();
            var order   = new List <string>();

            builder.Register(ctx => new DelegatingLogger(s => order.Add(s)))
            .As <ILogger>()
            .SingleInstance();
            builder.RegisterType <TestActionFilter>()
            .AsWebApiActionFilterFor <TestController>(c => c.Get())
            .InstancePerRequest();
            builder.RegisterType <TestActionFilter2>()
            .AsWebApiActionFilterFor <TestController>(c => c.Get())
            .InstancePerRequest();

            var container = builder.Build();

            var resolver                  = new AutofacWebApiDependencyResolver(container);
            var controllerContext         = CreateControllerContext(resolver);
            var methodInfo                = typeof(TestController).GetMethod("Get");
            var actionDescriptor          = CreateActionDescriptor(methodInfo);
            var actionContext             = new HttpActionContext(controllerContext, actionDescriptor);
            var httpActionExecutedContext = new HttpActionExecutedContext(actionContext, null);
            var metadata                  = new FilterMetadata
            {
                ControllerType = typeof(TestController),
                FilterScope    = FilterScope.Action,
                MethodInfo     = methodInfo
            };
            var wrapper = new ActionFilterWrapper(metadata);

            await wrapper.OnActionExecutingAsync(actionContext, CancellationToken.None);

            await wrapper.OnActionExecutedAsync(httpActionExecutedContext, CancellationToken.None);

            Assert.Equal("TestActionFilter2.OnActionExecutingAsync", order[0]);
            Assert.Equal("TestActionFilter.OnActionExecutingAsync", order[1]);
            Assert.Equal("TestActionFilter.OnActionExecutedAsync", order[2]);
            Assert.Equal("TestActionFilter2.OnActionExecutedAsync", order[3]);
        }
        public void WrapperResolvesActionFilterFromDependencyScope()
        {
            var builder = new ContainerBuilder();
            builder.Register<ILogger>(c => new Logger()).InstancePerDependency();
            var activationCount = 0;
            builder.Register<IAutofacActionFilter>(c => new TestActionFilter(c.Resolve<ILogger>()))
                .AsWebApiActionFilterFor<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 httpActionContext = new HttpActionContext(contollerContext, actionDescriptor);
            var actionContext = new HttpActionContext(contollerContext, actionDescriptor);
            var httpActionExecutedContext = new HttpActionExecutedContext(actionContext, null);
            var metadata = new FilterMetadata
            {
                ControllerType = typeof(TestController),
                FilterScope = FilterScope.Action,
                MethodInfo = methodInfo
            };
            var wrapper = new ActionFilterWrapper(metadata);

            wrapper.OnActionExecuting(httpActionContext);
            Assert.Equal(1, activationCount);

            wrapper.OnActionExecuted(httpActionExecutedContext);
            Assert.Equal(1, activationCount);
        }
Exemple #6
0
        public void ReturnsCorrectMetadataKey()
        {
            var wrapper = new ActionFilterWrapper(new FilterMetadata());

            Assert.Equal(AutofacWebApiFilterProvider.ActionFilterMetadataKey, wrapper.MetadataKey);
        }
 public void ReturnsCorrectMetadataKey()
 {
     var wrapper = new ActionFilterWrapper(new FilterMetadata());
     Assert.Equal(AutofacWebApiFilterProvider.ActionFilterMetadataKey, wrapper.MetadataKey);
 }