Exemplo n.º 1
0
        public async Task VoucherManagementACLApplicationService_RedeemVoucher_OtherExceptionErrorInInGetVoucher_GetVoucherNotSuccessful()
        {
            Mock <IVoucherManagementClient> voucherManagementClient = new Mock <IVoucherManagementClient>();

            voucherManagementClient.Setup(v => v.RedeemVoucher(It.IsAny <String>(), It.IsAny <RedeemVoucherRequest>(), It.IsAny <CancellationToken>()))
            .ThrowsAsync(new Exception("Error", new Exception(TestData.GeneralErrorResponseMessage)));
            Mock <ISecurityServiceClient> securityServiceClient = new Mock <ISecurityServiceClient>();

            securityServiceClient.Setup(s => s.GetToken(It.IsAny <String>(), It.IsAny <String>(), It.IsAny <CancellationToken>())).ReturnsAsync(TestData.TokenResponse);

            IVoucherManagementACLApplicationService applicationService =
                new Services.VoucherManagementACLApplicationService(securityServiceClient.Object, voucherManagementClient.Object);

            RedeemVoucherResponse voucherResponse = await applicationService.RedeemVoucher(TestData.EstateId, TestData.ContractId, TestData.VoucherCode, CancellationToken.None);

            voucherResponse.ShouldNotBeNull();
            voucherResponse.ResponseMessage.ShouldBe(TestData.GeneralErrorResponseMessage);
            voucherResponse.ResponseCode.ShouldBe(TestData.GeneralErrorResponseCode);
        }
Exemplo n.º 2
0
        public async Task VoucherManagementACLApplicationService_RedeemVoucher_VoucherRedeemed()
        {
            Mock <IVoucherManagementClient> voucherManagementClient = new Mock <IVoucherManagementClient>();

            voucherManagementClient.Setup(v => v.RedeemVoucher(It.IsAny <String>(), It.IsAny <RedeemVoucherRequest>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(TestData.RedeemVoucherResponse);
            Mock <ISecurityServiceClient> securityServiceClient = new Mock <ISecurityServiceClient>();

            securityServiceClient.Setup(s => s.GetToken(It.IsAny <String>(), It.IsAny <String>(), It.IsAny <CancellationToken>())).ReturnsAsync(TestData.TokenResponse);

            IVoucherManagementACLApplicationService applicationService =
                new Services.VoucherManagementACLApplicationService(securityServiceClient.Object, voucherManagementClient.Object);

            RedeemVoucherResponse voucherResponse = await applicationService.RedeemVoucher(TestData.EstateId, TestData.ContractId, TestData.VoucherCode, CancellationToken.None);

            voucherResponse.ShouldNotBeNull();
            voucherResponse.VoucherCode.ShouldBe(TestData.RedeemVoucherResponse.VoucherCode);
            voucherResponse.ContractId.ShouldBe(TestData.ContractId);
            voucherResponse.EstateId.ShouldBe(TestData.EstateId);
            voucherResponse.ExpiryDate.ShouldBe(TestData.RedeemVoucherResponse.ExpiryDate);
            voucherResponse.Balance.ShouldBe(TestData.RedeemVoucherResponse.RemainingBalance);
        }
Exemplo n.º 3
0
        public async Task <RedeemVoucherResponse> RedeemVoucher(Guid estateId,
                                                                Guid contractId,
                                                                String voucherCode,
                                                                CancellationToken cancellationToken)
        {
            // Get a client token to call the Voucher Management
            String clientId     = ConfigurationReader.GetValue("AppSettings", "ClientId");
            String clientSecret = ConfigurationReader.GetValue("AppSettings", "ClientSecret");

            TokenResponse accessToken = await this.SecurityServiceClient.GetToken(clientId, clientSecret, cancellationToken);

            RedeemVoucherResponse response = null;

            try
            {
                RedeemVoucherRequest redeemVoucherRequest = new RedeemVoucherRequest
                {
                    EstateId    = estateId,
                    VoucherCode = voucherCode
                };

                VoucherManagement.DataTransferObjects.RedeemVoucherResponse redeemVoucherResponse = await this.VoucherManagementClient.RedeemVoucher(accessToken.AccessToken, redeemVoucherRequest, cancellationToken);

                response = new RedeemVoucherResponse
                {
                    ResponseCode    = "0000", // Success
                    ResponseMessage = "SUCCESS",
                    ContractId      = contractId,
                    EstateId        = estateId,
                    ExpiryDate      = redeemVoucherResponse.ExpiryDate,
                    Balance         = redeemVoucherResponse.RemainingBalance,
                    VoucherCode     = redeemVoucherResponse.VoucherCode
                };
            }
            catch (Exception ex)
            {
                if (ex.InnerException is InvalidOperationException)
                {
                    // This means there is an error in the request
                    response = new RedeemVoucherResponse
                    {
                        ResponseCode    = "0001", // Request Message error
                        ResponseMessage = ex.InnerException.Message,
                    };
                }
                else if (ex.InnerException is HttpRequestException)
                {
                    // Request Send Exception
                    response = new RedeemVoucherResponse
                    {
                        ResponseCode    = "0002", // Request Message error
                        ResponseMessage = "Error Sending Request Message",
                    };
                }
                else
                {
                    response = new RedeemVoucherResponse
                    {
                        ResponseCode    = "0003", // General error
                        ResponseMessage = "General Error",
                    };
                }
            }

            return(response);
        }