public void TestMessageBusBankGUID()
        {
            IMessageBusBank <string> messageBusBank = _erector.Container.Resolve <IMessageBusBank <string> >();
            string messageBusBankGUID = messageBusBank.MessageBusBankGUID;

            Assert.IsFalse(String.IsNullOrEmpty(messageBusBankGUID));
        }
示例#2
0
        public void TestGetNextChatMessageServiceGET()
        {
            IMarshaller marshaller = _erector.Container.Resolve <IMarshaller>();

            IGetNextChatMessageService getNextChatMessageService = _erector.Container.Resolve <IGetNextChatMessageService>();

            IMessageBus <string>           messageBus           = _erector.Container.Resolve <IMessageBus <string> >();
            IMessageBusReaderBank <string> messageBusReaderBank = _erector.Container.Resolve <IMessageBusReaderBank <string> >();

            messageBusReaderBank.SpecifyTheMessageBus(messageBus);
            IMessageBusWriter <string> messageBusWriter = _erector.Container.Resolve <IMessageBusWriter <string> >();

            messageBusWriter.SpecifyTheMessageBus(messageBus);

            IMessageBusBank <string> messageBusBank = _erector.Container.Resolve <IMessageBusBank <string> >();

            messageBusBank.RegisterMessageBus(getNextChatMessageService.ServiceGUID, messageBus);

            getNextChatMessageService.MessageBusBank       = messageBusBank;
            getNextChatMessageService.MessageBusReaderBank = messageBusReaderBank;
            getNextChatMessageService.MessageBusReaderBank.AddAnotherReader(getNextChatMessageService.ProcessMessage);
            getNextChatMessageService.MessageBusWiter = messageBusWriter;

            IChatMessageEnvelope requestEnvelope = _erector.Container.Resolve <IChatMessageEnvelope>();

            requestEnvelope.ChatMessageID = 123;

            //Test ITack cannot be null
            string tackCannotBeNull;

            try
            {
                tackCannotBeNull = getNextChatMessageService.Get(requestEnvelope);
                Assert.Fail();
            }
            catch (InvalidOperationException ex)
            {
                string message = ex.Message;
                Assert.AreEqual(message, getNextChatMessageService.ExceptionMessage_ITackCannotBeNull);
            }

            getNextChatMessageService.Tack = GetMockedITack();
            requestEnvelope = GetValidChatMessageEnvelope();
            requestEnvelope.CreatedDateTime = DateTime.Now;
            IChatMessageEnvelope responseEnvelope;

            //Read next message
            string read = getNextChatMessageService.Get(requestEnvelope);

            Assert.IsFalse(String.IsNullOrEmpty(read));
            responseEnvelope = marshaller.UnMarshall <IChatMessageEnvelope>(read);
            Assert.IsNotNull(responseEnvelope);
            Assert.IsTrue(responseEnvelope.ChatMessageID > requestEnvelope.ChatMessageID);
            Assert.AreEqual(responseEnvelope.ChatChannelID, requestEnvelope.ChatChannelID);
            Assert.IsTrue(DateTime.Compare(responseEnvelope.CreatedDateTime, requestEnvelope.CreatedDateTime) > 0);
        }
        public void TestRegisterResolveRelaseMessageBus()
        {
            IMessageBusBank <string> messageBusBank = _erector.Container.Resolve <IMessageBusBank <string> >();
            bool addMessageBus     = false;
            bool releaseMessageBus = false;
            IMessageBus <string> resolveMessageBus = null;
            string busKeyCode = "123";

            IMessageBus <string> messageBus = null;

            try
            {
                addMessageBus = messageBusBank.RegisterMessageBus(busKeyCode, messageBus);
            }
            catch (InvalidOperationException ex)
            {
                Assert.AreEqual(ex.Message, messageBusBank.ExceptionMessage_MessgeBusCannotBeNull);
            }
            messageBus = _erector.Container.Resolve <IMessageBus <string> >();
            try
            {
                addMessageBus = messageBusBank.RegisterMessageBus(String.Empty, messageBus);
            }
            catch (InvalidOperationException ex)
            {
                Assert.AreEqual(ex.Message, messageBusBank.ExceptionMessage_BusKeyCodeCannotBeNullOrEmpty);
            }
            addMessageBus = messageBusBank.RegisterMessageBus(busKeyCode, messageBus);
            Assert.IsTrue(addMessageBus);


            try
            {
                resolveMessageBus = messageBusBank.ResolveMessageBus(String.Empty);
            }
            catch (InvalidOperationException ex)
            {
                Assert.AreEqual(ex.Message, messageBusBank.ExceptionMessage_BusKeyCodeCannotBeNullOrEmpty);
            }
            resolveMessageBus = messageBusBank.ResolveMessageBus(busKeyCode);
            Assert.IsNotNull(resolveMessageBus);
            Assert.AreEqual(messageBus.MessageBusGUID, resolveMessageBus.MessageBusGUID);


            try
            {
                releaseMessageBus = messageBusBank.ReleaseMessageBus(String.Empty);
            }
            catch (InvalidOperationException ex)
            {
                Assert.AreEqual(ex.Message, messageBusBank.ExceptionMessage_BusKeyCodeCannotBeNullOrEmpty);
            }
            releaseMessageBus = messageBusBank.ReleaseMessageBus(busKeyCode);
            Assert.IsTrue(releaseMessageBus);
        }
