Esempio n. 1
0
        public void UseRockLibLoggingExtension2AddsLoggerButNotProvider()
        {
            var actualLogger = new Mock <ILogger>().Object;

            var serviceDescriptors = new List <ServiceDescriptor>();

            var servicesCollectionMock = new Mock <IServiceCollection>();

            servicesCollectionMock
            .Setup(scm => scm.Add(It.IsAny <ServiceDescriptor>()))
            .Callback <ServiceDescriptor>(sd => serviceDescriptors.Add(sd));

            var serviceProvider = new Mock <IServiceProvider>().Object;

            var fakeBuilder = new FakeWebHostBuilder()
            {
                ServiceCollection = servicesCollectionMock.Object
            };

            fakeBuilder.UseRockLibLogging(actualLogger);

            servicesCollectionMock.Verify(lfm => lfm.Add(It.IsAny <ServiceDescriptor>()), Times.Once);

            var logger = (ILogger)serviceDescriptors[0].ImplementationInstance;

            logger.Should().BeSameAs(actualLogger);
        }
Esempio n. 2
0
        public void UseRockLibLoggingExtension1AddsLoggerButNotProvider()
        {
            if (!Config.IsLocked)
            {
                var dummy = Config.Root;
            }

            var actualLogger = LoggerFactory.GetCached("SomeRockLibName");

            var serviceDescriptors = new List <ServiceDescriptor>();

            var servicesCollectionMock = new Mock <IServiceCollection>();

            servicesCollectionMock
            .Setup(scm => scm.Add(It.IsAny <ServiceDescriptor>()))
            .Callback <ServiceDescriptor>(sd => serviceDescriptors.Add(sd));

            var serviceProvider = new Mock <IServiceProvider>().Object;

            var fakeBuilder = new FakeWebHostBuilder()
            {
                ServiceCollection = servicesCollectionMock.Object
            };

            fakeBuilder.UseRockLibLogging("SomeRockLibName");

            servicesCollectionMock.Verify(lfm => lfm.Add(It.IsAny <ServiceDescriptor>()), Times.Exactly(2));

            var logger = (ILogger)serviceDescriptors[1].ImplementationFactory.Invoke(serviceProvider);

            logger.Should().BeOfType <Logger>();
        }
Esempio n. 3
0
        public void DefaultTypesFunctionsProperly()
        {
            if (!Config.IsLocked)
            {
                var dummy = Config.Root;
            }

            var defaultTypes = new DefaultTypes
            {
                { typeof(ILogger), typeof(TestLogger) },
                { typeof(ITestDependency), typeof(TestDependencyB) }
            };

            var fakeBuilder = new FakeWebHostBuilder()
            {
                ServiceCollection = new ServiceCollection()
            };

            fakeBuilder.UseRockLibLogging("TestLogger1", defaultTypes: defaultTypes, registerAspNetCoreLogger: true);

            var logger = fakeBuilder.ServiceCollection[1].ImplementationFactory.Invoke(null);

            logger.Should().BeOfType <TestLogger>();

            var testLogger = (TestLogger)logger;

            testLogger.Dependency.Should().BeOfType <TestDependencyB>();
        }
        public void UseRockLibLoggingExtension1WithBypassAddsLoggerButNotProvider()
        {
            if (!Config.IsLocked)
            {
                var dummy = Config.Root;
            }

            var actualLogger = LoggerFactory.GetInstance("SomeRockLibName");

            var serviceDescriptors = new List <ServiceDescriptor>();

            var servicesCollectionMock = new Mock <IServiceCollection>();

            servicesCollectionMock
            .Setup(scm => scm.Add(It.IsAny <ServiceDescriptor>()))
            .Callback <ServiceDescriptor>(sd => serviceDescriptors.Add(sd));

            var serviceProviderMock = new Mock <IServiceProvider>();

            serviceProviderMock.Setup(m => m.GetService(typeof(ILogger))).Returns(actualLogger);

            var fakeBuilder = new FakeWebHostBuilder()
            {
                ServiceCollection = servicesCollectionMock.Object
            };

            fakeBuilder.UseRockLibLogging("SomeRockLibName", bypassAspNetCoreLogging: true);

            servicesCollectionMock.Verify(lfm => lfm.Add(It.IsAny <ServiceDescriptor>()), Times.Once);

            var logger = (ILogger)serviceDescriptors[0].ImplementationFactory.Invoke(null);

            logger.Should().BeSameAs(actualLogger);
        }
