コード例 #1
0
ファイル: RecvTests.cs プロジェクト: war-man/Agentworks_API
        public void Recv_ValidationUntilReadyForCommit()
        {
            var sendRequest = new SendRequest
            {
                AgentState = AgentLocation.MN,
                Country    = Country.Usa,
                State      = State.Ny,
                SendCurr   = Currency.Usd,
                AmtRange   = AmountRange.NoIdsNoThirdParty,
                FeeType    = ItemChoiceType1.amountExcludingFee
            };

            sendRequest.PopulateAgentData(sendRequest.AgentState);
            var sendData       = new SendData(sendRequest);
            var receiveRequest = new ReceiveRequest
            {
                AgentState     = AgentLocation.NY,
                ThirdPartyType = TestThirdPartyType.None
            };

            receiveRequest.PopulateAgentData(receiveRequest.AgentState);

            var receiveData = new ReceiveData(receiveRequest);

            SendOperations.SendCompleteForNewCustomer(sendData);
            receiveData.Set(sendData);
            ReceiveOperations.ValidateUntilReadyForCommitForReceive(receiveData);

            var receiveValidationResponse = receiveData.ReceiveValidationResponses?.FirstOrDefault();

            // ASSERT ALL THE THINGS
            Assert.IsFalse(sendData.Errors.Any(), $" {Environment.NewLine}Errors: {Environment.NewLine}{sendData.Errors?.Log()}");
            Assert.IsTrue(receiveValidationResponse != null && receiveValidationResponse.Payload.ReadyForCommit);
        }
コード例 #2
0
        public void TestSetup()
        {
            var testRunner = new TestRunner();

            sendReversalOperations = new SendReversalOperations(testRunner);
            sendOperations         = new SendOperations(testRunner);
        }
コード例 #3
0
ファイル: RecvTests.cs プロジェクト: war-man/Agentworks_API
        public void Recv_Complete()
        {
            var sendRequest = new SendRequest
            {
                AgentState = AgentLocation.MN,
                Country    = Country.Usa,
                State      = State.Ny,
                SendCurr   = Currency.Usd,
                AmtRange   = AmountRange.NoIdsNoThirdParty,
                FeeType    = ItemChoiceType1.amountExcludingFee
            };

            sendRequest.PopulateAgentData(sendRequest.AgentState);
            var sendData       = new SendData(sendRequest);
            var receiveRequest = new ReceiveRequest
            {
                AgentState     = AgentLocation.NY,
                ThirdPartyType = TestThirdPartyType.None
            };

            receiveRequest.PopulateAgentData(receiveRequest.AgentState);

            var receiveData = new ReceiveData(receiveRequest);

            sendData = SendOperations.SendCompleteForNewCustomer(sendData);
            receiveData.Set(sendData);
            receiveData = ReceiveOperations.ReceiveComplete(receiveData);
            var transLookupResponse = TranLookupOperations.TransactionLookupForStatus(receiveRequest.AgentId, receiveRequest.AgentPos, receiveData.CompleteSessionResponse.Payload.ReferenceNumber);

            // ASSERT ALL THE THINGS
            Assert.IsFalse(sendData.Errors.Any(), $" {Environment.NewLine}Errors: {Environment.NewLine}{sendData.Errors?.Log()}");
            Assert.IsFalse(receiveData.Errors.Any(), $" {Environment.NewLine}Errors: {Environment.NewLine}{sendData.Errors?.Log()}");
            Assert.IsTrue(transLookupResponse.TransactionLookupResp.Payload.TransactionStatus == TransactionStatusType.RECVD);
        }
コード例 #4
0
        public async Task SendRequestAsync_WaitsTillAllDataSent()
        {
            var payLoadSender = new PayloadSender();
            var tcs           = new TaskCompletionSource <bool>();
            DisconnectedEventHandler eventHandler = (sender, args) =>
            {
                tcs.TrySetException(new Exception(args.Reason));
            };

            payLoadSender.Disconnected += eventHandler;
            payLoadSender.Connect(GetMockedTransportSender(tcs, TransportConstants.MaxPayloadLength * 4));
            var sendOperations = new SendOperations(payLoadSender);

            try
            {
                using (var stream = GetMockedStream(TransportConstants.MaxPayloadLength * 4))
                {
                    var request = new StreamingRequest();
                    request.AddStream(new StreamContent(stream));
                    await sendOperations.SendRequestAsync(Guid.NewGuid(), request);
                }

                await tcs.Task;
            }
            finally
            {
                payLoadSender.Disconnected -= eventHandler;
            }
        }
コード例 #5
0
        public void TestSetup()
        {
            var testRunner = new TestRunner();

            amendOperations = new AmendOperations(testRunner);
            sendOperations  = new SendOperations(testRunner);
        }
