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(); }
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); }
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); }
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; } }
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(); }
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(); }
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(); }