Esempio n. 5
0
        public void UseRockLibLoggingExtension1AddsLoggerButNotProvider()
        {
            var fakeBuilder = new FakeWebHostBuilder();

            fakeBuilder.UseRockLibLogging("SomeRockLibName");

            fakeBuilder.ServiceCollection.Should().HaveCount(2);

            fakeBuilder.ServiceCollection[0].ImplementationFactory.Should().BeNull();
            fakeBuilder.ServiceCollection[0].ImplementationInstance.Should().BeNull();
            fakeBuilder.ServiceCollection[0].ImplementationType.Should().Be <BackgroundLogProcessor>();
            fakeBuilder.ServiceCollection[0].Lifetime.Should().Be(ServiceLifetime.Singleton);
            fakeBuilder.ServiceCollection[0].ServiceType.Should().Be <ILogProcessor>();

            fakeBuilder.ServiceCollection[1].ImplementationFactory.Should().NotBeNull();
            fakeBuilder.ServiceCollection[1].ImplementationInstance.Should().BeNull();
            fakeBuilder.ServiceCollection[1].ImplementationType.Should().BeNull();
            fakeBuilder.ServiceCollection[1].Lifetime.Should().Be(ServiceLifetime.Transient);
            fakeBuilder.ServiceCollection[1].ServiceType.Should().Be <ILogger>();

            var serviceProvider = fakeBuilder.ServiceCollection.BuildServiceProvider();

            var logger = (Logger)fakeBuilder.ServiceCollection[1].ImplementationFactory.Invoke(serviceProvider);

            logger.Name.Should().Be("SomeRockLibName");
        }
        public void UseRockLibLoggingExtension2AddsLoggerAndProvider()
        {
            var actualLogger = new Mock <ILogger>().Object;

            var serviceDescriptors = new List <ServiceDescriptor>();

            var servicesCollectionMock = new Mock <IServiceCollection>();

            servicesCollectionMock
            .Setup(scm => scm.Add(It.IsAny <ServiceDescriptor>()))
            .Callback <ServiceDescriptor>(sd => serviceDescriptors.Add(sd));

            var serviceProviderMock = new Mock <IServiceProvider>();

            serviceProviderMock.Setup(m => m.GetService(typeof(ILogger))).Returns(actualLogger);

            var fakeBuilder = new FakeWebHostBuilder()
            {
                ServiceCollection = servicesCollectionMock.Object
            };

            fakeBuilder.UseRockLibLogging(actualLogger);

            servicesCollectionMock.Verify(lfm => lfm.Add(It.IsAny <ServiceDescriptor>()), Times.Exactly(2));

            // The first thing we happen to register is the RockLib.Logging.Logger
            var logger = (ILogger)serviceDescriptors[0].ImplementationInstance;

            logger.Should().BeSameAs(actualLogger);

            // The second thing we happen to register is the RockLib.Logging.AspNetCore.RockLibLoggerProvider
            var provider = (RockLibLoggerProvider)serviceDescriptors[1].ImplementationFactory.Invoke(serviceProviderMock.Object);

            provider.Logger.Should().BeSameAs(actualLogger);
        }
Esempio n. 7
0
        public void ValueConvertersFunctionsProperly()
        {
            var defaultTypes = new DefaultTypes
            {
                { typeof(ILogger), typeof(TestLogger) }
            };

            Point ParsePoint(string value)
            {
                var split = value.Split(',');

                return(new Point(int.Parse(split[0]), int.Parse(split[1])));
            }

            var valueConverters = new ValueConverters
            {
                { typeof(Point), ParsePoint }
            };

            var fakeBuilder = new FakeWebHostBuilder();

            fakeBuilder.UseRockLibLogging("TestLogger2", defaultTypes: defaultTypes, valueConverters: valueConverters, registerAspNetCoreLogger: true);

            var logger = fakeBuilder.ServiceCollection[1].ImplementationFactory.Invoke(null);

            logger.Should().BeOfType <TestLogger>();

            var testLogger = (TestLogger)logger;

            testLogger.Location.X.Should().Be(2);
            testLogger.Location.Y.Should().Be(3);
        }