示例#4
0
        public void TestModifyChatMessageServiceSendResponse()
        {
            IMarshaller marshaller = _erector.Container.Resolve <IMarshaller>();

            IModifyChatMessageService modifyChatMessageService = _erector.Container.Resolve <IModifyChatMessageService>();

            string clientGuid = Guid.NewGuid().ToString();
            IMessageBus <string> messageBus_Client  = _erector.Container.Resolve <IMessageBus <string> >();
            IMessageBus <string> messageBus_Service = _erector.Container.Resolve <IMessageBus <string> >();

            messageBus_Client.JsonSchema =
                (message) =>
            {
                //NOTE: Require this schema for the client only since I'm not sending anything to the service.
                return(_erector.Container.Resolve <IChatMessageEnvelope>().GetMyJSONSchema());
            };

            IMessageBusBank <string> messageBusBank = _erector.Container.Resolve <IMessageBusBank <string> >();

            messageBusBank.RegisterMessageBus(modifyChatMessageService.ServiceGUID, messageBus_Service);
            messageBusBank.RegisterMessageBus(clientGuid, messageBus_Client);


            IChatMessageEnvelope requestEnvelope = GetValidChatMessageEnvelope();
            string requestPayload = marshaller.MarshallPayloadJSON(requestEnvelope);
            bool   success        = false;

            //MessageBusBank cannot be null
            try
            {
                success = modifyChatMessageService.SendResponse(clientGuid, requestPayload);
                Assert.Fail();
            }
            catch (InvalidOperationException ex)
            {
                string message = ex.Message;
                Assert.AreEqual(message, modifyChatMessageService.ExceptionMessage_MessageBusBankCannotBeNull);
            }
            success = false;

            //Client should recieve message in their message bus.
            modifyChatMessageService.MessageBusBank = messageBusBank;
            success = modifyChatMessageService.SendResponse(clientGuid, requestPayload);
            Assert.IsTrue(success);
            string clientMessage = messageBus_Client.ReceiveMessage();

            Assert.IsFalse(String.IsNullOrEmpty(clientMessage));
            Assert.AreEqual(requestPayload, clientMessage);
        }
        private IRoutingTable <T> GetMockedRoutingTable <T>()
        {
            IMessageBusBank <T> messageBusBank = _erector.Container.Resolve <IMessageBusBank <T> >();
            var mockedRoutingTable             = new Mock <IRoutingTable <T> >();

            mockedRoutingTable
            .Setup(routingTable => routingTable.RoutingTableGUID)
            .Returns("15242");
            mockedRoutingTable
            .SetupProperty(routingTable => routingTable.MessageBusBank, messageBusBank);
            mockedRoutingTable
            .Setup(routingTable => routingTable.RegisterRoute(It.IsAny <string>(), It.IsAny <Action <T> >()))
            .Returns(() => true);
            mockedRoutingTable
            .Setup(routingTable => routingTable.ResolveRoute(It.IsAny <string>()))
            .Returns(() => (message) => { });
            mockedRoutingTable
            .Setup(routingTable => routingTable.ReleaseRoute(It.IsAny <string>()))
            .Returns(() => true);
            return(mockedRoutingTable.Object);
        }
