예제 #1
0
        public void Test_DatabaseAuditor_HeaderAuditMessageBuilder()
        {
            string            configPath = GetSettingsPath("TestSmtpAgentAuditConfig.xml");
            SmtpAgentSettings settings   = SmtpAgentSettings.LoadSettings(configPath);

            SimpleComponentSettings[] components = new SimpleComponentSettings[1];


            SimpleComponentSettings localAuditComponent = new SimpleComponentSettings();

            localAuditComponent.Scope   = InstanceScope.Singleton;
            localAuditComponent.Service = "Health.Direct.SmtpAgent.Diagnostics.IAuditor`1[[Health.Direct.SmtpAgent.Diagnostics.IBuildAuditLogMessage, Health.Direct.SmtpAgent]], Health.Direct.SmtpAgent";
            localAuditComponent.Type    = "Health.Direct.DatabaseAuditor.Auditor`1[[Health.Direct.DatabaseAuditor.HeaderAuditMessageBuilder, Health.Direct.DatabaseAuditor]], Health.Direct.DatabaseAuditor";
            components[0] = localAuditComponent;

            settings.Container.Components = components;
            m_agent = SmtpAgentFactory.Create(settings);
            Assert.True(IoC.Resolve <IAuditor <IBuildAuditLogMessage> >() is DatabaseAuditor.Auditor <HeaderAuditMessageBuilder>);

            Assert.Equal(0, AuditEventCount);
            m_agent.Settings.InternalMessage.EnableRelay = true;
            Assert.Null(Record.Exception(() => RunEndToEndTest(this.LoadMessage(string.Format(TestMessage, Guid.NewGuid())))));
            Assert.Null(Record.Exception(() => RunEndToEndTest(this.LoadMessage(CrossDomainMessage))));
            m_agent.Settings.InternalMessage.EnableRelay = false;
            Assert.Equal(4, AuditEventCount);

            using (var db = new AuditContext().CreateContext(m_settings))
            {
                foreach (AuditEvent auditEvent in db.AuditEvents)
                {
                    Console.WriteLine(auditEvent.Message);
                }
            }
        }
예제 #2
0
        public void TestEndToEndInternalMessage_WithMultipleAuditors()
        {
            string            configPath = GetSettingsPath("TestSmtpAgentAuditConfig.xml");
            SmtpAgentSettings settings   = SmtpAgentSettings.LoadSettings(configPath);

            SimpleComponentSettings[] components = new SimpleComponentSettings[2];

            //
            // Retain configured
            //
            components[0] = settings.Container.Components[0];

            //
            // Add a second auditor
            //
            SimpleComponentSettings localAuditComponent = new SimpleComponentSettings();

            localAuditComponent.Scope   = InstanceScope.Singleton;
            localAuditComponent.Service = "Health.Direct.SmtpAgent.Diagnostics.IAuditor`1[[Health.Direct.SmtpAgent.Diagnostics.IBuildAuditLogMessage, Health.Direct.SmtpAgent]], Health.Direct.SmtpAgent";
            localAuditComponent.Type    = "Health.Direct.SmtpAgent.Tests.LocalTestAuditor`1[[Health.Direct.SmtpAgent.Tests.LocalBuildAuditLogMessage, Health.Direct.SmtpAgent.Tests]], Health.Direct.SmtpAgent.Tests";
            components[1] = localAuditComponent;

            settings.Container.Components = components;
            m_agent = SmtpAgentFactory.Create(settings);

            Assert.True(IoC.Resolve <IAuditor <IBuildAuditLogMessage> >() != null);
            Assert.Equal(0, AuditEventCount);
            m_agent.Settings.InternalMessage.EnableRelay = true;
            Assert.Null(Record.Exception(() => RunEndToEndTest(this.LoadMessage(string.Format(TestMessage, Guid.NewGuid())))));
            Assert.Null(Record.Exception(() => RunEndToEndTest(this.LoadMessage(CrossDomainMessage))));
            m_agent.Settings.InternalMessage.EnableRelay = false;
            Assert.Equal(8, AuditEventCount);
        }
