public void ProcessReceivedMessageInputValidMessageAssertValid()
        {
            var jsonDataContractSerializer = new JsonDataContractSerializer();

            var messageFake = new MessageFake {
                CreatedAt = DateTime.Now.Date
            };
            var messageBus = MessageBusFactory.Create(new Identification(), messageFake, jsonDataContractSerializer);

            var inputGateway = RouterGatewayFactory.CreateInputGateway(_receiverEndPoint.Object, 5);

            var eventargs = new EventReceiverEndPointHandlerArgs
            {
                Message = Encoding.UTF8.GetBytes(jsonDataContractSerializer.Serialize(messageBus))
            };


            _receiverEndPoint.Setup(r => r.Start()).Raises(r => r.OnReceivedMessage += null, new object[] { null, eventargs });

            MessageBus messageReceived = null;

            inputGateway.OnMessage += (sender, args) => messageReceived = jsonDataContractSerializer.Deserialize <MessageBus>(args.Message);


            inputGateway.Start();

            Assert.AreEqual(messageBus.Body, messageReceived.Body);
            Assert.AreEqual(messageBus.Header.Type, messageReceived.Header.Type);
            Assert.AreEqual(messageBus.Header.BodyType, messageReceived.Header.BodyType);
        }
        public void CreateOutputGatewayFromSenderEndPoint()
        {
            var aog = RouterGatewayFactory.CreateOutputGateway(_fakeISenderEndPoint.Object);

            Assert.IsInstanceOf(typeof(RouterOutputGateway), aog);
            Assert.AreEqual(aog.GetSenderEndPoint().Uri, _fakeISenderEndPoint.Object.Uri);
            Assert.AreEqual(aog.GetSenderEndPoint().Transport, _fakeISenderEndPoint.Object.Transport);
        }
        public void CreateOutputGatewayFromUriAndTransportTypeMsmq()
        {
            var aog = RouterGatewayFactory.CreateOutputGateway(_uri, _transportType);

            Assert.IsInstanceOf(typeof(RouterOutputGateway), aog);
            Assert.AreEqual(aog.GetSenderEndPoint().Uri, _uri);
            Assert.AreEqual(aog.GetSenderEndPoint().Transport, _transportType);
        }
        public void CreateInputGatewayFromUriAndTransportTypeMsmqAndIDataContractSerializer()
        {
            var aig = RouterGatewayFactory.CreateInputGateway(_uri, _transportType, _fakeDataContractSerializer.Object, 100, 5);

            Assert.IsInstanceOf(typeof(RouterInputGateway), aig);
            Assert.AreEqual(aig.ReceiverEndPoint.Uri, _uri);
            Assert.AreEqual(aig.ReceiverEndPoint.Transport, _transportType);
        }
        public void CreateInputGatewayFromUriAndTransportTypeMsmq()
        {
            var aig = RouterGatewayFactory.CreateInputGateway(_uri, _transportType, 100, 5);

            Assert.IsInstanceOf(typeof(RouterInputGateway), aig);
            Assert.AreEqual(aig.ReceiverEndPoint.Uri, _uri);
            Assert.AreEqual(aig.ReceiverEndPoint.Transport, _transportType);
        }
        public void CreateInputGatewayFromIReceiverEndPoint()
        {
            var aig = RouterGatewayFactory.CreateInputGateway(_fakeIReceiverEndPoint.Object, 5);

            Assert.IsInstanceOf(typeof(RouterInputGateway), aig);
            Assert.AreEqual(aig.ReceiverEndPoint.Uri, _fakeIReceiverEndPoint.Object.Uri);
            Assert.AreEqual(aig.ReceiverEndPoint.Transport, _fakeIReceiverEndPoint.Object.Transport);
        }
        public void CreateOutputGatewayFromUriAndTransportTypeMsmqAndIDataContractSerializer()
        {
            var aog = RouterGatewayFactory.CreateOutputGateway(_uri, _transportType, _fakeDataContractSerializer.Object);

            Assert.IsInstanceOf(typeof(RouterOutputGateway), aog);

            Assert.AreEqual(aog.GetSenderEndPoint().Uri, _uri);
            Assert.AreEqual(aog.GetSenderEndPoint().Transport, _transportType);
        }
        private RouterProcessorConfigurator LoadHelpers()
        {
            var uri = new Uri(_hermEsbConfig.RouterProcessor.Input.Uri);

            _input = RouterGatewayFactory.CreateInputGateway(uri,
                                                             _hermEsbConfig.RouterProcessor.Input.Transport,
                                                             _hermEsbConfig.RouterProcessor.NumberOfParallelTasks,
                                                             _hermEsbConfig.RouterProcessor.MaxReijections);
            return(this);
        }
        public void SendMessageAssertTrue()
        {
            var jsonDataContractSerializer = new JsonDataContractSerializer();

            var messageFake = new MessageFake {
                CreatedAt = DateTime.Now.Date
            };
            var messageBus = MessageBusFactory.Create(new Identification(), messageFake, jsonDataContractSerializer);

            var message = string.Empty;

            _senderEndPoint.Setup(s => s.Send(It.IsAny <string>(), It.IsAny <int>())).Callback <string, int>((s, p) => message = s);

            var outputGateway = RouterGatewayFactory.CreateOutputGateway(_senderEndPoint.Object);
            var serialize     = jsonDataContractSerializer.Serialize(messageBus);

            outputGateway.Send(Encoding.UTF8.GetBytes(serialize));
            Assert.AreEqual(serialize, message);
        }
        /// <summary>
        /// Toes the subscriptor.
        /// </summary>
        /// <param name="subscriptorEntity">The subscriptor entity.</param>
        /// <param name="processor">The processor.</param>
        /// <returns></returns>
        public static Subscriptor ToSubscriptor(this SubscriptorEntity subscriptorEntity, Identification processor)
        {
            var subscriptor = new Subscriptor
            {
                Service             = subscriptorEntity.Service,
                ServiceInputGateway =
                    RouterGatewayFactory.CreateOutputGateway(
                        new Uri(subscriptorEntity.InputGateway.Uri),
                        (TransportType)subscriptorEntity.InputGateway.Transport),
                ServiceInputControlGateway =
                    AgentGatewayFactory.CreateOutputGateway(processor,
                                                            new Uri(subscriptorEntity.InputControlGateway.Uri),
                                                            (TransportType)subscriptorEntity.InputControlGateway.Transport),
            };


            foreach (var subscriptionTypeMessage in subscriptorEntity.SubcriptionTypes)
            {
                subscriptor.SubcriptionTypes.Add(subscriptionTypeMessage.ToSubscriptorKey());
            }
            return(subscriptor);
        }