Esempio n. 8
0
        public void UseRockLibLoggingExtension2WithRegisterAspNetCoreLoggerTrueAddsLoggerAndProvider()
        {
            var actualLogger = new Logger();

            var fakeBuilder = new FakeWebHostBuilder();

            fakeBuilder.UseRockLibLogging(actualLogger, registerAspNetCoreLogger: true);

            fakeBuilder.ServiceCollection.Should().HaveCount(2);

            fakeBuilder.ServiceCollection[0].ImplementationFactory.Should().BeNull();
            fakeBuilder.ServiceCollection[0].ImplementationInstance.Should().BeSameAs(actualLogger);
            fakeBuilder.ServiceCollection[0].ImplementationType.Should().BeNull();
            fakeBuilder.ServiceCollection[0].Lifetime.Should().Be(ServiceLifetime.Singleton);
            fakeBuilder.ServiceCollection[0].ServiceType.Should().Be <ILogger>();

            fakeBuilder.ServiceCollection[1].ImplementationFactory.Should().NotBeNull();
            fakeBuilder.ServiceCollection[1].ImplementationInstance.Should().BeNull();
            fakeBuilder.ServiceCollection[1].ImplementationType.Should().BeNull();
            fakeBuilder.ServiceCollection[1].Lifetime.Should().Be(ServiceLifetime.Singleton);
            fakeBuilder.ServiceCollection[1].ServiceType.Should().Be <ILoggerProvider>();

            var serviceProvider = fakeBuilder.ServiceCollection.BuildServiceProvider();

            var loggerProvider = (RockLibLoggerProvider)fakeBuilder.ServiceCollection[1].ImplementationFactory.Invoke(serviceProvider);
            var rockLibLogger  = (RockLibLogger)loggerProvider.CreateLogger("foo");

            rockLibLogger.CategoryName.Should().Be("foo");
            rockLibLogger.Logger.Should().BeSameAs(actualLogger);
        }
Esempio n. 9
0
        public void UseRockLibLoggingExtension2ThrowsOnNullLogger()
        {
            var webHostBuilder = new FakeWebHostBuilder();

            Action action = () => webHostBuilder.UseRockLibLogging((ILogger)null);

            action.Should().Throw <ArgumentNullException>().WithMessage("Value cannot be null.\r\nParameter name: logger");
        }
        public void ExecuteMustCallConfigureAppConfigurationWhenBuilderIsNotNull()
        {
            IWebHostBuilder builder       = new FakeWebHostBuilder();
            int             optionsCalled = 0;

            new ConfigureWebHostConfigurationCommand().Execute(builder, (c, b) => { ++optionsCalled; });
            builder.Build();
            Assert.Equal(1, optionsCalled);
        }
Esempio n. 11
0
        public void UseRockLibLoggingExtension2AddsLoggerButNotProvider()
        {
            var actualLogger = new Logger();

            var fakeBuilder = new FakeWebHostBuilder();

            fakeBuilder.UseRockLibLogging(actualLogger);

            fakeBuilder.ServiceCollection.Should().HaveCount(1);

            fakeBuilder.ServiceCollection[0].ImplementationFactory.Should().BeNull();
            fakeBuilder.ServiceCollection[0].ImplementationInstance.Should().BeSameAs(actualLogger);
            fakeBuilder.ServiceCollection[0].ImplementationType.Should().BeNull();
            fakeBuilder.ServiceCollection[0].Lifetime.Should().Be(ServiceLifetime.Singleton);
            fakeBuilder.ServiceCollection[0].ServiceType.Should().Be <ILogger>();
        }
