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);
        }
Beispiel #2
0
        public static void Main(string[] args)
        {
            var host = Configurer.ConfigureHost(new WebHostBuilder(), addCommandLineArguments: true).Build();

            host.Run();
        }