public async Task GetHandlerInfo_FindInnerClassHandlerInfo( string message, [Frozen] IMessageTypeTopicMap messageTypeTopicMap, MessageHandlerInfoProvider sut) { var messageType = typeof(string); messageTypeTopicMap.GetMessageTypes().Returns(new[] { messageType }); var actual = sut.GetHandlerInfo(); var handlerInfo = Assert.Single(actual); Assert.Equal(messageType, handlerInfo.messageType); Assert.Equal(typeof(IMessageHandler <string>), handlerInfo.handlerType); bool callbackFired = false; var handler = new TestStringHandler(m => { callbackFired = true; Assert.Equal(message, m); }); await handlerInfo.handleMethod(handler, message, None); Assert.True(callbackFired); }
public void Constructor_NullMessageHandlerInvoker_ThrowsNullArgument( [Frozen] IMessageTypeTopicMap messageTypeTopicMap, [Frozen] ISerializer serializer) { var ex = Assert.Throws <ArgumentNullException>(() => new DispatchingRawMessageHandler(messageTypeTopicMap, serializer, null)); Assert.Equal("messageHandlerInvoker", ex.ParamName); }
public void Constructor_NullRawMessagePublisher_ThrowsNullArgument( [Frozen] IMessageTypeTopicMap messageTypeTopicMap, [Frozen] ISerializer serializer) { var ex = Assert.Throws <ArgumentNullException>(() => new SerializedMessagePublisher(messageTypeTopicMap, serializer, null)); Assert.Equal("rawMessagePublisher", ex.ParamName); }
public SerializedMessagePublisher( IMessageTypeTopicMap typeTopicMap, ISerializer serializer, IRawMessagePublisher rawMessagePublisher) { _typeTopicMap = typeTopicMap ?? throw new ArgumentNullException(nameof(typeTopicMap)); _rawMessagePublisher = rawMessagePublisher ?? throw new ArgumentNullException(nameof(rawMessagePublisher)); _serializer = serializer ?? throw new ArgumentNullException(nameof(serializer)); }
public DispatchingRawMessageHandler( IMessageTypeTopicMap typeTopicMap, ISerializer serializer, IMessageHandlerInvoker messageHandlerInvoker) { _messageHandlerInvoker = messageHandlerInvoker ?? throw new ArgumentNullException(nameof(messageHandlerInvoker)); _typeTopicMap = typeTopicMap ?? throw new ArgumentNullException(nameof(typeTopicMap)); _serializer = serializer ?? throw new ArgumentNullException(nameof(serializer)); }
/// <summary> /// Creates an instance of <see cref="MessageHandlerInfoProvider"/> with the specified <see cref="IMessageTypeTopicMap"/> /// </summary> /// <param name="typeTopicMap">A map between Topic names and Message types</param> public MessageHandlerInfoProvider(IMessageTypeTopicMap typeTopicMap) { _typeTopicMap = typeTopicMap ?? throw new ArgumentNullException(nameof(typeTopicMap)); if (!_typeTopicMap.Any()) { throw new ArgumentException($"{nameof(IMessageTypeTopicMap)} is empty."); } }
public async Task Handle_TopicMapNotDefined_ThrowsInvalidOperation( string topic, [Frozen] IMessageTypeTopicMap messageTypeTopicMap, DispatchingRawMessageHandler sut) { messageTypeTopicMap.Get(topic).ReturnsNull(); var ex = await Assert.ThrowsAsync <InvalidOperationException>(() => sut.Handle(topic, new byte[0], None)); Assert.Equal($"Topic '{topic}' has no message type registered with: {messageTypeTopicMap.GetType()}.", ex.Message); }
public async Task Publish_TopicMapNotDefined_ThrowsInvalidOperation( string message, [Frozen] IMessageTypeTopicMap messageTypeTopicMap, SerializedMessagePublisher sut) { messageTypeTopicMap.Get(message.GetType()).ReturnsNull(); var ex = await Assert.ThrowsAsync <InvalidOperationException>(() => sut.Publish(message, None)); Assert.Equal($"Message type {message.GetType()} is not registered with: {messageTypeTopicMap.GetType()}.", ex.Message); }
public async Task Handle_DeserializerReturnsNull_ThrowsInvalidOperation( string topic, byte[] message, [Frozen] IMessageTypeTopicMap messageTypeTopicMap, [Frozen] ISerializer serializer, DispatchingRawMessageHandler sut) { var messageType = GetType(); messageTypeTopicMap.Get(topic).Returns(messageType); serializer.Deserialize(messageType, message).ReturnsNull(); var ex = await Assert.ThrowsAsync <InvalidOperationException>(() => sut.Handle(topic, message, None)); Assert.Equal($"Serializer {serializer.GetType()} returned null for the {message.Length}-byte message of type {messageType}.", ex.Message); }
public async Task Publish_SerializerReturnsNull_ThrowsInvalidOperation( string topic, string message, [Frozen] IMessageTypeTopicMap messageTypeTopicMap, [Frozen] ISerializer serializer, SerializedMessagePublisher sut) { var messageType = GetType(); messageTypeTopicMap.Get(topic).Returns(messageType); serializer.Serialize(message).ReturnsNull(); var ex = await Assert.ThrowsAsync <InvalidOperationException>(() => sut.Publish(message, None)); Assert.Equal( $"Serializer {serializer.GetType()} returned null for message of type {message.GetType()}.", ex.Message); }
public async Task Handle_DeserializedMessage_CallsInvoker( string topic, byte[] message, object deserializedObject, [Frozen] IMessageHandlerInvoker messageHandlerInvoker, [Frozen] IMessageTypeTopicMap messageTypeTopicMap, [Frozen] ISerializer serializer, DispatchingRawMessageHandler sut) { // Arrange var messageType = GetType(); messageTypeTopicMap.Get(topic).Returns(messageType); serializer.Deserialize(messageType, message).Returns(deserializedObject); // Act await sut.Handle(topic, message, None); // Assert await messageHandlerInvoker.Received().Invoke(deserializedObject, None); }
public async Task Publish_SerializedMessage_CallsRawPublisher( string topic, bool message, byte[] serializedMessage, [Frozen] IRawMessagePublisher rawMessagePublisher, [Frozen] IMessageTypeTopicMap messageTypeTopicMap, [Frozen] ISerializer serializer, SerializedMessagePublisher sut) { // Arrange var messageType = message.GetType(); messageTypeTopicMap.Get(messageType).Returns(topic); serializer.Serialize(message).Returns(serializedMessage); // Act await sut.Publish(message, None); // Assert await rawMessagePublisher.Received().Publish(topic, serializedMessage, None); }