コード例 #6
0
ファイル: RecvTests.cs プロジェクト: war-man/Agentworks_API
        public void TestSetup()
        {
            var testRunner = new TestRunner();

            ReceiveOperations    = new ReceiveOperations(testRunner);
            SendOperations       = new SendOperations(testRunner);
            TranLookupOperations = new TransactionLookupOperations(testRunner);
        }
コード例 #7
0
ファイル: SendHandler.cs プロジェクト: war-man/Agentworks_API
 /// <summary>
 ///     Constructor.
 /// </summary>
 /// <param name="messageBus">Message bus used to publish results</param>
 /// <param name="sendParameters">Send parameter view model needed to create transaction</param>
 /// <param name="agentSelector">agent parameter view model needed to create transaction</param>
 /// <param name="sendOperations">Send operations parameter</param>
 public SendHandler(IMessageBus messageBus, ISendParametersViewModel sendParameters,
                    IAgentSelectorViewModel agentSelector, SendOperations sendOperations)
 {
     SendOperations  = sendOperations;
     _messageBus     = messageBus;
     _sendParameters = sendParameters;
     _agentSelector  = agentSelector;
 }
コード例 #8
0
 /// <summary>
 ///     Constructor.
 /// </summary>
 /// <param name="messageBus">Message bus used to publish results</param>
 /// <param name="stagedReceiveViewModel">Send parameter view model needed to create transaction</param>
 /// <param name="agentSelector">agent parameter view model needed to create transaction</param>
 /// <param name="sendOperations">Send operations parameter</param>
 public StagedReceiveHandler(IMessageBus messageBus, IStagedReceiveViewModel stagedReceiveViewModel,
                             IAgentSelectorViewModel agentSelector, SendOperations sendOperations, ReceiveOperations receiveOperations)
 {
     SendOperations          = sendOperations;
     ReceiveOperations       = receiveOperations;
     _messageBus             = messageBus;
     _stagedReceiveViewModel = stagedReceiveViewModel;
     _agentSelector          = agentSelector;
 }
コード例 #9
0
        public void TestSetup()
        {
            var testRunner = new TestRunner();

            receiveReversalOperations = new ReceiveReversalOperations(testRunner);
            _sendOperations           = new SendOperations(testRunner);
            _recvOperations           = new ReceiveOperations(testRunner);
            _tranLookupOperations     = new TransactionLookupOperations(testRunner);
        }
コード例 #10
0
        /// <summary>
        ///     Run this transaction.
        /// </summary>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public override ITransactionResult Transaction(object parameters)
        {
            var sendReversalParameters = (SendReversalParameters)parameters;

            TestConfig.TestSettings = new IntegrationTestSettingsModel {
                AcEnvironment = sendReversalParameters.Environment
            };

            var amtRangeParsed       = Enum.TryParse(sendReversalParameters.AmtRange, true, out AmountRange amtRange);
            var itemChoiceTypeParsed = Enum.TryParse(sendReversalParameters.FeeType, true, out ItemChoiceType1 itemChoiceType);
            var sendRequest          = new SendRequest
            {
                Environment         = sendReversalParameters.Environment,
                AgentCountryIsoCode = sendReversalParameters.AgentCountryIsoCode,
                AgentId             = sendReversalParameters.AgentId,
                AgentPos            = sendReversalParameters.AgentPos,
                AgentState          = sendReversalParameters.GetAgentState(),
                Amount         = (double)sendReversalParameters.CustomAmount,
                AmtRange       = amtRangeParsed ? amtRange : AmountRange.CustomAmount,
                Country        = sendReversalParameters.Country,
                State          = sendReversalParameters.State,
                FeeType        = itemChoiceTypeParsed ? itemChoiceType : ItemChoiceType1.amountExcludingFee,
                SendCurr       = sendReversalParameters.SendCurr,
                ServiceOption  = sendReversalParameters.ServiceOption,
                ThirdPartyType = sendReversalParameters.ThirdPartyType
            };

            var sendData = new SendData(sendRequest);

            sendData = SendOperations.SendCompleteForNewCustomer(sendData);

            var sendReversalRequest = new SendReversalRequest
            {
                AgentId             = sendReversalParameters.AgentId,
                AgentPos            = sendReversalParameters.AgentPos,
                AgentCountryIsoCode = sendReversalParameters.AgentCountryIsoCode,
                AgentState          = sendReversalParameters.AgentState,
                ReferenceNumber     = sendData.CompleteSessionResp.Payload.ReferenceNumber,
                RefundReason        = new EnumeratedIdentifierInfo {
                    Identifier = sendReversalParameters.RefundReason
                },
                RefundFee = sendReversalParameters.RefundFee
            };

            var sendReversalData = new SendReversalData(sendReversalRequest);

            sendReversalData = SendReversalOperations.SendReversalComplete(sendReversalData);

            return(new TransactionResult {
                Result = sendReversalData
            });
        }
