public void PlusEquals_with_another_pipeline_adds_those_pipeline_items_to_end_of_pipeline()
        {
            pipeline.AddItemToEndOfPipeline(r => null);
            pipeline.AddItemToEndOfPipeline(r => CreateResponse());
            var pipeline2 = new BeforePipeline();

            pipeline2.AddItemToEndOfPipeline(r => null);
            pipeline2.AddItemToEndOfPipeline(r => CreateResponse());

            pipeline += pipeline2;

            Assert.Equal(4, pipeline.PipelineItems.Count());
            Assert.Same(pipeline2.PipelineDelegates.ElementAt(0), pipeline.PipelineDelegates.ElementAt(2));
            Assert.Same(pipeline2.PipelineDelegates.ElementAt(1), pipeline.PipelineDelegates.Last());
        }
Example #2
0
        public void Pipeline_containing_another_pipeline_will_invoke_items_in_both_pipelines()
        {
            var item1Called = false;
            Func <NancyContext, Response> item1 = (r) => { item1Called = true; return(null); };
            var item2Called = false;
            Func <NancyContext, Response> item2 = (r) => { item2Called = true; return(null); };
            var item3Called = false;
            Func <NancyContext, Response> item3 = (r) => { item3Called = true; return(null); };
            var item4Called = false;
            Func <NancyContext, Response> item4 = (r) => { item4Called = true; return(null); };

            pipeline += item1;
            pipeline += item2;
            var subPipeline = new BeforePipeline();

            subPipeline += item3;
            subPipeline += item4;

            pipeline.AddItemToEndOfPipeline(subPipeline);
            pipeline.Invoke(CreateContext());

            Assert.True(item1Called);
            Assert.True(item2Called);
            Assert.True(item3Called);
            Assert.True(item4Called);
        }
        public async Task Pipeline_containing_another_pipeline_will_invoke_items_in_both_pipelines()
        {
            // Given
            var item1Called = false;
            Func <NancyContext, Response> item1 = (r) => { item1Called = true; return(null); };
            var item2Called = false;
            Func <NancyContext, Response> item2 = (r) => { item2Called = true; return(null); };
            var item3Called = false;
            Func <NancyContext, Response> item3 = (r) => { item3Called = true; return(null); };
            var item4Called = false;
            Func <NancyContext, Response> item4 = (r) => { item4Called = true; return(null); };

            pipeline += item1;
            pipeline += item2;
            var subPipeline = new BeforePipeline();

            subPipeline += item3;
            subPipeline += item4;

            // When
            pipeline.AddItemToEndOfPipeline(subPipeline);
            await pipeline.Invoke(CreateContext(), new CancellationToken());

            // Then
            Assert.True(item1Called);
            Assert.True(item2Called);
            Assert.True(item3Called);
            Assert.True(item4Called);
        }
        public void Pipeline_containing_another_pipeline_will_invoke_items_in_both_pipelines()
        {
            // Given
            var item1Called = false;
            Func<NancyContext, Response> item1 = (r) => { item1Called = true; return null; };
            var item2Called = false;
            Func<NancyContext, Response> item2 = (r) => { item2Called = true; return null; };
            var item3Called = false;
            Func<NancyContext, Response> item3 = (r) => { item3Called = true; return null; };
            var item4Called = false;
            Func<NancyContext, Response> item4 = (r) => { item4Called = true; return null; };
            pipeline += item1;
            pipeline += item2;
            var subPipeline = new BeforePipeline();
            subPipeline += item3;
            subPipeline += item4;

            // When
            pipeline.AddItemToEndOfPipeline(subPipeline);
            pipeline.Invoke(CreateContext(), new CancellationToken());

            // Then
            Assert.True(item1Called);
            Assert.True(item2Called);
            Assert.True(item3Called);
            Assert.True(item4Called);
        }
        public void PlusEquals_with_another_pipeline_adds_those_pipeline_items_to_end_of_pipeline()
        {
            // Given
            pipeline.AddItemToEndOfPipeline(r => null);
            pipeline.AddItemToEndOfPipeline(r => CreateResponse());
            var pipeline2 = new BeforePipeline();
            pipeline2.AddItemToEndOfPipeline(r => null);
            pipeline2.AddItemToEndOfPipeline(r => CreateResponse());

            // When
            pipeline += pipeline2;

            // Then
            Assert.Equal(4, pipeline.PipelineItems.Count());
            Assert.Same(pipeline2.PipelineDelegates.ElementAt(0), pipeline.PipelineDelegates.ElementAt(2));
            Assert.Same(pipeline2.PipelineDelegates.ElementAt(1), pipeline.PipelineDelegates.Last());
        }
