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