public async Task CreatingACaptureRequest_Serailizes_AsExepceted() { var handler = new FakeDelegatingHandler(); var client = new HttpClient(handler) { BaseAddress = GetUri() }; handler.FakeResponseList.Add(new HttpResponseMessage { StatusCode = System.Net.HttpStatusCode.OK, Content = new StringContent(PaymentOrderResponse) }); PaymentOrderRequest paymentOrderRequest = GetPaymentOrderRequest(); var sut = await new PaymentOrdersResource(client).Create(paymentOrderRequest); Assert.NotNull(sut.PaymentOrder); Assert.NotNull(sut.Operations); Assert.NotNull(sut.Operations.Abort); Assert.NotNull(sut.Operations.Cancel); Assert.NotNull(sut.Operations.Capture); Assert.NotNull(sut.Operations.Reverse); Assert.NotNull(sut.Operations.Update); Assert.NotNull(sut.Operations.View); }
public void should_add_delegating_handlers() { var fakeOne = new FakeDelegatingHandler(0); var fakeTwo = new FakeDelegatingHandler(1); this.Given(x => WhenISetUpOcelotServices()) .When(x => AddDelegate(fakeOne)) .And(x => AddDelegate(fakeTwo)) .Then(x => ThenTheProviderIsRegisteredAndReturnsHandlers()) .BDDfy(); }
public async Task SendAsync_NoTrace() { var mockTracer = new Mock <IManagedTracer>(); var fakeHandler = new FakeDelegatingHandler(); var traceHandler = new TraceHeaderPropagatingHandler(() => mockTracer.Object, fakeHandler); using (var httpClient = new HttpClient(traceHandler)) { await httpClient.GetAsync("https://www.google.com"); } mockTracer.Verify(t => t.StartSpan(It.IsAny <string>(), null), Times.Never()); }
public async Task WhenSendingACapture_TheConverter_HasZeroErrors() { var handler = new FakeDelegatingHandler(); handler.FakeResponseList.Add(new HttpResponseMessage { StatusCode = System.Net.HttpStatusCode.OK, Content = new StringContent(PaymentCompletedReponse) }); var uri = new Uri("http://api.externalintegration.payex.com"); var sut = new HttpClient(handler); await sut.SendAndProcessAsync <CaptureTransactionResponseDto>(HttpMethod.Get, uri, GetPaymentOrderCaptureRequest()); }
public async Task ProblemResponse_CorrectlySerializes_WithNoAdditionalErrors() { var handler = new FakeDelegatingHandler(); handler.FakeResponseList.Add(new HttpResponseMessage { StatusCode = System.Net.HttpStatusCode.BadRequest, Content = new StringContent(PaymentOrderInputValidationFailedReponse) }); var uri = new Uri("http://api.externalintegration.payex.com"); var sut = new HttpClient(handler); var error = await Assert.ThrowsAsync <HttpResponseException>(() => sut.SendAndProcessAsync <Problem>(HttpMethod.Get, uri, null)); Assert.Equal(1, error.Data.Count); }
public async Task SendAndPrcoess_DoesNotFail_WhenNotExpectingError() { var handler = new FakeDelegatingHandler(); handler.FakeResponseList.Add(new HttpResponseMessage { StatusCode = System.Net.HttpStatusCode.BadRequest, Content = new StringContent(PaymentOrderInputValidationFailedReponse) }); var uri = new Uri("http://api.externalintegration.payex.com"); var sut = new HttpClient(handler); var result = await Assert.ThrowsAsync <HttpResponseException>(() => sut.SendAndProcessAsync <CaptureResponse>(HttpMethod.Get, uri, new object())); Assert.Equal(1, result.Data.Count); }
public async Task SendAsync_Trace() { var mockTracer = GetSetUpTracer(); var fakeHandler = new FakeDelegatingHandler(headerContext); var traceHandler = TraceHeaderPropagatingHandler.Create(mockTracer.Object, fakeHandler); var requestUri = new Uri("https://www.google.com"); using (var httpClient = new HttpClient(traceHandler)) { await httpClient.GetAsync(requestUri); } mockTracer.Verify(t => t.StartSpan(requestUri.ToString(), null), Times.Once()); mockTracer.Verify(t => t.EndSpan(), Times.Once()); }
public async Task SendAsync_TraceException() { var mockTracer = GetSetUpTracer(); var fakeHandler = new FakeDelegatingHandler(headerContext, throwException: true); var traceHandler = TraceHeaderPropagatingHandler.Create(mockTracer.Object, fakeHandler); var requestUri = new Uri("https://www.google.com"); using (var httpClient = new HttpClient(traceHandler)) { await Assert.ThrowsAsync <DivideByZeroException>(() => httpClient.GetAsync(requestUri)); } mockTracer.Verify(t => t.StartSpan(requestUri.ToString(), null), Times.Once()); mockTracer.Verify(t => t.SetStackTrace(It.IsAny <StackTrace>()), Times.Once()); mockTracer.Verify(t => t.EndSpan(), Times.Once()); }
public async Task ProblemResponse_CorrectlySerialzes_WhenApiReturnsWrongStatusCode() { var handler = new FakeDelegatingHandler(); handler.FakeResponseList.Add(new HttpResponseMessage { StatusCode = System.Net.HttpStatusCode.OK, Content = new StringContent(PaymentOrderInputValidationFailedReponse) }); var uri = new Uri("http://api.externalintegration.payex.com"); var sut = new HttpClient(handler); var resultDto = await sut.SendAndProcessAsync <ProblemDto>(HttpMethod.Get, uri, null); var result = resultDto.Map(); Assert.IsType <Problem>(result); }
public async Task WhenSendingACaptureRequest_WeDoNotCrash_AndGiveAReasonableError() { var handler = new FakeDelegatingHandler(); var client = new HttpClient(handler) { BaseAddress = GetUri() }; handler.FakeResponseList.Add(new HttpResponseMessage { StatusCode = System.Net.HttpStatusCode.OK, Content = new StringContent(PaymentOrderResponse) }); handler.FakeResponseList.Add(new HttpResponseMessage { StatusCode = System.Net.HttpStatusCode.BadRequest, Content = new StringContent(@" { ""sessionId"": ""27146bc5-269e-4b69-a25b-16308f4b481f"", ""type"": ""https://api.payex.com/psp/errordetail/forbidden"", ""title"": ""Operation not allowed"", ""status"": 403, ""instance"": ""http://api.externalintegration.payex.com/psp/paymentorders/74fa6203-e59a-43e0-0f44-08d7da0988bc/captures"", ""detail"": ""Payment check failed, description in problems node!"", ""problems"": [ { ""name"": ""Capture"", ""description"": ""Capture amount too high."" } ] } ") }); PaymentOrderCaptureRequest captureRequest = GetTestPaymentOrderCaptureRequest(); PaymentOrderRequest paymentOrderRequest = GetPaymentOrderRequest(); var sut = await new PaymentOrdersResource(client).Create(paymentOrderRequest); var result = await Assert.ThrowsAsync <HttpResponseException>(() => sut.Operations.Capture(captureRequest)); Assert.Equal(1, result.Data.Count); }
public async Task SendAsync_Trace() { var mockTracer = GetSetUpTracer(); var fakeHandler = new FakeDelegatingHandler(headerContext); var traceHandler = new TraceHeaderPropagatingHandler(() => mockTracer.Object, fakeHandler); var requestUri = new Uri("https://www.google.com"); var requestUriString = requestUri.ToString(); mockTracer.Setup(t => t.RunInSpanAsync( It.IsAny <Func <Task <HttpResponseMessage> > >(), requestUri.ToString(), null)) .Returns(Task.FromResult(new HttpResponseMessage())); using (var httpClient = new HttpClient(traceHandler)) { await httpClient.GetAsync(requestUri); } mockTracer.VerifyAll(); }