public async Task TestFullBlownStoreAndRetrieve() { // Arrange var msgId = Guid.NewGuid().ToString(); var idempotencyData = new IdempotencyData(); idempotencyData.MarkMessageAsHandled(Guid.NewGuid().ToString()); idempotencyData.AddOutgoingMessage( Guid.NewGuid().ToString(), new [] { "test_destination" }, new TransportMessage(new Dictionary <string, string>(), Encoding.ASCII.GetBytes("test_body"))); var msgData = new MessageData { MessageId = msgId, InputQueueAddress = "testQueueName", ProcessingThreadId = 123, TimeThreadIdAssigned = new DateTime(2017, 3, 27, 1, 23, 45), IdempotencyData = idempotencyData }; // Act await _messageStorage.InsertOrUpdate(msgData); var retrievedMsgData = await _messageStorage.Find(msgId); // Assert Assert.Equal(msgData.MessageId, retrievedMsgData.MessageId); Assert.Equal(msgData.InputQueueAddress, retrievedMsgData.InputQueueAddress); Assert.Equal(msgData.ProcessingThreadId, retrievedMsgData.ProcessingThreadId); Assert.Equal(msgData.TimeThreadIdAssigned, retrievedMsgData.TimeThreadIdAssigned); Assert.Equal(msgData.IdempotencyData.HandledMessageIds, retrievedMsgData.IdempotencyData.HandledMessageIds); Assert.Equal(msgData.IdempotencyData.OutgoingMessages[0].MessageId, retrievedMsgData.IdempotencyData.OutgoingMessages[0].MessageId); }