public void AddThenGetMatchesOneFilterOfOneType()
        {
            FakeUnityContainer container = new FakeUnityContainer();

            container.Add(new FakeActionFilter());

            ActionFilterRegistry registry = new ActionFilterRegistry(container);

            registry.Add(new[] { new FakeActionFilterCriteria()
                                 {
                                     IsMatch = true
                                 } }, typeof(FakeActionFilter));

            FilterInfo filters = registry.GetFilters(this.GetFakeContext());

            Assert.Equal(1, filters.ActionFilters.Count);
            Assert.IsType <FakeActionFilter>(filters.ActionFilters[0]);
            Assert.Equal(0, filters.AuthorizationFilters.Count);
            Assert.Equal(0, filters.ExceptionFilters.Count);
            Assert.Equal(0, filters.ResultFilters.Count);
        }
        public void can_resolve_through_registry()
        {
            var controllerTypeConstraint = new ControllerTypeConstraint<TestController>();

            var method = typeof(TestController).GetMethods().First(x => x.Name.Equals("ReturnNull") && x.GetParameters().Count() == 0);
            var actionDescriptor = new ReflectedActionDescriptor(method, "ReturnNull", new ReflectedControllerDescriptor(typeof(TestController)));

            var registry = new ActionFilterRegistry(new FluentMvcObjectFactory());
            registry.Add(new ControllerActionRegistryItem(typeof(TestFilter), controllerTypeConstraint, actionDescriptor, actionDescriptor.ControllerDescriptor));

            var proxyGenerator = new ProxyGenerator();
            var interfaceProxyWithTarget = proxyGenerator.CreateClassProxy<TestController>();

            var controllerType = interfaceProxyWithTarget.GetType();

            var methodInfos = controllerType.GetMethods();
            var proxyActionDescriptor = new ReflectedActionDescriptor(methodInfos.First(x => x.Name.Equals("ReturnNull") && x.GetParameters().Count() == 0), "ReturnNull", new ReflectedControllerDescriptor(controllerType));

            registry
                .CanSatisfy(new ControllerActionFilterSelector(null, proxyActionDescriptor, proxyActionDescriptor.ControllerDescriptor))
                .ShouldBeTrue();
        }
示例#3
0
        public void can_resolve_through_registry()
        {
            var controllerTypeConstraint = new ControllerTypeConstraint <TestController>();

            var method           = typeof(TestController).GetMethods().First(x => x.Name.Equals("ReturnNull") && x.GetParameters().Count() == 0);
            var actionDescriptor = new ReflectedActionDescriptor(method, "ReturnNull", new ReflectedControllerDescriptor(typeof(TestController)));

            var registry = new ActionFilterRegistry(new FluentMvcObjectFactory());

            registry.Add(new ControllerActionRegistryItem(typeof(TestFilter), controllerTypeConstraint, actionDescriptor, actionDescriptor.ControllerDescriptor));

            var proxyGenerator           = new ProxyGenerator();
            var interfaceProxyWithTarget = proxyGenerator.CreateClassProxy <TestController>();

            var controllerType = interfaceProxyWithTarget.GetType();

            var methodInfos           = controllerType.GetMethods();
            var proxyActionDescriptor = new ReflectedActionDescriptor(methodInfos.First(x => x.Name.Equals("ReturnNull") && x.GetParameters().Count() == 0), "ReturnNull", new ReflectedControllerDescriptor(controllerType));

            registry
            .CanSatisfy(new ControllerActionFilterSelector(null, proxyActionDescriptor, proxyActionDescriptor.ControllerDescriptor))
            .ShouldBeTrue();
        }