Exemplo n.º 1
0
        private void modifyEditAction(ActionCall action)
        {
            // At least one Crud controller 'ignores' its Edit method
            if (action == null)
            {
                return;
            }

            var chain = action.ParentChain();

            chain.Route = action.BuildRouteForPattern("{0}/{{Id}}".ToFormat(_routeName));

            // If there are no
            if (!action.HasAttribute <AuthorizationAttribute>())
            {
                var permissionName = CrudRules.SecurableNameForViewing(_entityType);
                chain.Authorization.AddRole(permissionName);
            }

            // apply data restrictions
            var policyType = typeof(RestrictedDataAuthorizationPolicy <>).MakeGenericType(_entityType);

            chain.Authorization.AddPolicy(policyType);

            action.AddAfter(Wrapper.For <CrudUrlBehavior>());
        }
Exemplo n.º 2
0
        private void addCreatorCall(ActionCall call)
        {
            var actionType = typeof(EntityCreator <,>).MakeGenericType(_editModelType, _entityType);
            var method     = actionType.GetMethod("Create");

            var createAction = new ActionCall(actionType, method);

            call.AddAfter(createAction);
        }
Exemplo n.º 3
0
        public void enrich_puts_the_new_chain_node_directly_behind_the_call()
        {
            action = ActionCall.For<ControllerTarget>(x => x.OneInOneOut(null));
            var next = new RenderJsonNode(typeof (Model2));

            action.AddToEnd(next);

            var enricher = new Wrapper(typeof (string));
            action.AddAfter(enricher);

            action.Next.ShouldBeTheSameAs(enricher);
            enricher.Next.ShouldBeTheSameAs(next);
        }
Exemplo n.º 4
0
        public void append_to_descendent_when_next_is_not_null()
        {
            action = ActionCall.For<ControllerTarget>(x => x.OneInOneOut(null));
            var wrapper = new Wrapper(typeof (FakeBehavior));
            action.AddAfter(wrapper);

            var next = new RenderJsonNode(typeof (Model2));

            action.AddToEnd(next);

            action.Next.ShouldBeTheSameAs(wrapper);
            wrapper.Next.ShouldBeTheSameAs(next);

            action.ShouldHaveTheSameElementsAs(wrapper, next);
        }
Exemplo n.º 5
0
        public void enrich_puts_the_new_chain_node_directly_behind_the_call()
        {
            action = ActionCall.For <ControllerTarget>(x => x.OneInOneOut(null));
            var next = new OutputNode(typeof(Model2));


            action.AddToEnd(next);


            var enricher = new Wrapper(typeof(DebugReportTester.StubBehavior));

            action.AddAfter(enricher);

            action.Next.ShouldBeTheSameAs(enricher);
            enricher.Next.ShouldBeTheSameAs(next);
        }
Exemplo n.º 6
0
        public void append_to_descendent_when_next_is_not_null()
        {
            action = ActionCall.For <ControllerTarget>(x => x.OneInOneOut(null));
            var wrapper = new Wrapper(typeof(FakeBehavior));

            action.AddAfter(wrapper);

            var next = new OutputNode(typeof(Model2));

            action.AddToEnd(next);

            action.Next.ShouldBeTheSameAs(wrapper);
            wrapper.Next.ShouldBeTheSameAs(next);

            action.ShouldHaveTheSameElementsAs(wrapper, next);
        }
Exemplo n.º 7
0
        private void addNewEntityPipeline(ActionCall action)
        {
            var lastAction = action;

            if (action.OutputType() == _entityType)
            {
                var handlerType = action.HandlerType;
                var editMethod  = handlerType.GetMethod("Edit");
                var editPass    = new ActionCall(handlerType, editMethod);
                action.AddAfter(editPass);

                lastAction = editPass;
            }

            lastAction.AddAfter(Wrapper.For <CrudUrlBehavior>());
        }
Exemplo n.º 8
0
        public void enrich_puts_the_new_chain_node_directly_behind_the_call()
        {
            action = ActionCall.For <ControllerTarget>(x => x.OneInOneOut(null));
            var next = new RenderJsonNode(typeof(Model2));


            action.AddToEnd(next);


            var enricher = new Wrapper(typeof(string));

            action.AddAfter(enricher);

            action.Next.ShouldBeTheSameAs(enricher);
            enricher.Next.ShouldBeTheSameAs(next);
        }
        private void addNewEntityPipeline(ActionCall action)
        {
            var lastAction = action;

            if (action.OutputType() == _entityType)
            {
                var handlerType = action.HandlerType;
                var editMethod = handlerType.GetMethod("Edit");
                var editPass = new ActionCall(handlerType, editMethod);
                action.AddAfter(editPass);

                lastAction = editPass;
            }

            lastAction.AddAfter(Wrapper.For<CrudUrlBehavior>());
        }
Exemplo n.º 10
0
        private void addCreatorCall(ActionCall call)
        {
            var actionType = typeof(EntityCreator<,>).MakeGenericType(_editModelType, _entityType);
            var method = actionType.GetMethod("Create");

            var createAction = new ActionCall(actionType, method);
            call.AddAfter(createAction);
        }
Exemplo n.º 11
0
        private void modifyEditAction(ActionCall action)
        {
            // At least one Crud controller 'ignores' its Edit method
            if (action == null) return;

            var chain = action.ParentChain();
            chain.Route = action.BuildRouteForPattern("{0}/{{Id}}".ToFormat(_routeName));

            // If there are no
            if (!action.HasAttribute<AuthorizationAttribute>())
            {
                var permissionName = CrudRules.SecurableNameForViewing(_entityType);
                chain.Authorization.AddRole(permissionName);
            }

            // apply data restrictions
            var policyType = typeof(RestrictedDataAuthorizationPolicy<>).MakeGenericType(_entityType);
            chain.Authorization.AddPolicy(policyType);

            action.AddAfter(Wrapper.For<CrudUrlBehavior>());
        }