예제 #1
0
        public void attribute_places_the_rule()
        {
            var chain = BehaviorChain.For <MustBeAuthenticatedTester>(x => x.Go());

            chain.Authorization.Policies.Single()
            .ShouldBeOfType <MustBeAuthenticated>();
        }
예제 #2
0
 public void chain_is_aggregated_chain()
 {
     BehaviorChain.For <ChainTarget>(x => x.get_B(null)).IsAggregatedChain().ShouldBeTrue();
     BehaviorChain.For <ChainTarget>(x => x.get_C1()).IsAggregatedChain().ShouldBeTrue();
     BehaviorChain.For <ChainTarget>(x => x.get_C2(null)).IsAggregatedChain().ShouldBeTrue();
     BehaviorChain.For <ChainTarget>(x => x.get_not_client()).IsAggregatedChain().ShouldBeFalse();
 }
 public void SetUp()
 {
     _outputPolicy = new AttachOutputPolicy();
     _graph        = new BehaviorGraph();
     _graph.AddChain(BehaviorChain.For <TestEndpoint>(e => e.X()));
     _graph.AddChain(BehaviorChain.For <TestEndpoint>(e => e.AnyNumber()));
     _outputPolicy.Configure(_graph);
 }
        public void do_not_apply_conneg_output_to_method_that_returns_HttpStatusCode()
        {
            var chain = BehaviorChain.For <ActionJackson>(x => x.CodeFor(null));

            chain.ApplyConneg();

            chain.HasConnegOutput().ShouldBeFalse();
        }
        public void DetermineInvoker_for_synchronous_actions()
        {
            var chain = BehaviorChain.For <Action2>(x => x.M1());

            chain.IsAsynchronous().ShouldBeFalse();

            StandardRoutePolicy.DetermineInvoker(theFactory, chain).ShouldBeOfType <BehaviorInvoker>();
        }
예제 #6
0
        public void matches_negative()
        {
            var chain = BehaviorChain.For <FilterEndpoint>(x => x.get_string());

            new ResourceTypeIsAjaxContinuation().Matches(chain).ShouldBeFalse();

            chain = BehaviorChain.For <FilterEndpoint>(x => x.get_void());
            new ResourceTypeIsAjaxContinuation().Matches(chain).ShouldBeFalse();
        }
예제 #7
0
        public void ignores_chains_with_the_no_form_mode_attribute()
        {
            var chain = BehaviorChain.For <FormRegistryEndpoint>(x => x.get_ignored());

            thePolicies.Add(p1);
            thePolicies.Add(p2);

            theRegistry.ModeFor(chain).ShouldEqual(FormMode.None);
        }
        public void DetermineHandlerSource_for_async_and_requires_session()
        {
            var chain = BehaviorChain.For <Action3>(x => x.M1Async());

            chain.IsAsynchronous().ShouldBeTrue();

            StandardRoutePolicy.DetermineHandlerSource(SessionStateRequirement.RequiresSessionState, chain)
            .ShouldBeOfType <AsynchronousHttpHandlerSource>();
        }
        public void DetermineHandlerSource_for_synchronous_with_session()
        {
            var chain = BehaviorChain.For <Action2>(x => x.M1());

            chain.IsAsynchronous().ShouldBeFalse();

            StandardRoutePolicy.DetermineHandlerSource(SessionStateRequirement.RequiresSessionState, chain)
            .ShouldBeOfType <SynchronousHttpHandlerSource>();
        }
예제 #10
0
        protected override void beforeEach()
        {
            theTarget = BehaviorChain.For <ControllerTarget>(x => x.ZeroInOneOut());
            theChain  = MockFor <ICurrentChain>();
            theInner  = MockFor <IActionBehavior>();

            Container.Inject(theTarget);
            ClassUnderTest.InvokePartial();
        }
        public void zero_in_does_not_apply_a_conneg_node()
        {
            var zeroIn = BehaviorChain.For <ActionJackson>(x => x.ZeroInOneOut());

            zeroIn.ApplyConneg();

            zeroIn.Any(x => x is ConnegInputNode).ShouldBeFalse();
            zeroIn.ConnegOutputNode().ShouldNotBeNull();
        }
