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

            voucherManagementClient.Setup(v => v.GetVoucher(It.IsAny <String>(), It.IsAny <Guid>(), It.IsAny <String>(), It.IsAny <CancellationToken>()))
            .ThrowsAsync(new Exception("Error", new HttpRequestException(TestData.HttpRequestErrorResponseMessage)));
            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);

            GetVoucherResponse voucherResponse = await applicationService.GetVoucher(TestData.EstateId, TestData.ContractId, TestData.VoucherCode, CancellationToken.None);

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

            voucherManagementClient.Setup(v => v.GetVoucher(It.IsAny <String>(), It.IsAny <Guid>(), It.IsAny <String>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(TestData.GetVoucherResponse);
            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);

            GetVoucherResponse voucherResponse = await applicationService.GetVoucher(TestData.EstateId, TestData.ContractId, TestData.VoucherCode, CancellationToken.None);

            voucherResponse.ShouldNotBeNull();
            voucherResponse.VoucherCode.ShouldBe(TestData.GetVoucherResponse.VoucherCode);
            voucherResponse.ContractId.ShouldBe(TestData.ContractId);
            voucherResponse.EstateId.ShouldBe(TestData.EstateId);
            voucherResponse.ExpiryDate.ShouldBe(TestData.GetVoucherResponse.ExpiryDate);
            voucherResponse.Value.ShouldBe(TestData.GetVoucherResponse.Value);
            voucherResponse.VoucherId.ShouldBe(TestData.GetVoucherResponse.VoucherId);
        }
Exemplo n.º 3
0
        /*public async Task<ProcessLogonTransactionResponse> ProcessLogonTransaction(Guid estateId,
         *                                                                         Guid merchantId,
         *                                                                         DateTime transactionDateTime,
         *                                                                         String transactionNumber,
         *                                                                         String deviceIdentifier,
         *                                                                         CancellationToken cancellationToken)
         * {
         *  // Get a client token to call the Transaction Processor
         *  String clientId = ConfigurationReader.GetValue("AppSettings", "ClientId");
         *  String clientSecret = ConfigurationReader.GetValue("AppSettings", "ClientSecret");
         *
         *  TokenResponse accessToken = await this.SecurityServiceClient.GetToken(clientId, clientSecret, cancellationToken);
         *
         *  LogonTransactionRequest logonTransactionRequest = new LogonTransactionRequest();
         *  logonTransactionRequest.TransactionNumber = transactionNumber;
         *  logonTransactionRequest.DeviceIdentifier = deviceIdentifier;
         *  logonTransactionRequest.TransactionDateTime = transactionDateTime;
         *  logonTransactionRequest.TransactionType = "LOGON";
         *
         *  SerialisedMessage requestSerialisedMessage = new SerialisedMessage();
         *  requestSerialisedMessage.Metadata.Add("EstateId", estateId.ToString());
         *  requestSerialisedMessage.Metadata.Add("MerchantId", merchantId.ToString());
         *  requestSerialisedMessage.SerialisedData = JsonConvert.SerializeObject(logonTransactionRequest,
         *                                                                        new JsonSerializerSettings
         *                                                                        {
         *                                                                            TypeNameHandling = TypeNameHandling.All
         *                                                                        });
         *
         *  ProcessLogonTransactionResponse response = null;
         *
         *  try
         *  {
         *      SerialisedMessage responseSerialisedMessage =
         *          await this.TransactionProcessorClient.PerformTransaction(accessToken.AccessToken, requestSerialisedMessage, cancellationToken);
         *
         *      LogonTransactionResponse logonTransactionResponse = JsonConvert.DeserializeObject<LogonTransactionResponse>(responseSerialisedMessage.SerialisedData);
         *
         *      response = new ProcessLogonTransactionResponse
         *                 {
         *                     ResponseCode = logonTransactionResponse.ResponseCode,
         *                     ResponseMessage = logonTransactionResponse.ResponseMessage,
         *                     EstateId = estateId,
         *                     MerchantId = merchantId
         *                 };
         *  }
         *  catch(Exception ex)
         *  {
         *      if (ex.InnerException is InvalidOperationException)
         *      {
         *          // This means there is an error in the request
         *          response = new ProcessLogonTransactionResponse
         *                     {
         *                         ResponseCode = "0001", // Request Message error
         *                         ResponseMessage = ex.InnerException.Message,
         *                         EstateId = estateId,
         *                         MerchantId = merchantId
         *          };
         *      }
         *      else if (ex.InnerException is HttpRequestException)
         *      {
         *          // Request Send Exception
         *          response = new ProcessLogonTransactionResponse
         *          {
         *                         ResponseCode = "0002", // Request Message error
         *                         ResponseMessage = "Error Sending Request Message",
         *                         EstateId = estateId,
         *                         MerchantId = merchantId
         *          };
         *      }
         *      else
         *      {
         *          response = new ProcessLogonTransactionResponse
         *          {
         *                         ResponseCode = "0003", // General error
         *                         ResponseMessage = "General Error",
         *                         EstateId = estateId,
         *                         MerchantId = merchantId
         *          };
         *      }
         *  }
         *
         *  return response;
         * }*/

        #endregion

        /// <summary>
        /// Processes the logon transaction.
        /// </summary>
        /// <param name="estateId">The estate identifier.</param>
        /// <param name="contractId">The contract identifier.</param>
        /// <param name="voucherCode">The voucher code.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns></returns>
        public async Task <GetVoucherResponse> GetVoucher(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);

            GetVoucherResponse response = null;

            try
            {
                VoucherManagement.DataTransferObjects.GetVoucherResponse getVoucherResponse = await this.VoucherManagementClient.GetVoucher(accessToken.AccessToken, estateId, voucherCode, cancellationToken);

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

            return(response);
        }