예제 #1
0
        public static void RegisterProvider(FilterProviderCollection providerCollection)
        {
            var filterProvider = FluentMvcConfiguration
                                 .ConfigureFilterProvider(x =>
            {
                x.WithResultFactory <ActionResultFactory>()
                .WithResultFactory <JsonResultFactory>()
                .WithResultFactory <ViewResultFactory>(isDefault: true);

                x.WithResultFactory <ErrorThrowingResultFactory>(
                    Apply.For <HomeController>(hc => hc.ErrorResultFactory()));

                x.WithFilter <HandleErrorAttribute>();
                x.WithFilter <AuthorizeAttribute>(
                    Except
                    .For <AccountController>(ac => ac.LogOn())
                    .AndFor <AccountController>(
                        ac => ac.LogOn(null, null, false, null))
                    .AndFor <HomeController>());

                x.WithFilter <ErrorThrowingFilter>(
                    Apply.When <ExpectsHtml>().For <HomeController>(hc => hc.About()));
            });

            providerCollection.Insert(0, filterProvider);
        }
예제 #2
0
 public void Securing_a_specific_action()
 {
     FluentMvcConfiguration.Create()
     .WithConvention(new MvcConvention())
     .WithFilter <AuthorizeAttribute>(Apply.For <TestController>(tc => tc.ReturnPost()))
     .BuildFilterProvider();
 }
예제 #3
0
        public void For_with_action()
        {
            Expression <Func <TestController, object> > expression = x => x.ReturnPost();

            TransientRegistration[] registrations = Apply.For(expression).ConstraintRegistrations;
            registrations.Length.ShouldEqual(1);
            registrations[0].ActionDescriptor.ActionName.ShouldEqual(expression.CreateActionDescriptor().ActionName);
        }
예제 #4
0
        public override void Given()
        {
            Expression <Func <TestController, object> > func = c => c.ReturnPost();

            actionDescriptor     = func.CreateActionDescriptor();
            actionFilterRegistry = new ActionFilterRegistry(CreateStub <IFluentMvcObjectFactory>());
            Configuration        = FluentMvcConfiguration.Create(CreateStub <IFluentMvcResolver>(), actionFilterRegistry, CreateStub <IActionResultRegistry>(), CreateStub <IFilterConventionCollection>())
                                   .WithFilter <TestActionFilter>()
                                   .WithFilter <AuthorizeAttribute>(Apply.For <SecondTestController>());
        }
예제 #5
0
            public override void Given()
            {
                Expression <Func <ControllerWithOverloadedActions, object> > registeredAction = c => c.OverloadedAction(default(Model));

                actionFilterRegistry = new ActionFilterRegistry(CreateStub <IFluentMvcObjectFactory>());

                FluentMvcConfiguration.Create(CreateStub <IFluentMvcResolver>(), actionFilterRegistry, CreateStub <IActionResultRegistry>(), CreateStub <IFilterConventionCollection>())
                .WithFilter <TestActionFilter>(Apply.For(registeredAction))
                .BuildFilterProvider();
            }
예제 #6
0
        public override void Given()
        {
            actionFilterRegistry = new ActionFilterRegistry(CreateStub <IFluentMvcObjectFactory>());
            Expression <Func <SecondTestController, object> > func          = controller => controller.ReturnPost();
            Expression <Func <TestController, object> >       exceptForFunc = controller => controller.ReturnViewResult();

            actionDescriptor          = func.CreateActionDescriptor();
            exceptforActionDescriptor = exceptForFunc.CreateActionDescriptor();
            Configuration             = FluentMvcConfiguration.Create(CreateStub <IFluentMvcResolver>(), actionFilterRegistry, CreateStub <IActionResultRegistry>(), CreateStub <IFilterConventionCollection>())
                                        .WithFilter <TestActionFilter>(Apply.For <SecondTestController>().ExceptFor(exceptForFunc));
        }
예제 #7
0
            public override void Given()
            {
                actionFilterRegistry = new ActionFilterRegistry(CreateStub <IFluentMvcObjectFactory>());
                Expression <Func <TestController, object> > func      = controller => controller.ReturnNull();
                Expression <Func <TestController, object> > otherFunc = controller => controller.ReturnNull(null);

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

                var controllerType = interfaceProxyWithTarget.GetType();

                var methodInfos = controllerType.GetMethods();

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

                Configuration = FluentMvcConfiguration.Create(CreateStub <IFluentMvcResolver>(), actionFilterRegistry, CreateStub <IActionResultRegistry>(), CreateStub <IFilterConventionCollection>())
                                .WithFilter <TestActionFilter>(Apply.For(func).AndFor(otherFunc));
            }
        public override void Because()
        {
            actionFilter  = new TestActionFilter();
            objectFactory = CreateStub <IFluentMvcObjectFactory>();
            objectFactory.Stub(of => of.Resolve <IActionFilter>(Arg <Type> .Is.Anything))
            .Return(actionFilter).Repeat.Any();

            actionFilterRegistry = new ActionFilterRegistry(objectFactory);

            func = c => c.ReturnPost();

            var config = FluentMvcConfiguration.Create(CreateStub <IFluentMvcResolver>(), actionFilterRegistry, CreateStub <IActionResultRegistry>(), CreateStub <IFilterConventionCollection>());

            config.ExposeConfiguration(x =>
            {
                x.WithFilter <TestActionFilter>(Except.For <ThirdTestController>());

                x.WithFilter <TestActionFilter>(Apply.For <TestController>().AndFor <SecondTestController>());
            });

            config.BuildFilterProvider();
        }
예제 #9
0
 public override void Because()
 {
     Configuration
     .WithResultFactory(resultFactory, Apply.For <TestController>(x => x.ReturnNull()));
 }
예제 #10
0
 public void Apply_ExceptWhen()
 {
     Apply.For <TestController>().Except <FalseReturningConstraint>().GetConstraintRegistrations(factory).Count().ShouldEqual(2);
 }
예제 #11
0
 public void For_AndForArea()
 {
     Apply.For <TestController>().AndForArea <TestAreaRegistration>().GetConstraintRegistrations(factory).Count().
     ShouldEqual(2);
 }
예제 #12
0
 public void Apply_Except()
 {
     Apply.For <TestController>().ExceptFor <TestController>(x => x.ReturnPost()).GetConstraintRegistrations(factory).Count().ShouldEqual(2);
 }
예제 #13
0
 public void For()
 {
     Apply.For <TestController>().GetConstraintRegistrations(factory).Count().ShouldEqual(1);
 }