public async Task ProcessPayment_StateUnderTest_ExpectedBehavior1() { var acquiringBank = CreateAcquiringBank(); const string reason = "Something went wrong"; const string status = "Failed"; const string id = "99999999999"; var errorResponse = new HttpResponseMessage(HttpStatusCode.BadRequest) { Content = new StringContent(JsonConvert.SerializeObject(new PaymentResponse { TransactionId = id, Status = status, Reason = reason })) }; var exception = new BankApiHttpException(new HttpRequestMessage(HttpMethod.Post, new Uri("payment", UriKind.Relative)), errorResponse); mockBankClient.Setup(x => x.Payment.Process(It.IsAny <Payment>())) .ThrowsAsync(exception); var response = await acquiringBank.ProcessPayment(new CoreEntities.Payment()); response.ShouldNotBeNull(); var result = response.ShouldBeOfType <PaymentProcessErrorResponse>(); result.TransactionId.ShouldBe(id); result.Status.ShouldBe(status); result.Reason.ShouldBe(reason); mockBankClient.Verify(x => x.Payment.Process(It.IsAny <Payment>()), Times.AtLeastOnce); }
public async Task CheckHealthAsync_ShouldReturnStatusAsUnhealthy_WhenBankApiEndPointIsReturningError() { var errorResponse = new HttpResponseMessage(HttpStatusCode.GatewayTimeout); var exception = new BankApiHttpException(new HttpRequestMessage(HttpMethod.Post, new Uri("payment", UriKind.Relative)), errorResponse); clientMock.Setup(m => m.Payment.Process(It.IsAny <Payment>())) .ThrowsAsync(exception); var result = await sut.CheckHealthAsync(It.IsAny <HealthCheckContext>(), It.IsAny <CancellationToken>()); clientMock.Verify(m => m.Payment.Process(It.IsAny <Payment>()), Times.Once()); result.ShouldBeAssignableTo <HealthCheckResult>(); result.Status.ShouldBe(HealthStatus.Unhealthy); }
public async Task CheckHealthAsync_ShouldReturnStatusAsHealthy_WhenBankApiEndPointIsReturnExpectedResponse() { var errorResponse = new HttpResponseMessage(HttpStatusCode.BadRequest) { Content = new StringContent(JsonConvert.SerializeObject(new PaymentResponse { TransactionId = "999999", Status = "Failed", Reason = "Something went wrong" })) }; var exception = new BankApiHttpException(new HttpRequestMessage(HttpMethod.Post, new Uri("payment", UriKind.Relative)), errorResponse); clientMock.Setup(m => m.Payment.Process(It.IsAny <Payment>())).ThrowsAsync(exception); var result = await sut.CheckHealthAsync(It.IsAny <HealthCheckContext>(), It.IsAny <CancellationToken>()); clientMock.Verify(m => m.Payment.Process(It.IsAny <Payment>()), Times.Once); result.ShouldBeAssignableTo <HealthCheckResult>(); result.Status.ShouldBe(HealthStatus.Healthy); }