예제 #3
0
        public void Test_LocalAuditorSettings()
        {
            string            configPath = GetSettingsPath("TestSmtpAgentAuditConfig.xml");
            SmtpAgentSettings settings   = SmtpAgentSettings.LoadSettings(configPath);

            SimpleComponentSettings[] components = new SimpleComponentSettings[1];


            SimpleComponentSettings localAuditComponent = new SimpleComponentSettings();

            localAuditComponent.Scope   = InstanceScope.Singleton;
            localAuditComponent.Service = "Health.Direct.SmtpAgent.Diagnostics.IAuditor`1[[Health.Direct.SmtpAgent.Diagnostics.IBuildAuditLogMessage, Health.Direct.SmtpAgent]], Health.Direct.SmtpAgent";
            localAuditComponent.Type    = "Health.Direct.SmtpAgent.Tests.LocalTestAuditor`1[[Health.Direct.SmtpAgent.Tests.LocalBuildAuditLogMessage, Health.Direct.SmtpAgent.Tests]], Health.Direct.SmtpAgent.Tests";
            components[0] = localAuditComponent;

            settings.Container.Components = components;
            m_agent = SmtpAgentFactory.Create(settings);
            Assert.True(IoC.Resolve <IAuditor <IBuildAuditLogMessage> >() is LocalTestAuditor <LocalBuildAuditLogMessage>);

            Assert.Equal(0, AuditEventCount);
            m_agent.Settings.InternalMessage.EnableRelay = true;
            Assert.DoesNotThrow(() => RunEndToEndTest(this.LoadMessage(string.Format(TestMessage, Guid.NewGuid()))));
            Assert.DoesNotThrow(() => RunEndToEndTest(this.LoadMessage(CrossDomainMessage)));
            m_agent.Settings.InternalMessage.EnableRelay = false;
            Assert.Equal(4, AuditEventCount);
        }
예제 #4
0
        public void TestMissing_DatabaseAuditorSettings()
        {
            string            configPath = GetSettingsPath("TestSmtpAgentAuditConfig.xml");
            SmtpAgentSettings settings   = SmtpAgentSettings.LoadSettings(configPath);

            SimpleComponentSettings[]      components         = new SimpleComponentSettings[1];
            Mock <SimpleComponentSettings> auditComponentMock = new Mock <SimpleComponentSettings>()
            {
                CallBase = true
            };

            auditComponentMock.SetupAllProperties();
            components[0]                 = auditComponentMock.Object;
            components[0].Scope           = InstanceScope.Singleton;
            components[0].Service         = "Health.Direct.SmtpAgent.Diagnostics.IAuditor`1[[Health.Direct.SmtpAgent.Diagnostics.IBuildAuditLogMessage, Health.Direct.SmtpAgent]], Health.Direct.SmtpAgent";
            components[0].Type            = "Health.Direct.SmtpAgent.Tests.LocalTestAuditorSettingsMissing`1[[Health.Direct.SmtpAgent.Tests.LocalBuildAuditLogMessage, Health.Direct.SmtpAgent.Tests]], Health.Direct.SmtpAgent.Tests";
            settings.Container.Components = components;


            m_agent = SmtpAgentFactory.Create(settings);

            //
            // Not really asserting the exception.  It would take some architecture changes to get the IoC in a more testable state.
            //
            auditComponentMock.Verify(c => c.CreateInstance(), Times.Once);

            Assert.Equal(0, AuditEventCount);
            m_agent.Settings.InternalMessage.EnableRelay = true;

            //
            // Failes to find connection string info in DatabaseAuditorSettings.xml file so loads default EventLogAuditor
            //
            Assert.True(IoC.Resolve <IAuditor <IBuildAuditLogMessage> >() is SmtpAgentEventLogAuditor);
            Assert.DoesNotThrow(() => RunEndToEndTest(this.LoadMessage(string.Format(TestMessage, Guid.NewGuid()))));
            m_agent.Settings.InternalMessage.EnableRelay = false;
            Assert.Equal(0, AuditEventCount);
        }