public static TestApplication BuildApplication(TestApplication testApp, string environmentName = "Production", Action <IWebHostBuilder> configureHost = null) { testApp.LoggerProvider = new StubLoggerProvider(); testApp.User = new ClaimsPrincipal(new ClaimsIdentity()); var hostBuilder = new WebHostBuilder(); configureHost?.Invoke(hostBuilder); hostBuilder.ConfigureServices(services => { services.AddTransient <HttpContextFactory>(); services.AddTransient <IHttpContextFactory>((sp) => { var defaultContextFactory = sp.GetService <HttpContextFactory>(); var httpContextFactory = new WrappedHttpContextFactory(defaultContextFactory); httpContextFactory.ConfigureFeatureWithContext((features, httpCtx) => { features.Set <IHttpAuthenticationFeature>(new HttpAuthenticationFeature { User = testApp.User }); features.Set <IServiceProvidersFeature>(new RequestServicesFeature(httpCtx, testApp.ServiceReplacer.CreateScopeFactory())); }); return(httpContextFactory); }); }); Environment.SetEnvironmentVariable("DOTNETCLUB_sqliteConnectionString", " "); Environment.SetEnvironmentVariable("DOTNETCLUB_Logging:Console:LogLevel:Default", "Warning"); Configurer.ConfigureHost(hostBuilder); hostBuilder.ConfigureLogging(loggingBuilder => { loggingBuilder.SetMinimumLevel(LogLevel.Trace); loggingBuilder.AddProvider(testApp.LoggerProvider); }); hostBuilder.UseContentRoot(WebProjectPath()).UseEnvironment(environmentName); testApp.Server = new TestServer(hostBuilder); testApp.ApplicationServices = testApp.Server.Host.Services; testApp.ServiceReplacer = new ReplacableServiceProvider(testApp.ApplicationServices); return(testApp); }
public static void Main(string[] args) { var host = Configurer.ConfigureHost(new WebHostBuilder(), addCommandLineArguments: true).Build(); host.Run(); }