Пример #1
0
        CapturePaymentRethrowsExceptionWhenMobilePayApiHttpClientThrowsAMobilePayExceptionWithUnauthorizedStatusCode()
        {
            // Arrange
            var mobilePaySettings = new MobilePaySettings
            {
                MerchantId = "merchantID"
            };

            var mobilePayApiClient = new Mock <IMobilePayApiHttpClient>();
            var requestMessage     = new CaptureAmountRequest("merchantID", "1234");

            mobilePayApiClient
            .Setup(m => m.SendRequest <CaptureAmountResponse>(
                       requestMessage))
            .ThrowsAsync(
                new MobilePayException(new DefaultErrorMessage
            {
                Reason = MobilePayErrorReason.Other
            }, HttpStatusCode.Unauthorized));

            var log = new Mock <ILogger <MobilePayService> >();

            // Act
            var mobilePayService = new MobilePayService(mobilePayApiClient.Object, mobilePaySettings, log.Object);

            // Assert
            await Assert.ThrowsAsync <MobilePayException>(() => mobilePayService.CapturePayment("1234"));
        }
Пример #2
0
        public async Task CapturePaymentGivenOrderIdCallsMobilePayApiHttpClient()
        {
            // Arrange
            var mobilePaySettings = new MobilePaySettings
            {
                MerchantId = "merchantID"
            };

            var mobilePayApiClient = new Mock <IMobilePayApiHttpClient>();
            var requestMessage     = new CaptureAmountRequest("merchantID", "1234");

            mobilePayApiClient
            .Setup(m => m.SendRequest <CaptureAmountResponse>(
                       requestMessage))
            .ReturnsAsync(
                new CaptureAmountResponse
            {
                TransactionId = "transId"
            });

            var log = new Mock <ILogger <MobilePayService> >();

            var mobilePayService = new MobilePayService(mobilePayApiClient.Object, mobilePaySettings, log.Object);

            // Act
            await mobilePayService.CapturePayment("1234");

            // Assert
            mobilePayApiClient.Verify(
                m =>
                m.SendRequest <CaptureAmountResponse>(requestMessage),
                Times.Once);
        }
Пример #3
0
        CapturePaymentRetriesWhenMobilePayApiHttpClientThrowsAMobilePayExceptionWithRequestTimeOutStatusCode()
        {
            // Arrange
            var mobilePaySettings = new MobilePaySettings
            {
                MerchantId = "merchantID"
            };

            var mobilePayApiClient = new Mock <IMobilePayApiHttpClient>();
            var requestMessage     = new CaptureAmountRequest("merchantID", "1234");

            mobilePayApiClient
            .SetupSequence(m => m.SendRequest <CaptureAmountResponse>(
                               requestMessage))
            // Throw exception first time
            .ThrowsAsync(
                new MobilePayException(new DefaultErrorMessage
            {
                Reason = MobilePayErrorReason.Other
            }, HttpStatusCode.RequestTimeout));

            // Second time returns Response
            var mobilePayApiRequestMessage = new GetPaymentStatusRequest("merchantID", "1234");

            mobilePayApiClient
            .Setup(m => m.SendRequest <GetPaymentStatusResponse>(
                       mobilePayApiRequestMessage))
            .ReturnsAsync(
                new GetPaymentStatusResponse
            {
                LatestPaymentStatus = PaymentStatus.Captured,
                OriginalAmount      = 80.0,
                TransactionId       = "transId"
            });

            var log = new Mock <ILogger <MobilePayService> >();

            var mobilePayService = new MobilePayService(mobilePayApiClient.Object, mobilePaySettings, log.Object);

            // Act
            await mobilePayService.CapturePayment("1234");

            // Assert
            mobilePayApiClient.Verify(
                m =>
                m.SendRequest <CaptureAmountResponse>(requestMessage),
                Times.Once);
            mobilePayApiClient.Verify(
                m => m.SendRequest <GetPaymentStatusResponse>(mobilePayApiRequestMessage), Times.Once);
        }