public async Task TestValidMessageCanBeParsedCorrectly()
        {
            Assert.Inconclusive("TODO: Encryption Stub");
            var messenger             = new InMemoryMessenger();
            var sendMessageInteractor = new SendMessageInteractor(messenger, new EncryptionStub(), new EncryptionStub());
            await sendMessageInteractor.ExecuteAsync(
                new SendMessageRequest
            {
                ChatAddress          = new Address(Hash.Empty.Value),
                ChatKeyPair          = InMemoryContactRepository.NtruKeyPair,
                Message              = "Hallo",
                UserPublicKeyAddress = new Address(Hash.Empty.Value)
            });

            var interactor = new GetMessagesInteractor(messenger, new EncryptionStub(), new EncryptionStub());
            var result     = await interactor.ExecuteAsync(
                new GetMessagesRequest
            {
                ChatAddress = new Address(Hash.Empty.Value),
                ChatKeyPair = InMemoryContactRepository.NtruKeyPair
            });

            Assert.AreEqual(ResponseCode.Success, result.Code);
            Assert.AreEqual(1, result.Messages.Count);
            Assert.AreEqual("Hallo", result.Messages[0].Message);
        }
        public async Task TestMessageIsTooLongShouldReturnErrorCode()
        {
            var interactor = new SendMessageInteractor(new InMemoryMessenger());
            var response   = await interactor.ExecuteAsync(
                new SendMessageRequest { Message = new string(Enumerable.Repeat('a', Constants.MessageCharacterLimit + 1).ToArray()) });

            Assert.AreEqual(ResponseCode.MessageTooLong, response.Code);
        }
        public async Task TestMessengerThrowsExceptionShouldReturnErrorCode()
        {
            var interactor = new SendMessageInteractor(new ExceptionMessenger(), new EncryptionStub(), new EncryptionStub());
            var response   = await interactor.ExecuteAsync(
                new SendMessageRequest
            {
                Message              = new string(Enumerable.Repeat('a', Constants.MessageCharacterLimit).ToArray()),
                ChatAddress          = new Address(Hash.Empty.Value),
                ChatKeyPair          = InMemoryContactRepository.NtruKeyPair,
                UserPublicKeyAddress = new Address(Hash.Empty.Value)
            });

            Assert.AreEqual(ResponseCode.MessengerException, response.Code);
        }