Esempio n. 12
0
        public void UseRockLibLoggingExtension1WithRegisterAspNetCoreLoggerTrueAddsLoggerAndProvider()
        {
            if (!Config.IsLocked)
            {
                var dummy = Config.Root;
            }

            var actualLogger = LoggerFactory.GetCached("SomeRockLibName");

            var serviceDescriptors = new List <ServiceDescriptor>();

            var servicesCollectionMock = new Mock <IServiceCollection>();

            servicesCollectionMock
            .Setup(scm => scm.Add(It.IsAny <ServiceDescriptor>()))
            .Callback <ServiceDescriptor>(sd => serviceDescriptors.Add(sd));

            var serviceProviderMock = new Mock <IServiceProvider>();

            serviceProviderMock.Setup(m => m.GetService(typeof(ILogger))).Returns(actualLogger);

            var fakeBuilder = new FakeWebHostBuilder()
            {
                ServiceCollection = servicesCollectionMock.Object
            };

            fakeBuilder.UseRockLibLogging("SomeRockLibName", registerAspNetCoreLogger: true);

            servicesCollectionMock.Verify(lfm => lfm.Add(It.IsAny <ServiceDescriptor>()), Times.Exactly(3));

            // The second thing we happen to register is the RockLib.Logging.Logger
            var logger = (ILogger)serviceDescriptors[1].ImplementationFactory.Invoke(serviceProviderMock.Object);

            logger.Should().BeOfType <Logger>();

            // The third thing we happen to register is the RockLib.Logging.AspNetCore.RockLibLoggerProvider
            var loggerProvider = (ILoggerProvider)serviceDescriptors[2].ImplementationFactory.Invoke(serviceProviderMock.Object);

            loggerProvider.Should().BeOfType <RockLibLoggerProvider>();
            var rockLibLogger = (RockLibLogger)loggerProvider.CreateLogger("foo");

            rockLibLogger.CategoryName.Should().Be("foo");
            rockLibLogger.Logger.Should().BeSameAs(actualLogger);
        }
Esempio n. 13
0
        public void UseRockLibLoggingExtension1WithRegisterAspNetCoreLoggerTrueAddsLoggerAndProvider()
        {
            var fakeBuilder = new FakeWebHostBuilder();

            fakeBuilder.UseRockLibLogging("SomeRockLibName", registerAspNetCoreLogger: true);

            fakeBuilder.ServiceCollection.Should().HaveCount(3);

            fakeBuilder.ServiceCollection[0].ImplementationFactory.Should().BeNull();
            fakeBuilder.ServiceCollection[0].ImplementationInstance.Should().BeNull();
            fakeBuilder.ServiceCollection[0].ImplementationType.Should().Be <BackgroundLogProcessor>();
            fakeBuilder.ServiceCollection[0].Lifetime.Should().Be(ServiceLifetime.Singleton);
            fakeBuilder.ServiceCollection[0].ServiceType.Should().Be <ILogProcessor>();

            fakeBuilder.ServiceCollection[1].ImplementationFactory.Should().NotBeNull();
            fakeBuilder.ServiceCollection[1].ImplementationInstance.Should().BeNull();
            fakeBuilder.ServiceCollection[1].ImplementationType.Should().BeNull();
            fakeBuilder.ServiceCollection[1].Lifetime.Should().Be(ServiceLifetime.Transient);
            fakeBuilder.ServiceCollection[1].ServiceType.Should().Be <ILogger>();

            fakeBuilder.ServiceCollection[2].ImplementationFactory.Should().NotBeNull();
            fakeBuilder.ServiceCollection[2].ImplementationInstance.Should().BeNull();
            fakeBuilder.ServiceCollection[2].ImplementationType.Should().BeNull();
            fakeBuilder.ServiceCollection[2].Lifetime.Should().Be(ServiceLifetime.Singleton);
            fakeBuilder.ServiceCollection[2].ServiceType.Should().Be <ILoggerProvider>();

            var serviceProvider = fakeBuilder.ServiceCollection.BuildServiceProvider();

            var logger = (Logger)fakeBuilder.ServiceCollection[1].ImplementationFactory.Invoke(serviceProvider);

            logger.Name.Should().Be("SomeRockLibName");

            var loggerProvider = (RockLibLoggerProvider)fakeBuilder.ServiceCollection[2].ImplementationFactory.Invoke(serviceProvider);
            var rockLibLogger  = (RockLibLogger)loggerProvider.CreateLogger("foo");

            rockLibLogger.CategoryName.Should().Be("foo");
            rockLibLogger.Logger.Name.Should().Be("SomeRockLibName");
        }