public async Task GetNext_HandlesUnserializableMessageBody()
        {
            var messageClass = typeof(TestSagaMessage1).FullName + ", " + typeof(TestSagaMessage1).Assembly.GetName().Name;

            var expectedMessage = new SubscribedMessage
            {
                Headers = "{ \"MessageClass\":\"" + messageClass + "\"}"
            };

            var expectedHeaders = new Headers
            {
                MessageClass     = messageClass,
                ExceptionDetails = null
            };

            var expectedUserMessage = new TestSagaMessage1();

            var subscriberId = Guid.NewGuid();

            dataAccess.Setup(d => d.GetPendingSubscribed(subscriberId))
            .Returns(Task.FromResult(expectedMessage));

            serializer.Setup(s => s.DeserializeHeaders(It.IsAny <string>()))
            .Returns(expectedHeaders);

            serializer.Setup(s => s.DeserializeMessage(It.IsAny <string>(), typeof(TestSagaMessage1)))
            .Throws(new JsonException());

            var message = await reader.GetNext(subscriberId);

            Assert.IsTrue(ReferenceEquals(expectedMessage, message.MessageData));
            Assert.IsTrue(ReferenceEquals(expectedHeaders, message.Headers));
            Assert.IsNull(message.Message);
        }
        public async Task GetNext_HandlesUnrecognizedMessageClass()
        {
            var messageClass = "Peachtreebus.Tests.Sagas.TestSagaNotARealMessage, " + typeof(TestSagaMessage1).Assembly.GetName().Name;

            var expectedMessage = new SubscribedMessage
            {
                Headers = "{ \"MessageClass\":\"" + messageClass + "\"}"
            };

            var expectedHeaders = new Headers
            {
                MessageClass     = messageClass,
                ExceptionDetails = null
            };

            var expectedUserMessage = new TestSagaMessage1();

            Guid subscriberId = Guid.NewGuid();

            dataAccess.Setup(d => d.GetPendingSubscribed(subscriberId))
            .Returns(Task.FromResult(expectedMessage));

            serializer.Setup(s => s.DeserializeHeaders(It.IsAny <string>()))
            .Returns(expectedHeaders);

            var message = await reader.GetNext(subscriberId);

            serializer.Verify(s => s.DeserializeMessage(It.IsAny <string>(), It.IsAny <Type>()), Times.Never);
            Assert.IsTrue(ReferenceEquals(expectedMessage, message.MessageData));
            Assert.IsNotNull(message.Headers);
            Assert.IsNull(message.Message);
        }
Ejemplo n.º 3
0
        public async Task GetNext_HandlesUndeserializableHeaders()
        {
            var messageClass = typeof(TestSagaMessage1).FullName + ", " + typeof(TestSagaMessage1).Assembly.GetName().Name;

            var expectedQueueMessage = new QueueMessage
            {
                Headers = "{ \"MessageClass\":\"" + messageClass + "\"}"
            };

            var expectedHeaders = new Headers
            {
                MessageClass     = messageClass,
                ExceptionDetails = null
            };

            var expectedUserMessage = new TestSagaMessage1();

            dataAccess.Setup(d => d.GetPendingQueued("SourceQueue"))
            .Returns(Task.FromResult(expectedQueueMessage));

            serializer.Setup(s => s.DeserializeHeaders(It.IsAny <string>()))
            .Throws(new JsonException());

            serializer.Setup(s => s.DeserializeMessage(It.IsAny <string>(), typeof(TestSagaMessage1)))
            .Returns(expectedUserMessage);

            var message = await reader.GetNext("SourceQueue");

            Assert.IsTrue(ReferenceEquals(expectedQueueMessage, message.MessageData));
            Assert.IsNotNull(message.Headers);
            Assert.IsNull(message.Message);
            Assert.AreEqual("SourceQueue", message.SourceQueue);
        }
Ejemplo n.º 4
0
        public void WriteMessage_ForwardsToInterface()
        {
            var writer = new Mock <IQueueWriter>();

            var message   = new TestSagaMessage1();
            var notBefore = DateTime.UtcNow;

            writer.Setup(w => w.WriteMessage("TestQueue", typeof(TestSagaMessage1), message, notBefore)).Verifiable();

            writer.Object.WriteMessage("TestQueue", message, notBefore);

            writer.Verify();
        }
Ejemplo n.º 5
0
 public Task Handle(QueueContext context, TestSagaMessage1 message)
 {
     // do nothing.
     return(Task.CompletedTask);
 }
Ejemplo n.º 6
0
 public void ProcessFirstMessage(TestSagaMessage1 message)
 {
     _received_message = message;
     _saga_id = this.SagaId;
     _wait.Set();
 }