private void BuildAndVerifyModuleMock <TModule>(Mock <TModule> moduleMock, Container container = null) where TModule : class { var builder = ModulesHost.CreateDefaultBuilder(); if (container == null) { builder.UseSimpleInjector(); } else { builder.UseSimpleInjector(container); } #if NETCOREAPP2_1 builder.UseAspNetCore(WebHost.CreateDefaultBuilder, (module, webHostBuilder) => { }); #else builder.UseAspNetCore((module, webHostBuilder) => { }); #endif builder.HostModule <TModule>( options => options.ModuleFactoryCallback(_ => moduleMock.Object)); builder.Build().Dispose(); moduleMock.Verify(); }
static Task Main(string[] args) { //this will create a ModulesHost - that is a host that hosts modules ;-) var builder = ModulesHost.CreateDefaultBuilder(args); // you can configure a module host builder like a host builder. // All configurations set with ConfigureAppConfiguration will be shared between all modules and the ModulesHost. //optional: here we add a ServiceCollection to build a DI container that is available for all modules. var sc = new ServiceCollection(); sc.AddSingleton <IMessageDispatcher, MessageDispatcher>(); builder.UseServiceCollection(sc); builder.HostModule <SampleWebModule>(); //to host WebModules you have to call this once. Use it to configure //web host settings like ports. builder.UseAspNetCoreWithDefaults((module, webBuilder) => { }); var host = builder.Build(); var test = host.Services.GetService <IMessageDispatcher>(); var module = host.Services.GetService <SampleWebModule>(); var moduleHost = host.Services.GetService <IModuleHost <SampleWebModule> >(); return(host.RunAsync()); }
public void Build_module_has_logger_from_host() { var builder = ModulesHost.CreateDefaultBuilder(); var loggerMock = new Mock <ILogger>(); loggerMock.Setup(x => x.Log(LogLevel.Trace, It.IsAny <EventId>(), null, It.IsAny <Exception>(), It.IsAny <Func <object, Exception, string> >())).Verifiable(); var logProviderMoq = new Mock <ILoggerProvider>(); logProviderMoq.Setup(x => x.CreateLogger(It.IsAny <string>())).Returns(loggerMock.Object); builder.HostModule <SomeModule>(); builder.ConfigureLogging(lb => lb.SetMinimumLevel(LogLevel.Trace) .AddProvider(logProviderMoq.Object)); var host = builder.Build(); var moduleHost = host.Services.GetRequiredService <IModuleHost <SomeModule> >(); var loggerFactory = moduleHost.Services.GetRequiredService <ILoggerFactory>(); var logger = loggerFactory.CreateLogger("dummy"); logger.Log <object>(LogLevel.Trace, new EventId(0), null, null, (s, e) => "trace message"); loggerMock.Verify(); }
public void AppConfiguration_is_applied_to_all_Configurations() { var builder = ModulesHost.CreateDefaultBuilder(); builder.HostModule <SomeWebModule>(); #if !NETCOREAPP2_1 builder.UseAspNetCore(); #endif builder.ConfigureHostConfiguration(c => c.AddInMemoryCollection(new Dictionary <string, string> { ["setting"] = "hostValue" })); builder.ConfigureAppConfiguration(c => c.AddInMemoryCollection(new Dictionary <string, string> { ["setting"] = "appValue" })); var host = builder.Build(); var hostConfig = host.Services.GetRequiredService <IConfiguration>(); var module = host.Services.GetRequiredService <SomeWebModule>(); Assert.Equal("appValue", hostConfig["setting"]); Assert.Equal("appValue", module.HostConfiguration["setting"]); Assert.Equal("appValue", module.Configuration["setting"]); }
static Task Main(string[] args) { var builder = ModulesHost.CreateDefaultBuilder(args); // you can configure a module host builder like a host builder. // All configurations set with ConfigureHostConfiguration will be shared between all modules. builder.UseEnvironment(Environments.Development); //here we add a ServiceCollection to build a DI container that is available for all modules. var sc = new ServiceCollection(); sc.AddSingleton <IMessageDispatcher, MessageDispatcher>(); builder.UseServiceCollection(sc); builder.HostModule <SampleWebModule>(); builder.UseAspNetCoreWithDefaults((module, webBuilder) => { }); var host = builder.Build(); var test = host.Services.GetService <IMessageDispatcher>(); var module = host.Services.GetService <SampleWebModule>(); var moduleHost = host.Services.GetService <IModuleHost <SampleWebModule> >(); return(host.RunAsync()); }
private static Task Main(string[] args) { var container = new Container(); container.Bootstrap(); return(ModulesHost.CreateDefaultBuilder(args) .UseSimpleInjector(container) .RunModule <VmHostAgentModule>()); }
public void Module_uses_SimpleInjector_as_inner_container() { var builder = ModulesHost.CreateDefaultBuilder(); builder.UseSimpleInjector(); builder.HostModule <SomeModule>(); var host = builder.Build(); var moduleHost = host.Services.GetRequiredService <IModuleHost <SomeModule> >(); Assert.IsType <Container>(moduleHost.ModuleContext.Services); host.Dispose(); }
public void Build_module_has_environment_of_host(string environmentName) { var builder = ModulesHost.CreateDefaultBuilder(); builder.HostModule <SomeModule>(); builder.UseEnvironment(environmentName); var host = builder.Build(); var module = host.Services.GetRequiredService <SomeModule>(); Assert.Equal(environmentName, module.Environment); }
public void Multiple_modules_can_be_bootstrapped_and_see_each_other() { var builder = ModulesHost.CreateDefaultBuilder(); builder.HostModule <SomeModule>(); builder.HostModule <OtherModule>(); var host = builder.Build(); var module = host.Services.GetRequiredService <OtherModule>(); Assert.NotNull(module.SomeModule); }
public static async Task Main(string[] args) { var container = new Container(); container.Bootstrap(); await ModulesHost.CreateDefaultBuilder(args) .UseSimpleInjector(container) .UseAspNetCore((module, webHostBuilder) => { }) .RunModule <IdentityModule>(); }
public void Configuration_is_applied_in_order(string firstValue, string secondValue, string moduleValue, string hostExpected, string moduleExpected) { var builder = ModulesHost.CreateDefaultBuilder(); builder.ConfigureAppConfiguration(c => c.AddInMemoryCollection(new Dictionary <string, string> { ["setting"] = firstValue })); builder.HostModule <SomeWebModule>(options => { if (moduleValue != null) { options.Configure(mb => { mb.ConfigureAppConfiguration(c => c.AddInMemoryCollection(new Dictionary <string, string> { ["setting"] = moduleValue })); }); } }); #if !NETCOREAPP2_1 builder.ConfigureWebHost(cfg => { }); #endif builder.ConfigureHostConfiguration(c => c.AddInMemoryCollection(new Dictionary <string, string> { ["setting"] = "should never be seen" })); if (secondValue != null) { builder.ConfigureAppConfiguration(c => c.AddInMemoryCollection(new Dictionary <string, string> { ["setting"] = secondValue })); } var host = builder.Build(); var module = host.Services.GetRequiredService <SomeWebModule>(); Assert.Equal(hostExpected, module.HostConfiguration["setting"]); Assert.Equal(moduleExpected, module.Configuration["setting"]); }
/// <summary> /// The Main /// </summary> /// <param name="args">The args<see cref="string[]"/></param> private static Task Main(string[] args) { ConfigStore.Config.EnsureConfigPaths(); ConfigStore.Clients.ClientGenerator.EnsureSystemClient(); File.WriteAllText(Path.Combine(ConfigStore.Config.GetConfigPath("zero"), ".run_info"), $"{{ \"process_id\": \"{Process.GetCurrentProcess().Id}\", \"url\" : \"https://localhost:62189\" }}"); Certificate.CreateSSL(new CertificateOptions { Issuer = Network.FQDN, FriendlyName = "Haipa Zero Management Certificate", Suffix = "CA", ValidStartDate = DateTime.UtcNow, ValidEndDate = DateTime.UtcNow.AddYears(5), Password = "******", ExportDirectory = Directory.GetCurrentDirectory(), URL = "https://localhost:62189/", AppID = "9412ee86-c21b-4eb8-bd89-f650fbf44931", CACertName = "HaipaCA.pfx" }); var container = new Container(); container.Options.DefaultScopedLifestyle = new AsyncScopedLifestyle(); container.Bootstrap(); var host = ModulesHost.CreateDefaultBuilder(args) .UseAspNetCore((module, webHostBuilder) => { webHostBuilder.UseHttpSys(options => { options.UrlPrefixes.Add($"https://localhost:62189/{module.Path}"); }) .UseUrls($"https://localhost:62189/{module.Path}"); }) .UseSimpleInjector(container) .HostModule <ApiModule>() .AddIdentityModule(container) .HostModule <VmHostAgentModule>() .HostModule <ControllerModule>() .UseEnvironment("Development") .ConfigureLogging(lc => lc.SetMinimumLevel(LogLevel.Trace)) .Build(); return(host.RunAsync()); }
public static async Task Main(string[] args) { await MySqlConnectionCheck.WaitForMySql(new TimeSpan(0, 1, 0)).ConfigureAwait(false); var container = new Container(); container.Bootstrap(); await ModulesHost.CreateDefaultBuilder(args) .UseSimpleInjector(container) .UseAspNetCore((module, webHostBuilder) => { }) .RunModule <ApiModule>(); }
public void Module_can_resolve_services_from_outer_container() { var sc = new ServiceCollection(); var serviceMock = new Mock <IService>(); serviceMock.Setup(x => x.CallMe()).Verifiable(); sc.AddSingleton(serviceMock.Object); var builder = ModulesHost.CreateDefaultBuilder(); builder.UseServiceCollection(sc); builder.HostModule <SomeModule>(); var host = builder.Build(); serviceMock.Verify(x => x.CallMe()); }
public void ConfigureContainer_extensions_are_called() { var configureMock = new Mock <IConfigureContainerFilter <ModuleWithConfigureContainer> >(); configureMock.Setup(x => x.Invoke(It.IsAny <Action <IModuleContext <ModuleWithConfigureContainer>, Container> >()) ).Verifiable(); var builder = ModulesHost.CreateDefaultBuilder(); builder.UseSimpleInjector(); builder.HostModule <ModuleWithConfigureContainer>(); builder.ConfigureFrameworkServices((ctx, services) => services.AddTransient(sp => configureMock.Object)); builder.Build().Dispose(); configureMock.Verify(); }
public void Build_module_has_configuration_from_host() { var builder = ModulesHost.CreateDefaultBuilder(); builder.HostModule <SomeModule>(); builder.ConfigureAppConfiguration(c => c.AddInMemoryCollection(new Dictionary <string, string> { ["test"] = "testValue" })); var host = builder.Build(); var module = host.Services.GetRequiredService <SomeModule>(); Assert.Equal("testValue", module.Configuration["test"]); }
static async Task Main(string[] args) { await MySqlConnectionCheck.WaitForMySql(new TimeSpan(0, 1, 0)).ConfigureAwait(false); var container = new Container(); container.Bootstrap(); await ModulesHost.CreateDefaultBuilder(args) .UseSimpleInjector(container) .HostModule <ControllerModule>(options => options.Configure((sp) => { using (var scope = sp.CreateScope()) scope.ServiceProvider.GetService <StateStoreContext>().Database.Migrate(); })) .RunConsoleAsync().ConfigureAwait(false); }
public void Module_dependencies_can_be_injected_from_host_container() { var builder = ModulesHost.CreateDefaultBuilder(); builder.HostModule <ModuleWithConstructorInjection>(); var depMock = Mock.Of <IDep>(); var sc = new ServiceCollection(); sc.AddTransient(sp => depMock); builder.UseServiceCollection(sc); var host = builder.Build(); var module = host.Services.GetRequiredService <ModuleWithConstructorInjection>(); Assert.Equal(depMock, module.Dependency); }
public void Module_dependencies_can_be_injected_from_outer_container() { var container = new Container(); var builder = ModulesHost.CreateDefaultBuilder(); builder.UseSimpleInjector(container); var serviceMock = Mock.Of <IService>(); container.RegisterInstance(serviceMock); builder.HostModule <ModuleWithConstructorInjection>(); var host = builder.Build(); var module = container.GetRequiredService <ModuleWithConstructorInjection>(); Assert.Equal(module.Dependency, serviceMock); }
public void Module_can_resolve_services_from_outer_container() { var container = new Container(); var builder = ModulesHost.CreateDefaultBuilder(); builder.UseSimpleInjector(container); var serviceMock = new Mock <IService>(); serviceMock.Setup(x => x.CallMe()).Verifiable(); container.RegisterInstance(serviceMock.Object); builder.HostModule <SomeModule>(); builder.Build(); var moduleHost = container.GetRequiredService <IModuleHost <SomeModule> >(); serviceMock.Verify(x => x.CallMe()); }
private void BuildAndVerifyModuleMock <TModule>(Mock <TModule> moduleMock, Container container = null) where TModule : class { var builder = ModulesHost.CreateDefaultBuilder(); if (container == null) { builder.UseSimpleInjector(); } else { builder.UseSimpleInjector(container); } builder.HostModule <TModule>( options => options.ModuleFactoryCallback(_ => moduleMock.Object)); builder.Build().Dispose(); moduleMock.Verify(); }
public async Task ServiceHandler_in_Module_uses_SimpleInjector() { var container = new Container(); var serviceMock = new Mock <IService>(); serviceMock.Setup(x => x.CallMe()).Verifiable(); var builder = ModulesHost.CreateDefaultBuilder(); builder.UseSimpleInjector(container); container.RegisterInstance(serviceMock.Object); builder.HostModule <SomeModule>(); var host = builder.Build(); await host.StartAsync().ConfigureAwait(false); //await Task.Delay(2000).ConfigureAwait(false); serviceMock.Verify(x => x.CallMe()); host.Dispose(); }