コード例 #11
0
        public async Task SendCancelStreamAsync()
        {
            var guid   = Guid.NewGuid();
            var sender = new MockPayloadSender();
            var ops    = new SendOperations(sender);

            await ops.SendCancelStreamAsync(guid);

            var header = sender.SentHeaders.FirstOrDefault();

            Assert.Equal(guid, header.Id);
            Assert.Equal(PayloadTypes.CancelStream, header.Type);
            Assert.True(header.End);
        }
コード例 #12
0
        public ProtocolAdapter(RequestHandler requestHandler, IRequestManager requestManager, IPayloadSender payloadSender, IPayloadReceiver payloadReceiver, object handlerContext = null)
        {
            _requestHandler  = requestHandler;
            _handlerContext  = handlerContext;
            _requestManager  = requestManager;
            _payloadSender   = payloadSender;
            _payloadReceiver = payloadReceiver;

            _sendOperations   = new SendOperations(_payloadSender);
            _streamManager    = new StreamManager(OnCancelStream);
            _assemblerManager = new PayloadAssemblerManager(_streamManager, OnReceiveRequestAsync, OnReceiveResponseAsync);

            _payloadReceiver.Subscribe(_assemblerManager.GetPayloadStream, _assemblerManager.OnReceive);
        }
コード例 #13
0
        public async Task SendResponseAsync()
        {
            var sender    = new PayloadSender();
            var transport = new MockTransportSender();

            sender.Connect(transport);
            var ops = new SendOperations(sender);

            var content  = new StringContent("/a/b", Encoding.ASCII);
            var response = StreamingResponse.CreateResponse(HttpStatusCode.OK, content);

            await ops.SendResponseAsync(Guid.NewGuid(), response);

            Assert.Equal(4, transport.Buffers.Count);
        }
コード例 #14
0
        /// <summary>
        ///     Run this transaction
        /// </summary>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public override ITransactionResult Transaction(object parameters)
        {
            var sendParameters = (SendParameters)parameters;

            TestConfig.TestSettings = new IntegrationTestSettingsModel {
                AcEnvironment = sendParameters.Environment
            };

            var amtRangeParsed       = Enum.TryParse(sendParameters?.AmtRange, true, out AmountRange amtRange);
            var itemChoiceTypeParsed = Enum.TryParse(sendParameters?.FeeType, true, out ItemChoiceType1 itemChoiceType);
            var sendRequest          = new SendRequest
            {
                Environment         = sendParameters.Environment,
                AgentCountryIsoCode = sendParameters.AgentCountryIsoCode,
                AgentId             = sendParameters.AgentId,
                AgentPos            = sendParameters.AgentPos,
                AgentState          = sendParameters.GetAgentState(),
                Amount         = (double)sendParameters.CustomAmount,
                AmtRange       = amtRangeParsed ? amtRange : AmountRange.CustomAmount,
                Country        = sendParameters.Country,
                State          = sendParameters.State,
                FeeType        = itemChoiceTypeParsed ? itemChoiceType : ItemChoiceType1.amountExcludingFee,
                SendCurr       = sendParameters.SendCurr,
                ServiceOption  = sendParameters.ServiceOption,
                ThirdPartyType = sendParameters.ThirdPartyType
            };
            var sendData = new SendData(sendRequest);

            sendData = SendOperations.SendCompleteForExistingCustomer(sendData);

            var referenceNumber = sendData?.CompleteSessionResp?.Payload?.ReferenceNumber;

            var amendRequest = new AmendOperationRequest
            {
                AgentState      = sendParameters.AgentState,
                ReferenceNumber = referenceNumber
            };

            amendRequest.PopulateAgentData(sendParameters.AgentState);
            var amendData = new AmendData(amendRequest);

            amendData.Set(sendData);
            AmendOperations.AmendComplete(amendData);

            return(new TransactionResult {
                Result = amendData
            });
        }
コード例 #15
0
        public async Task RequestDisassembler_WithJsonStream_Sends()
        {
            var sender    = new PayloadSender();
            var transport = new MockTransportSender();

            sender.Connect(transport);
            var ops = new SendOperations(sender);

            var request = StreamingRequest.CreatePost("/a/b");

            request.AddStream(new StringContent("abc", Encoding.ASCII));

            await ops.SendRequestAsync(Guid.NewGuid(), request);

            Assert.AreEqual(4, transport.Buffers.Count);
        }
