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); }
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>(); }
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); }
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); }
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); }
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); }
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); }
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>(); }
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); }
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"); }