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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }