Пример #1
0
        public async Task CancelAsync_requests_proper_uri()
        {
            // arrange
            var expectedRequest = new PaymentCancellation
            {
                IamportId = Guid.NewGuid().ToString(),
            };
            var expectedResult = new IamportResponse <Payment>
            {
                HttpStatusCode = HttpStatusCode.OK,
                Content        = new Payment
                {
                    IamportId = expectedRequest.IamportId,
                }
            };
            var client = GetMockClient(expectedRequest, expectedResult);
            var sut    = new PaymentsApi(client);

            // act
            var result = await sut.CancelAsync(expectedRequest);

            // assert
            Mock.Get(client)
            .Verify(mocked =>
                    mocked.RequestAsync <PaymentCancellation, Payment>(
                        It.Is <IamportRequest <PaymentCancellation> >(req =>
                                                                      req.ApiPathAndQueryString.EndsWith("payments/cancel"))));
        }
Пример #2
0
        public async Task CancelAsync_throws_ValidationException(string iamportId, string transactionId)
        {
            // arrange
            var expectedRequest = new PaymentCancellation
            {
                IamportId     = iamportId,
                TransactionId = transactionId,
            };
            var expectedResult = new IamportResponse <Payment>();
            var client         = GetMockClient(expectedRequest, expectedResult);
            var sut            = new PaymentsApi(client);

            // act/assert
            await Assert.ThrowsAsync <ValidationException>(
                () => sut.CancelAsync(expectedRequest));
        }
Пример #3
0
        public async Task CancelAsync_throws_IamportResponseException_when_response_code_is_not_success()
        {
            // arrange
            var expectedRequest = new PaymentCancellation
            {
                IamportId = Guid.NewGuid().ToString(),
            };
            var expectedResult = new IamportResponse <Payment>
            {
                Code           = -1,
                HttpStatusCode = HttpStatusCode.InternalServerError,
            };
            var client = GetMockClient(expectedRequest, expectedResult);
            var sut    = new PaymentsApi(client);

            // act/assert
            await Assert.ThrowsAsync <IamportResponseException>(
                () => sut.CancelAsync(expectedRequest));
        }
Пример #4
0
        public async Task CancelAsync_doesnt_accept_longer_than_4characters_of_RefundAccountBank()
        {
            // arrange
            var expectedRequest = new PaymentCancellation
            {
                IamportId         = Guid.NewGuid().ToString(),
                RefundAccountBank = "ABCDE",
            };
            var expectedResult = new IamportResponse <Payment>
            {
                Code           = -1,
                HttpStatusCode = HttpStatusCode.InternalServerError,
            };
            var client = GetMockClient(expectedRequest, expectedResult);
            var sut    = new PaymentsApi(client);

            // act/assert
            await Assert.ThrowsAsync <ValidationException>(
                () => sut.CancelAsync(expectedRequest));
        }
Пример #5
0
        public async Task CancelPayment(Guid paymentId)
        {
            try
            {
                await _paymentsApi.CancelAsync(paymentId, null);
            }
            catch (ApiException <ErrorResponse> e)
            {
                var errorResponse = e.Result;
                Log.Error(
                    "MobilePay CancelPayment failed with HTTP {StatusCode}. ErrorCode: {ErrorCode} Message: {Message} CorrelationId: {CorrelationId}",
                    e.StatusCode, errorResponse.Code, errorResponse.Message, errorResponse.CorrelationId);

                // FIXME Consider retry

                throw new MobilePayApiException(e.StatusCode, errorResponse.Message, errorResponse.Code);
            }
            catch (ApiException apiException)
            {
                LogMobilePayException(apiException);
                throw new MobilePayApiException(apiException.StatusCode, apiException.Message);
            }
        }
Пример #6
0
 public async Task CancelAsync_GuardClause()
 {
     var sut = new PaymentsApi(GetEmptyMockClient());
     await Assert.ThrowsAsync <ArgumentNullException>(
         () => sut.CancelAsync(null));
 }