public void GIVEN_null_configuration_is_provided_WHEN_listened_a_message_THEN_it_does_nothing() { var dependencies = new MessageHandlerDependenciesHolder<AuditLogonAggregate>(); var aggregate = GenerateRandomAggregate(); var handlersConfig = new List<MessageHandlerConfiguration>(); dependencies.HostConfiguration.MessagesHandlers.Returns(handlersConfig); dependencies.MessageDecrypter.Decrypt<AuditLogonAggregate>(Arg.Any<NotNullable<BaseEvent>>()).Returns(aggregate); var sut = new AuditLogonMessageHandler( dependencies.RepositoryFactory, dependencies.MessageDecrypter, dependencies.HostConfiguration, dependencies.HostServiceEvents); var message = TestsHelpers.GenerateRandomMessage("RegisteredAuditLogon"); dependencies.HostServiceEvents.AddIncommingEvent(message); dependencies.Repository.DidNotReceive().Save(Arg.Any<AuditLogonAggregate>()); }
public void GIVEN_a_RegisteredAuditLogon_message_WHEN_listened_THEN_the_aggregate_is_saved_in_the_repository() { var dependencies = new MessageHandlerDependenciesHolder<AuditLogonAggregate>(); var aggregate = GenerateRandomAggregate(); var handlersConfig = new List<MessageHandlerConfiguration>(); handlersConfig.Add(new MessageHandlerConfigurationFake("AuditLogonMessageHandler", new List<ESynchroSystem>() { ESynchroSystem.PortalPaciente })); dependencies.HostConfiguration.MessagesHandlers.Returns(handlersConfig); dependencies.MessageDecrypter.Decrypt<AuditLogonAggregate>(Arg.Any<NotNullable<BaseEvent>>()).Returns(aggregate); var sut = new AuditLogonMessageHandler( dependencies.RepositoryFactory, dependencies.MessageDecrypter, dependencies.HostConfiguration, dependencies.HostServiceEvents); var message = TestsHelpers.GenerateRandomMessage("RegisteredAuditLogon"); dependencies.HostServiceEvents.AddIncommingEvent(message); dependencies.Repository.Received(1).Save(aggregate); }
public void GIVEN_the_handler_has_many_systems_configured_WHEN_processing_a_message_THEN_it_does_as_many_times_as_systems_are_configured() { var dependencies = new MessageHandlerDependenciesHolder<AuditLogonAggregate>(); var aggregate = GenerateRandomAggregate(); var handlersConfig = new List<MessageHandlerConfiguration>(); handlersConfig.Add(new MessageHandlerConfigurationFake("AuditLogonMessageHandler", new List<ESynchroSystem>() { ESynchroSystem.PortalPaciente, ESynchroSystem.VisionLocal })); dependencies.HostConfiguration.MessagesHandlers.Returns(handlersConfig); dependencies.MessageDecrypter.Decrypt<AuditLogonAggregate>(Arg.Any<NotNullable<BaseEvent>>()).Returns(aggregate); var sut = new AuditLogonMessageHandler( dependencies.RepositoryFactory, dependencies.MessageDecrypter, dependencies.HostConfiguration, dependencies.HostServiceEvents); var message = TestsHelpers.GenerateRandomMessage("RegisteredAuditLogon"); dependencies.HostServiceEvents.AddIncommingEvent(message); dependencies.Repository.Received(2).Save(aggregate); }
public void GIVEN_a_message_WHEN_it_is_processed_successfully_THEN_emits_a_ProcesedMessage_event() { var processedMessages = 0; var dependencies = new MessageHandlerDependenciesHolder<AuditLogonAggregate>(); var aggregate = GenerateRandomAggregate(); var handlersConfig = new List<MessageHandlerConfiguration>(); handlersConfig.Add(new MessageHandlerConfigurationFake("AuditLogonMessageHandler", new List<ESynchroSystem>() { ESynchroSystem.PortalPaciente })); dependencies.HostConfiguration.MessagesHandlers.Returns(handlersConfig); dependencies.MessageDecrypter.Decrypt<AuditLogonAggregate>(Arg.Any<NotNullable<BaseEvent>>()).Returns(aggregate); var sut = new AuditLogonMessageHandler( dependencies.RepositoryFactory, dependencies.MessageDecrypter, dependencies.HostConfiguration, dependencies.HostServiceEvents); var message = TestsHelpers.GenerateRandomMessage("RegisteredAuditLogon"); dependencies.HostServiceEvents.ProcesedMessageEventSequence.Subscribe(m => { Assert.Equal(m.EventID, [email protected]); Assert.Equal(m.MessageHandler, "AuditLogonMessageHandler"); Assert.Equal(m.MessageType, [email protected]); Assert.Equal(m.Topic, [email protected]); Assert.Null(m.Aggregate); Assert.False(m.InvalidReason.HasValue); Assert.Null(m.MessageOriginator); processedMessages++; }); dependencies.HostServiceEvents.AddIncommingEvent(message); Assert.Equal(processedMessages, 1); }
public void GIVEN_the_repository_throws_an_exception_WHEN_the_message_is_listened_THEN_it_emits_ProcesedMessageException_event() { var exceptionsEmitted = 0; var dependencies = new MessageHandlerDependenciesHolder<AuditLogonAggregate>(); var aggregate = GenerateRandomAggregate(); var handlersConfig = new List<MessageHandlerConfiguration>(); var message = TestsHelpers.GenerateRandomMessage("RegisteredAuditLogon"); handlersConfig.Add(new MessageHandlerConfigurationFake("AuditLogonMessageHandler", new List<ESynchroSystem>() { ESynchroSystem.PortalPaciente, ESynchroSystem.VisionLocal })); dependencies.HostConfiguration.MessagesHandlers.Returns(handlersConfig); dependencies.Repository.Save(Arg.Any<AuditLogonAggregate>()).Returns(s => { throw new InvalidOperationException("No valid"); }); dependencies.HostServiceEvents.ProcesedMessageExceptionSequence.Subscribe(m => { Assert.Contains("No valid", m.Message); Assert.Equal(m.EventID, [email protected]); Assert.Equal(m.MessageHandler, "AuditLogonMessageHandler"); Assert.Equal(m.MessageType, [email protected]); Assert.Equal(m.InnerException.GetType(), typeof(InvalidOperationException)); exceptionsEmitted++; }); var sut = new AuditLogonMessageHandler( dependencies.RepositoryFactory, dependencies.MessageDecrypter, dependencies.HostConfiguration, dependencies.HostServiceEvents); dependencies.HostServiceEvents.AddIncommingEvent(message); Assert.Equal(exceptionsEmitted, 1); }