Example #6
0
        public void PlusEquals_with_another_pipeline_adds_those_pipeline_items_to_end_of_pipeline()
        {
            Func<NancyContext, Response> item1 = (r) => { return null; };
            Func<NancyContext, Response> item2 = (r) => { return CreateResponse(); };
            pipeline.AddItemToEndOfPipeline(item1);
            pipeline.AddItemToEndOfPipeline(item2);
            Func<NancyContext, Response> item3 = (r) => { return null; };
            Func<NancyContext, Response> item4 = (r) => { return CreateResponse(); };
            var pipeline2 = new BeforePipeline();
            pipeline2.AddItemToEndOfPipeline(item3);
            pipeline2.AddItemToEndOfPipeline(item4);

            pipeline += pipeline2;

            Assert.Equal(4, pipeline.PipelineDelegates.Count());
            Assert.Same(item3, pipeline.PipelineDelegates.ElementAt(2));
            Assert.Same(item4, pipeline.PipelineDelegates.Last());
        }
Example #7
0
        public void PlusEquals_with_another_pipeline_adds_those_pipeline_items_to_end_of_pipeline()
        {
            Func <NancyContext, Response> item1 = (r) => { return(null); };
            Func <NancyContext, Response> item2 = (r) => { return(CreateResponse()); };

            pipeline.AddItemToEndOfPipeline(item1);
            pipeline.AddItemToEndOfPipeline(item2);
            Func <NancyContext, Response> item3 = (r) => { return(null); };
            Func <NancyContext, Response> item4 = (r) => { return(CreateResponse()); };
            var pipeline2 = new BeforePipeline();

            pipeline2.AddItemToEndOfPipeline(item3);
            pipeline2.AddItemToEndOfPipeline(item4);

            pipeline += pipeline2;

            Assert.Equal(4, pipeline.PipelineItems.Count());
            Assert.Same(item3, pipeline.PipelineItems.ElementAt(2));
            Assert.Same(item4, pipeline.PipelineItems.Last());
        }
        /// <summary>
        /// Use wechat browser filter in a NancyController/NancyModule
        /// </summary>
        /// <param name="pipeline"></param>
        /// <param name="optionAction"></param>
        /// <returns></returns>
        public static BeforePipeline UseWeChatBrowserOnly(this BeforePipeline pipeline, Action <WeChatBrowserOnlyOptions> optionAction)
        {
            if (pipeline == null)
            {
                throw new ArgumentNullException(nameof(pipeline));
            }

            var options = new WeChatBrowserOnlyOptions();

            optionAction?.Invoke(options);

            pipeline.AddItemToEndOfPipeline(ctx =>
            {
                if (!Internal.RequestHelper.IsWeChatBrowser(ctx.Request))
                {
                    return(Internal.ResponseHelper.DoWeChatBrowserOnlyOption(ctx, options));
                }

                return(null);
            });

            return(pipeline);
        }
Example #9
0
        public void When_invoked_pipeline_member_returning_a_response_stops_pipeline_execution()
        {
            var item1Called = false;
            Func <NancyContext, Response> item1 = (r) => { item1Called = true; return(null); };
            var item2Called = false;
            Func <NancyContext, Response> item2 = (r) => { item2Called = true; return(CreateResponse()); };
            var item3Called = false;
            Func <NancyContext, Response> item3 = (r) => { item3Called = true; return(null); };

            pipeline.AddItemToEndOfPipeline(item1);
            pipeline.AddItemToEndOfPipeline(item2);
            pipeline.AddItemToEndOfPipeline(item3);

            pipeline.Invoke(CreateContext());

            Assert.True(item1Called);
            Assert.True(item2Called);
            Assert.False(item3Called);
        }
        public async Task When_invoked_pipeline_member_returning_a_response_stops_pipeline_execution()
        {
            // Given
            var item1Called = false;
            Func <NancyContext, Response> item1 = (r) => { item1Called = true; return(null); };
            var item2Called = false;
            Func <NancyContext, Response> item2 = (r) => { item2Called = true; return(CreateResponse()); };
            var item3Called = false;
            Func <NancyContext, Response> item3 = (r) => { item3Called = true; return(null); };

            pipeline.AddItemToEndOfPipeline(item1);
            pipeline.AddItemToEndOfPipeline(item2);
            pipeline.AddItemToEndOfPipeline(item3);

            // When
            await pipeline.Invoke(CreateContext(), new CancellationToken());

            // Then
            Assert.True(item1Called);
            Assert.True(item2Called);
            Assert.False(item3Called);
        }