示例#6
0
        public void TestModifyChatMessageServiceCreateUpdateDelete()
        {
            IMarshaller marshaller = _erector.Container.Resolve <IMarshaller>();

            IModifyChatMessageService modifyChatMessageService = _erector.Container.Resolve <IModifyChatMessageService>();

            IMessageBus <string>           messageBus           = _erector.Container.Resolve <IMessageBus <string> >();
            IMessageBusReaderBank <string> messageBusReaderBank = _erector.Container.Resolve <IMessageBusReaderBank <string> >();

            messageBusReaderBank.SpecifyTheMessageBus(messageBus);
            IMessageBusWriter <string> messageBusWriter = _erector.Container.Resolve <IMessageBusWriter <string> >();

            messageBusWriter.SpecifyTheMessageBus(messageBus);

            IMessageBusBank <string> messageBusBank = _erector.Container.Resolve <IMessageBusBank <string> >();

            messageBusBank.RegisterMessageBus(modifyChatMessageService.ServiceGUID, messageBus);

            modifyChatMessageService.MessageBusBank       = messageBusBank;
            modifyChatMessageService.MessageBusReaderBank = messageBusReaderBank;
            modifyChatMessageService.MessageBusReaderBank.AddAnotherReader(modifyChatMessageService.ProcessMessage);
            modifyChatMessageService.MessageBusWiter = messageBusWriter;

            IChatMessageEnvelope requestEnvelope = _erector.Container.Resolve <IChatMessageEnvelope>();

            requestEnvelope.ChatMessageID = 123;

            //Test ITack cannot be null
            string tackCannotBeNull;

            try
            {
                tackCannotBeNull = modifyChatMessageService.Post(requestEnvelope);
                Assert.Fail();
            }
            catch (InvalidOperationException ex)
            {
                string message = ex.Message;
                Assert.AreEqual(message, modifyChatMessageService.ExceptionMessage_ITackCannotBeNull);
            }
            try
            {
                tackCannotBeNull = modifyChatMessageService.Put(requestEnvelope);
                Assert.Fail();
            }
            catch (InvalidOperationException ex)
            {
                string message = ex.Message;
                Assert.AreEqual(message, modifyChatMessageService.ExceptionMessage_ITackCannotBeNull);
            }
            try
            {
                tackCannotBeNull = modifyChatMessageService.Delete(requestEnvelope);
                Assert.Fail();
            }
            catch (InvalidOperationException ex)
            {
                string message = ex.Message;
                Assert.AreEqual(message, modifyChatMessageService.ExceptionMessage_ITackCannotBeNull);
            }

            modifyChatMessageService.Tack = GetMockedITack();
            requestEnvelope = _erector.Container.Resolve <IChatMessageEnvelope>();
            IChatMessageEnvelope responseEnvelope;

            //Create
            string created = modifyChatMessageService.Post(requestEnvelope);

            Assert.IsFalse(String.IsNullOrEmpty(created));
            responseEnvelope = marshaller.UnMarshall <IChatMessageEnvelope>(created);
            Assert.AreEqual(responseEnvelope.ChatMessageID, requestEnvelope.ChatMessageID);
            Assert.IsTrue(DateTime.Compare(responseEnvelope.CreatedDateTime, DateTime.MinValue) > 0);
            requestEnvelope = _erector.Container.Resolve <IChatMessageEnvelope>();
            requestEnvelope.ChatMessageID = 123;


            //Update
            string updated = modifyChatMessageService.Put(requestEnvelope);

            Assert.IsFalse(String.IsNullOrEmpty(updated));
            responseEnvelope = marshaller.UnMarshall <IChatMessageEnvelope>(updated);
            Assert.AreEqual(responseEnvelope.ChatMessageID, requestEnvelope.ChatMessageID);
            Assert.IsTrue(DateTime.Compare(responseEnvelope.ModifiedDateTime, requestEnvelope.ModifiedDateTime) > 0);
            requestEnvelope = _erector.Container.Resolve <IChatMessageEnvelope>();
            requestEnvelope.ChatMessageID = 123;


            //Delete
            string deleted = modifyChatMessageService.Delete(requestEnvelope);

            Assert.IsFalse(String.IsNullOrEmpty(deleted));
            responseEnvelope = marshaller.UnMarshall <IChatMessageEnvelope>(deleted);
            Assert.AreEqual(responseEnvelope.ChatMessageID, requestEnvelope.ChatMessageID);
            Assert.IsTrue(DateTime.Compare(responseEnvelope.ModifiedDateTime, requestEnvelope.ModifiedDateTime) > 0);
        }