コード例 #1
0
        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>());
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }