Beispiel #1
0
        public void WhenAddingMultipleActionsToThePipelineWithUseThenAllActionsAreTriggered()
        {
            bool trigger1 = false, trigger2 = false, trigger3 = false;
            var  builder = new HttpConnectPipelineBuilder();

            builder.Use((next) => ctx =>
            {
                trigger1 = true;
                return(next.Invoke(ctx));
            });
            builder.Use((next) => ctx =>
            {
                trigger2 = true;
                return(next.Invoke(ctx));
            });
            builder.Use((next) => ctx =>
            {
                trigger3 = true;
                return(next.Invoke(ctx));
            });
            var pipeline = builder.Build();

            var context = new HttpConnectContext();

            pipeline.Invoke(context);

            trigger1.Should().BeTrue();
            trigger2.Should().BeTrue();
            trigger3.Should().BeTrue();
        }
Beispiel #2
0
            public async Task SetsThenRequestOnTheResponse()
            {
                var middleware = new HttpClientMiddlewareTester(
                    new TestHandler(() => new HttpResponseMessage(HttpStatusCode.OK)));
                var request = CreateRequest();
                var context = new HttpConnectContext(request);

                await middleware.Invoke(context);

                context.Response.Request.Should().Be(request);
            }
Beispiel #3
0
        public void BuildReturnsCallableDelegate()
        {
            var builder  = new HttpConnectPipelineBuilder();
            var pipeline = builder.Build();

            var context = new HttpConnectContext();

            pipeline.Invoke(context);

            context.Response.StatusCode.Should().Be(HttpStatusCode.NotFound);
        }
Beispiel #4
0
        public async Task Invoke(HttpConnectContext context)
        {
            context.RequestAborted.ThrowIfCancellationRequested();

            using (HttpRequestMessage httpRequestMessage = BuildHttpRequestMessage(context.Request))
                using (HttpResponseMessage httpResponseMessage = await _httpClient.SendAsync(httpRequestMessage, context.RequestAborted).ConfigureAwait(false))
                {
                    context.Response = await BuildHttpConnectResponse(httpResponseMessage).ConfigureAwait(false);

                    context.Response.Request = context.Request;
                }
        }
Beispiel #5
0
            public async Task SendsTheRequestThroughTheHttpClient()
            {
                bool invoked = false;
                var  handler = new TestHandler(() =>
                {
                    invoked = true;
                    return(new HttpResponseMessage(HttpStatusCode.OK));
                });
                var middleware = new HttpClientMiddlewareTester(handler);
                var request    = CreateRequest();
                var context    = new HttpConnectContext(CreateRequest());

                await middleware.Invoke(context);

                invoked.Should().BeTrue();
            }
Beispiel #6
0
        public void WhenAddingActionToThePipelineWithUseThenActionIsTriggered()
        {
            bool triggered = false;
            var  builder   = new HttpConnectPipelineBuilder();

            builder.Use((next) => ctx =>
            {
                triggered = true;
                return(next.Invoke(ctx));
            });
            var pipeline = builder.Build();

            var context = new HttpConnectContext();

            pipeline.Invoke(context);

            triggered.Should().BeTrue();
        }
Beispiel #7
0
        public void WhenOneActionBlocksThePipelineWithAllActionsAreNotTriggered()
        {
            bool trigger1 = false, trigger2 = false;
            var  builder = new HttpConnectPipelineBuilder();

            builder.Use((next) => ctx =>
            {
                trigger1 = true;
                return(Task.CompletedTask);
            });
            builder.Use((next) => ctx =>
            {
                trigger2 = true;
                return(next.Invoke(ctx));
            });
            var pipeline = builder.Build();

            var context = new HttpConnectContext();

            pipeline.Invoke(context);

            trigger1.Should().BeTrue();
            trigger2.Should().BeFalse();
        }