예제 #12
0
        public void when_there_is_only_one_chain_for_that_input_model()
        {
            var graph = new BehaviorGraph(null);

            var chain = BehaviorChain.For <ControllerTarget>(x => x.OneInOneOut(null));

            graph.AddChain(chain);
            graph.IdForType(typeof(Model1)).ShouldEqual(chain.UniqueId);
        }
예제 #13
0
        public void require_role_attribute()
        {
            var chain = BehaviorChain.For <RequireRoleTester>(x => x.Go());

            chain.Authorization.HasRules().ShouldBeTrue();

            chain.Authorization.Policies.OfType <RequireRole>()
            .Select(x => x.Role).ShouldHaveTheSameElementsAs("a", "b", "c");
        }
예제 #14
0
        public void should_throw_2151_if_the_input_type_has_multiple_possible_behavior_chains()
        {
            var graph = new BehaviorGraph(null);

            graph.AddChain(BehaviorChain.For <ControllerTarget>(x => x.OneInOneOut(null)));
            graph.AddChain(BehaviorChain.For <ControllerTarget>(x => x.OneInZeroOut(null)));

            Exception <FubuException> .ShouldBeThrownBy(() => { graph.IdForType(typeof(Model1)); }).ErrorCode.ShouldEqual
                (2151);
        }
예제 #15
0
        public void SetUp()
        {
            graph = new BehaviorGraph(null);

            chain1 = BehaviorChain.For <ControllerTarget>(x => x.OneInOneOut(null));
            graph.AddChain(chain1);

            chain2 = BehaviorChain.For <ControllerTarget>(x => x.OneInZeroOut(null));
            graph.AddChain(chain2);
        }
        public void SetUp()
        {
            theChain      = BehaviorChain.For <ActionJackson>(x => x.OneInOneOut(null));
            theOutputNode = new OutputNode(typeof(OutputBehavior));

            theChain.AddToEnd(theOutputNode);

            // Nothing up my sleeve
            theChain.Any(x => x is ConnegNode).ShouldBeFalse();
        }
        public void SetUp()
        {
            explicitChain = BehaviorChain.For <IntegratedSettingsEndpoint>(x => x.get_int());
            defaultChain  = BehaviorChain.For <IntegratedSettingsEndpoint>(x => x.get_string());
            ajaxChain     = BehaviorChain.For <IntegratedSettingsEndpoint>(x => x.get_ajax());

            theSettings = new FormSettings();;
            theSettings.ForChainsMatching(new LambdaChainFilter(x => x.ResourceType() == typeof(int)), FormMode.None);

            theRegistry = theSettings.BuildRegistry();
        }
예제 #18
0
        public void SetUp()
        {
            theChain = BehaviorChain.For <FormRegistryEndpoint>(x => x.get_test());

            var theFilter = MockRepository.GenerateStub <IChainFilter>();

            theFilter.Stub(x => x.Matches(theChain)).IgnoreArguments().Return(true);

            p1 = new FormModePolicy(theFilter, FormMode.None);
            p2 = new FormModePolicy(theFilter, FormMode.Ajax);

            thePolicies = new List <FormModePolicy>();
        }
예제 #19
0
        public void for_an_input_type()
        {
            BehaviorChain chain1 = BehaviorChain.For <ControllerTarget>(x => x.OneInOneOut(null));

            graph.AddChain(chain1);

            var behavior = MockRepository.GenerateMock <IActionBehavior>();

            MockFor <IBehaviorFactory>()
            .Stub(x => x.BuildBehavior(args, chain1.UniqueId))
            .Return(behavior);

            ClassUnderTest.BuildPartial(typeof(Model1))
            .ShouldBeTheSameAs(behavior);
        }
 public void SetUp()
 {
     theChain = BehaviorChain.For <ActionJackson>(x => x.OneInOneOut(null));
 }
예제 #21
0
        public void matches_chains_with_input()
        {
            var chain = BehaviorChain.For <HasInputModel>(x => x.Test(null));

            theFilter.Matches(chain).ShouldBeTrue();
        }
예제 #22
0
        public void does_not_match_chains_without_input()
        {
            var chain = BehaviorChain.For <HasInputModel>(x => x.Test());

            theFilter.Matches(chain).ShouldBeFalse();
        }
예제 #23
0
        public void matches()
        {
            var chain = BehaviorChain.For <FilterEndpoint>(x => x.get_ajax());

            new ResourceTypeIsAjaxContinuation().Matches(chain).ShouldBeTrue();
        }