コード例 #16
0
        /// <summary>
        ///     Implements transaction for Send
        /// </summary>
        /// <param name="parameters"></param>
        /// <returns>Transaction result</returns>
        public override ITransactionResult Transaction(object parameters)
        {
            var sendParameters = (SendParameters)parameters;

            TestConfig.TestSettings = new IntegrationTestSettingsModel {
                AcEnvironment = sendParameters.Environment
            };

            var amtRangeParsed       = Enum.TryParse(sendParameters?.AmtRange, true, out AmountRange amtRange);
            var itemChoiceTypeParsed = Enum.TryParse(sendParameters?.FeeType, true, out ItemChoiceType1 itemChoiceType);
            var sendRequest          = new SendRequest
            {
                Environment         = sendParameters.Environment,
                AgentCountryIsoCode = sendParameters.AgentCountryIsoCode,
                AgentId             = sendParameters.AgentId,
                AgentPos            = sendParameters.AgentPos,
                AgentState          = sendParameters.GetAgentState(),
                Amount         = (double)sendParameters.CustomAmount,
                AmtRange       = amtRangeParsed ? amtRange : AmountRange.CustomAmount,
                Country        = sendParameters.Country,
                State          = sendParameters.State,
                FeeType        = itemChoiceTypeParsed ? itemChoiceType : ItemChoiceType1.amountExcludingFee,
                SendCurr       = sendParameters.SendCurr,
                ServiceOption  = sendParameters.ServiceOption,
                ThirdPartyType = sendParameters.ThirdPartyType
            };
            var receiveAgentState = sendParameters.State.Split('-')[1];
            var receiveRequest    = new ReceiveRequest
            {
                AgentState     = receiveAgentState,
                ThirdPartyType = sendParameters.ThirdPartyType
            };

            var sendData = new SendData(sendRequest);

            sendData = SendOperations.SendCompleteForNewCustomer(sendData);

            var receiveData = new ReceiveData(receiveRequest);

            receiveData.Set(sendData);
            receiveData = ReceiveOperations.ReceiveCompleteStaged(receiveData);

            return(new TransactionResult {
                Result = receiveData
            });
        }
コード例 #17
0
        public async Task RequestDisassembler_WithVariableStream_Sends()
        {
            var sender    = new PayloadSender();
            var transport = new MockTransportSender();

            sender.Connect(transport);
            var ops = new SendOperations(sender);

            var request = StreamingRequest.CreatePost("/a/b");
            var stream  = new PayloadStream(new PayloadStreamAssembler(null, Guid.NewGuid(), "blah", 100));

            stream.Write(new byte[100], 0, 100);
            request.AddStream(new StreamContent(stream));

            await ops.SendRequestAsync(Guid.NewGuid(), request);

            Assert.AreEqual(5, transport.Buffers.Count);
        }
コード例 #18
0
ファイル: RecvTests.cs プロジェクト: war-man/Agentworks_API
        public void Recv_StageReceive_SmallAmount_NewCustomer()
        {
            var sendRequest = new SendRequest
            {
                AgentState     = AgentLocation.MN,
                Country        = Country.Usa,
                State          = State.Ny,
                SendCurr       = Currency.Usd,
                AmtRange       = AmountRange.UnderOneHundred,
                FeeType        = ItemChoiceType1.amountExcludingFee,
                ThirdPartyType = TestThirdPartyType.None
            };

            sendRequest.PopulateAgentData(sendRequest.AgentState);

            var sendData = new SendData(sendRequest);

            sendData = SendOperations.SendCompleteForNewCustomer(sendData);
            var receiveRequest = new ReceiveRequest()
            {
                AgentState     = AgentLocation.NY,
                ThirdPartyType = TestThirdPartyType.None
            };

            receiveRequest.PopulateAgentData(receiveRequest.AgentState);
            var receiveData = new ReceiveData(receiveRequest);

            receiveData.Set(sendData);

            receiveData = ReceiveOperations.ReceiveCompleteStaged(receiveData);
            receiveData = ReceiveOperations.TransactionLookupForReceiveCompletion(receiveData);

            // ASSERT ALL THE THINGS
            Assert.IsFalse(sendData.Errors.Any(), $" {Environment.NewLine}Errors: {Environment.NewLine}{sendData.Errors?.Log()}");
            Assert.IsFalse(receiveData.Errors.Any(), $" {Environment.NewLine}Errors: {Environment.NewLine}{sendData.Errors?.Log()}");
            Assert.IsFalse(receiveData.TransactionLookupResponse.Errors.Any(), $" {Environment.NewLine}Errors: {Environment.NewLine}{receiveData.TransactionLookupResponse.Errors?.Log()}");
            Assert.IsTrue(receiveData.TransactionLookupResponse.Payload.TransactionStatus == TransactionStatusType.AVAIL);
        }
コード例 #19
0
 public void TestSetup()
 {
     _sendOperations = new SendOperations(new TestRunner());
 }
コード例 #20
0
 public void TestSetup()
 {
     _repo = new TrainingModeRepository();
     _sendOperations = new SendOperations(new TestRunner(true));
     _billPayOperations = new BillPayOperations(new TestRunner(true));
 }