public void WithMessageHandlerWithDefaultContext_WithMessageContextFilterWithMessageBodyFilterWithImplementationFactory_UsesSerializer(bool matchesContext, bool matchesBody) { // Arrange var services = new MessageHandlerCollection(new ServiceCollection()); var expectedMessage = new TestMessage(); var expectedContext = new MessageContext($"message-id-{Guid.NewGuid()}", new Dictionary <string, object>()); var expectedHandler = new DefaultTestMessageHandler(); // Act services.WithMessageHandler <DefaultTestMessageHandler, TestMessage>( messageContextFilter: context => { Assert.Same(expectedContext, context); return(matchesContext); }, messageBodyFilter: body => { Assert.Same(expectedMessage, body); return(matchesBody); }, implementationFactory: serviceProvider => expectedHandler); // Assert IServiceProvider provider = services.Services.BuildServiceProvider(); IEnumerable <MessageHandler> handlers = MessageHandler.SubtractFrom(provider, NullLogger.Instance); Assert.NotNull(handlers); MessageHandler handler = Assert.Single(handlers); Assert.NotNull(handler); Assert.NotSame(expectedHandler, handler); Assert.Equal(matchesContext, handler.CanProcessMessageBasedOnContext(expectedContext)); Assert.Equal(matchesBody, handler.CanProcessMessageBasedOnMessage(expectedMessage)); }
public void WithServiceBusMessageHandler_WithMessageContextFilterWithMessageBodyFilterWithImplementationFactory_UsesSerializer(bool matchesContext, bool matchesBody) { // Arrange var collection = new ServiceBusMessageHandlerCollection(new ServiceCollection()); var expectedMessage = new TestMessage(); var expectedContext = AzureServiceBusMessageContextFactory.Generate(); var expectedHandler = new TestServiceBusMessageHandler(); // Act collection.WithServiceBusMessageHandler <TestServiceBusMessageHandler, TestMessage>( messageContextFilter: context => { Assert.Same(expectedContext, context); return(matchesContext); }, messageBodyFilter: body => { Assert.Same(expectedMessage, body); return(matchesBody); }, implementationFactory: serviceProvider => expectedHandler); // Assert IServiceProvider provider = collection.Services.BuildServiceProvider(); IEnumerable <MessageHandler> handlers = MessageHandler.SubtractFrom(provider, NullLogger.Instance); Assert.NotNull(handlers); MessageHandler handler = Assert.Single(handlers); Assert.NotNull(handler); Assert.Same(expectedHandler, handler.GetMessageHandlerInstance()); Assert.Equal(matchesContext, handler.CanProcessMessageBasedOnContext(expectedContext)); Assert.Equal(matchesBody, handler.CanProcessMessageBasedOnMessage(expectedMessage)); }
public void WithMessageHandlerWithCustomContext_WithMessageContextFilterWithMessageBodyFilter_UsesSerializer(bool matchesContext, bool matchesBody) { // Arrange var services = new MessageHandlerCollection(new ServiceCollection()); var expectedMessage = new TestMessage(); var expectedContext = TestMessageContext.Generate(); var expectedHandler = new DefaultTestMessageHandler(); // Act services.WithMessageHandler <TestMessageHandler, TestMessage, TestMessageContext>( messageContextFilter: context => { Assert.Same(expectedContext, context); return(matchesContext); }, messageBodyFilter: body => { Assert.Same(expectedMessage, body); return(matchesBody); }); // Assert IServiceProvider provider = services.Services.BuildServiceProvider(); IEnumerable <MessageHandler> handlers = MessageHandler.SubtractFrom(provider, NullLogger.Instance); Assert.NotNull(handlers); MessageHandler handler = Assert.Single(handlers); Assert.NotNull(handler); Assert.NotSame(expectedHandler, handler); Assert.Equal(matchesContext, handler.CanProcessMessageBasedOnContext(expectedContext)); Assert.Equal(matchesBody, handler.CanProcessMessageBasedOnMessage(expectedMessage)); }
public void WithMessageHandlerWithCustomContext_WithMessageContextFilterWithImplementationFactory_UsesFilter(bool matches) { // Arrange var services = new MessageHandlerCollection(new ServiceCollection()); var expectedHandler = new TestMessageHandler(); var expectedContext = TestMessageContext.Generate(); // Act services.WithMessageHandler <TestMessageHandler, TestMessage, TestMessageContext>(messageContextFilter: context => { Assert.Same(expectedContext, context); return(matches); }, implementationFactory: serviceProvider => expectedHandler); // Assert IServiceProvider provider = services.Services.BuildServiceProvider(); IEnumerable <MessageHandler> handlers = MessageHandler.SubtractFrom(provider, NullLogger.Instance); MessageHandler handler = Assert.Single(handlers); Assert.NotNull(handler); Assert.NotSame(expectedHandler, handler); bool actual = handler.CanProcessMessageBasedOnContext(expectedContext); Assert.Equal(matches, actual); }
public async Task WithMessageHandlerWithDefaultContext_WithMessageContextFilterMessageBodySerializerImplementationFactory_UsesSerializer(bool matches) { // Arrange var services = new MessageHandlerCollection(new ServiceCollection()); var expectedBody = $"test-message-body-{Guid.NewGuid()}"; var expectedMessage = new TestMessage(); var expectedContext = new MessageContext("message-id", new Dictionary <string, object>()); var serializer = new TestMessageBodySerializer(expectedBody, expectedMessage); // Act services.WithMessageHandler <DefaultTestMessageHandler, TestMessage>( messageContextFilter: context => { Assert.Same(expectedContext, context); return(matches); }, messageBodySerializerImplementationFactory: serviceProvider => serializer); // Assert IServiceProvider provider = services.Services.BuildServiceProvider(); IEnumerable <MessageHandler> handlers = MessageHandler.SubtractFrom(provider, NullLogger.Instance); Assert.NotNull(handlers); MessageHandler handler = Assert.Single(handlers); Assert.NotNull(handler); bool actual = handler.CanProcessMessageBasedOnContext(expectedContext); Assert.Equal(matches, actual); MessageResult result = await handler.TryCustomDeserializeMessageAsync(expectedBody); Assert.NotNull(result); Assert.Same(expectedMessage, result.DeserializedMessage); }
public async Task WithMessageHandler_WithMessageContextFilterWithMessageBodySerializer_UsesSerializer(bool matches) { // Arrange var collection = new ServiceBusMessageHandlerCollection(new ServiceCollection()); var expectedBody = $"test-message-body-{Guid.NewGuid()}"; var expectedMessage = new TestMessage(); var expectedContext = AzureServiceBusMessageContextFactory.Generate(); var serializer = new TestMessageBodySerializer(expectedBody, expectedMessage); // Act collection.WithServiceBusMessageHandler <TestServiceBusMessageHandler, TestMessage>( messageContextFilter: context => { Assert.Same(expectedContext, context); return(matches); }, messageBodySerializer: serializer); // Assert IServiceProvider provider = collection.Services.BuildServiceProvider(); IEnumerable <MessageHandler> handlers = MessageHandler.SubtractFrom(provider, NullLogger.Instance); Assert.NotNull(handlers); MessageHandler handler = Assert.Single(handlers); Assert.NotNull(handler); bool actual = handler.CanProcessMessageBasedOnContext(expectedContext); Assert.Equal(matches, actual); MessageResult result = await handler.TryCustomDeserializeMessageAsync(expectedBody); Assert.NotNull(result); Assert.Same(expectedMessage, result.DeserializedMessage); }
public void CustomMessageHandlerFactory_WithMessageBodyAndContextFilter_SubtractsRegistration(bool matchesBody, bool matchesContext) { // Arrange var collection = new MessageHandlerCollection(new ServiceCollection()); var spyHandler = new TestMessageHandler(); collection.WithMessageHandler <TestMessageHandler, TestMessage, TestMessageContext>( (TestMessageContext messageContext) => matchesContext, (TestMessage messageBody) => matchesBody, provider => spyHandler); ServiceProvider serviceProvider = collection.Services.BuildServiceProvider(); // Act IEnumerable <MessageHandler> messageHandlers = MessageHandler.SubtractFrom(serviceProvider, _logger); // Assert MessageHandler messageHandler = Assert.Single(messageHandlers); Assert.NotNull(messageHandler); var context = TestMessageContext.Generate(); Assert.Equal(matchesContext, messageHandler.CanProcessMessageBasedOnContext(messageContext: context)); Assert.Equal(matchesBody, messageHandler.CanProcessMessageBasedOnMessage(new TestMessage())); }
public void CustomMessageHandlerConstructor_WithDefaultContextFilter_SubtractsRegistration(bool matchesContext) { // Arrange var collection = new MessageHandlerCollection(new ServiceCollection()); collection.WithMessageHandler <DefaultTestMessageHandler, TestMessage>((MessageContext messageContext) => matchesContext); ServiceProvider serviceProvider = collection.Services.BuildServiceProvider(); // Act IEnumerable <MessageHandler> messageHandlers = MessageHandler.SubtractFrom(serviceProvider, _logger); // Assert MessageHandler messageHandler = Assert.Single(messageHandlers); Assert.NotNull(messageHandler); var context = new MessageContext("message-id", new Dictionary <string, object>()); Assert.Equal(matchesContext, messageHandler.CanProcessMessageBasedOnContext(context)); }
public async Task WithMessageHandlerCustomContext_WithContextFilterWithMessageBodySerializerImplementationFactoryWithMessageBodyFilterWithMessageHandlerImplementationFactory_UsesFilter(bool matchesContext, bool matchesBody) { // Arrange var services = new MessageHandlerCollection(new ServiceCollection()); var expectedBody = $"test-message-body-{Guid.NewGuid()}"; var expectedMessage = new TestMessage(); var expectedContext = TestMessageContext.Generate(); var serializer = new TestMessageBodySerializer(expectedBody, expectedMessage); var expectedHandler = new TestMessageHandler(); // Act services.WithMessageHandler <TestMessageHandler, TestMessage, TestMessageContext>( messageContextFilter: context => { Assert.Same(expectedContext, context); return(matchesContext); }, messageBodySerializerImplementationFactory: serviceProvider => serializer, messageBodyFilter: body => { Assert.Same(expectedMessage, body); return(matchesBody); }, messageHandlerImplementationFactory: serviceProvider => expectedHandler); // Assert IServiceProvider provider = services.Services.BuildServiceProvider(); IEnumerable <MessageHandler> handlers = MessageHandler.SubtractFrom(provider, NullLogger.Instance); MessageHandler handler = Assert.Single(handlers); Assert.NotNull(handler); Assert.Same(expectedHandler, handler.GetMessageHandlerInstance()); Assert.Equal(matchesBody, handler.CanProcessMessageBasedOnMessage(expectedMessage)); Assert.Equal(matchesContext, handler.CanProcessMessageBasedOnContext(expectedContext)); MessageResult result = await handler.TryCustomDeserializeMessageAsync(expectedBody); Assert.NotNull(result); Assert.Same(expectedMessage, result.DeserializedMessage); }
public void WithMessageHandlerWithDefaultContext_WithMessageContextFilter_UsesFilter(bool matches) { // Arrange var services = new MessageHandlerCollection(new ServiceCollection()); var expectedContext = new MessageContext("message-id", new Dictionary <string, object>()); // Act services.WithMessageHandler <DefaultTestMessageHandler, TestMessage>(messageContextFilter: context => { Assert.Same(expectedContext, context); return(matches); }); // Assert IServiceProvider provider = services.Services.BuildServiceProvider(); IEnumerable <MessageHandler> handlers = MessageHandler.SubtractFrom(provider, NullLogger.Instance); MessageHandler handler = Assert.Single(handlers); Assert.NotNull(handler); bool actual = handler.CanProcessMessageBasedOnContext(expectedContext); Assert.Equal(matches, actual); }