Esempio n. 1
0
        public async Task CreateVirtualAccount_ThrowsExceptionNotSuccess()
        {
            var connectionMock = new Mock <IXenditHttpConnection>();

            connectionMock
            .Setup(c => c.SendRequestBodyAsync <XenditBaseRequest, XenditVACreateResponse>(
                       It.IsAny <Method>(),
                       It.IsAny <string>(),
                       It.IsAny <XenditBaseRequest>(),
                       It.IsAny <string>()))
            .ThrowsAsync(XenditTestHelpers.GetTestResponseException());

            var vaClient = new XenditVAClient(connectionMock.Object);

            var requestedVA = new XenditVACreateRequest
            {
                ExternalId           = "Test_VA_1234",
                VirtualAccountNumber = "1234"
            };

            await Assert.ThrowsAsync <XenditHttpResponseException>(() => vaClient.CreateAsync(requestedVA));

            connectionMock.Verify(c => c.SendRequestBodyAsync <XenditVACreateRequest, XenditVACreateResponse>(
                                      Method.POST,
                                      "/callback_virtual_accounts",
                                      requestedVA,
                                      requestedVA.ExternalId), Times.Once);
        }
Esempio n. 2
0
        public async Task CreateVirtualAccount_ReturnsSuccess()
        {
            var connectionMock = new Mock <IXenditHttpConnection>();

            connectionMock
            .Setup(c => c.SendRequestBodyAsync <XenditBaseRequest, XenditVACreateResponse>(
                       It.IsAny <Method>(),
                       It.IsAny <string>(),
                       It.IsAny <XenditBaseRequest>(),
                       It.IsAny <string>()))
            .ReturnsAsync(new XenditVACreateResponse());

            var vaClient = new XenditVAClient(connectionMock.Object);

            var requestedVA = new XenditVACreateRequest
            {
                ExternalId           = "Test_VA_1234",
                VirtualAccountNumber = "1234"
            };

            var va = await vaClient.CreateAsync(requestedVA);

            connectionMock.Verify(c => c.SendRequestBodyAsync <XenditVACreateRequest, XenditVACreateResponse>(
                                      Method.POST,
                                      "/callback_virtual_accounts",
                                      requestedVA,
                                      requestedVA.ExternalId), Times.Once);
        }
Esempio n. 3
0
        public async Task GetAvailableBanks_ReturnsSuccess()
        {
            var connectionMock = new Mock <IXenditHttpConnection>();

            connectionMock
            .Setup(c => c.SendRequestAsync <IEnumerable <XenditVABank> >(
                       It.IsAny <Method>(),
                       It.IsAny <string>()))
            .ReturnsAsync(new List <XenditVABank>());

            var vaClient = new XenditVAClient(connectionMock.Object);

            var availableBanks = await vaClient.GetAvailableBanksAsync();

            connectionMock.Verify(c => c.SendRequestAsync <IEnumerable <XenditVABank> >(
                                      Method.GET,
                                      "/available_virtual_account_banks"), Times.Once);
        }
Esempio n. 4
0
        public async Task GetVirtualAccount_ReturnsSuccess()
        {
            var vaId = "Test:VA:1234:Get";

            var connectionMock = new Mock <IXenditHttpConnection>();

            connectionMock
            .Setup(c => c.SendRequestAsync <XenditVACreateResponse>(
                       It.IsAny <Method>(),
                       It.IsAny <string>()))
            .ReturnsAsync(new XenditVACreateResponse());

            var vaClient = new XenditVAClient(connectionMock.Object);

            var va = await vaClient.GetAsync(vaId);

            connectionMock.Verify(c => c.SendRequestAsync <XenditVACreateResponse>(
                                      Method.GET,
                                      $"/callback_virtual_accounts/{vaId}"), Times.Once);
        }
Esempio n. 5
0
        public async Task ExpireVirtualAccount_ReturnsSuccess()
        {
            var vaId = "Test:VA:1234:Expire";

            var connectionMock = new Mock <IXenditHttpConnection>();

            connectionMock
            .Setup(c => c.SendRequestBodyAsync <XenditBaseRequest, XenditVACreateResponse>(
                       It.IsAny <Method>(),
                       It.IsAny <string>(),
                       It.IsAny <XenditBaseRequest>()))
            .ReturnsAsync(new XenditVACreateResponse());

            var vaClient = new XenditVAClient(connectionMock.Object);

            var va = await vaClient.ExpireAsync(vaId);

            connectionMock.Verify(c => c.SendRequestBodyAsync <XenditVACreateExpireRequest, XenditVACreateResponse>(
                                      Method.PATCH,
                                      $"/callback_virtual_accounts/{vaId}",
                                      It.Is <XenditVACreateExpireRequest>(c => c.ExpirationDate <= DateTime.Now)), Times.Once);
        }
        public XenditClient(string apiKey)
        {
            if (string.IsNullOrWhiteSpace(apiKey))
            {
                throw new ArgumentNullException(nameof(apiKey));
            }

            Configuration = new XenditConfiguration
            {
                ApiKey = apiKey
            };

            BaseUrl = Configuration.BaseUrl;

            var connection = new XenditHttpConnection(Configuration);

            SecurityVerificator = new XenditSecurityVerificator(Configuration);
            VirtualAccount      = new XenditVAClient(connection);
            Invoice             = new XenditInvoiceClient(connection);
            Disbursement        = new XenditDisbursementClient(connection);
            EWallet             = new XenditEWalletClient(connection);
        }