internal static IObjectContainer CreateDefaultGlobalContainer(IRuntimeConfigurationProvider configurationProvider = null, Action<IObjectContainer> registerGlobalMocks = null) { var instance = new ContainerBuilder(); var globalContainer = instance.CreateGlobalContainer(configurationProvider); registerGlobalMocks?.Invoke(globalContainer); return globalContainer; }
internal static IObjectContainer CreateDefaultTestRunnerContainer(IRuntimeConfigurationProvider configurationProvider = null) { var instance = new TestRunContainerBuilder(); var globalContainer = CreateDefaultGlobalContainer(configurationProvider); return(instance.CreateTestRunnerContainer(globalContainer)); }
private static IObjectContainer CreateDefaultGlobalContainer(IRuntimeConfigurationProvider configurationProvider, Action <IObjectContainer> registerGlobalMocks, ContainerBuilder instance) { var globalContainer = instance.CreateGlobalContainer(typeof(TestObjectFactories).Assembly, configurationProvider); registerGlobalMocks?.Invoke(globalContainer); return(globalContainer); }
private static IObjectContainer CreateDefaultTestThreadContainer(IRuntimeConfigurationProvider configurationProvider, Action <IObjectContainer> registerGlobalMocks, Action <IObjectContainer> registerTestThreadMocks, ContainerBuilder instance) { var globalContainer = CreateDefaultGlobalContainer(configurationProvider, registerGlobalMocks, instance); var testThreadContainer = instance.CreateTestThreadContainer(globalContainer); registerTestThreadMocks?.Invoke(testThreadContainer); return(testThreadContainer); }
internal static IObjectContainer CreateDefaultGlobalContainer(IRuntimeConfigurationProvider configurationProvider = null, Action <IObjectContainer> registerGlobalMocks = null) { var instance = new ContainerBuilder(); var globalContainer = instance.CreateGlobalContainer(configurationProvider); registerGlobalMocks?.Invoke(globalContainer); return(globalContainer); }
public IObjectContainer CreateGlobalContainer(Assembly testAssembly, IRuntimeConfigurationProvider configurationProvider = null) { var container = _innerContainerBuilder.CreateGlobalContainer(testAssembly, configurationProvider); container.RegisterInstanceAs(_testContext); return(container); }
protected virtual IRuntimePlugin[] LoadPlugins(IRuntimeConfigurationProvider configurationProvider, ObjectContainer container) { var plugins = container.Resolve<IDictionary<string, IRuntimePlugin>>().Values.AsEnumerable(); var pluginLoader = container.Resolve<IRuntimePluginLoader>(); plugins = plugins.Concat(configurationProvider.GetPlugins().Where(pd => (pd.Type & PluginType.Runtime) != 0).Select(pd => LoadPlugin(pluginLoader, pd))); return plugins.ToArray(); }
private static IRuntimePlugin[] LoadPlugins(IRuntimeConfigurationProvider configurationProvider, ObjectContainer container) { var plugins = container.Resolve <IDictionary <string, IRuntimePlugin> >().Values.AsEnumerable(); var pluginLoader = container.Resolve <IRuntimePluginLoader>(); plugins = plugins.Concat(configurationProvider.GetPlugins().Where(pd => (pd.Type & PluginType.Runtime) != 0).Select(pd => LoadPlugin(pluginLoader, pd))); return(plugins.ToArray()); }
public static IObjectContainer CreateContainer(IRuntimeConfigurationProvider configurationProvider = null) { var container = new ObjectContainer(); RegisterDefaults(container); if (configurationProvider != null) { container.RegisterInstanceAs(configurationProvider); } configurationProvider = configurationProvider ?? container.Resolve <IRuntimeConfigurationProvider>(); var pluginLoader = container.Resolve <IRuntimePluginLoader>(); var plugins = configurationProvider.GetPlugins().Select(pd => LoadPlugin(pluginLoader, pd)).ToArray(); foreach (var plugin in plugins) { plugin.RegisterDefaults(container); } RuntimeConfiguration runtimeConfiguration = new RuntimeConfiguration(); foreach (var defaultsProvider in container.Resolve <IDictionary <string, IRuntimeConfigurationDefaultsProvider> >().Values) { defaultsProvider.SetDefaultConfiguration(runtimeConfiguration); } configurationProvider.LoadConfiguration(runtimeConfiguration); #if !BODI_LIMITEDRUNTIME if (runtimeConfiguration.CustomDependencies != null) { container.RegisterFromConfiguration(runtimeConfiguration.CustomDependencies); } #endif container.RegisterInstanceAs(runtimeConfiguration); if (runtimeConfiguration.TraceListenerType != null) { container.RegisterTypeAs <ITraceListener>(runtimeConfiguration.TraceListenerType); } if (runtimeConfiguration.RuntimeUnitTestProvider != null) { container.RegisterInstanceAs(container.Resolve <IUnitTestRuntimeProvider>(runtimeConfiguration.RuntimeUnitTestProvider)); } foreach (var plugin in plugins) { plugin.RegisterCustomizations(container, runtimeConfiguration); } return(container); }
public RestResourceController( IDataProvider dataProvider, IRuntimeConfigurationProvider <IRuntimeConfiguration> runtimeConfigurationProvider, ILogger <RestResourceController <TResource> > logger, IOptions <SnoozleOptions> options) { _dataProvider = dataProvider; _runtimeConfiguration = runtimeConfigurationProvider.GetRuntimeConfigurationForType(typeof(TResource)); _logger = logger; _options = options.Value; }
public virtual IObjectContainer CreateContainer(IRuntimeConfigurationProvider configurationProvider = null) { var container = new ObjectContainer(); container.RegisterInstanceAs <ITestRunContainerBuilder>(this); RegisterDefaults(container); if (configurationProvider != null) { container.RegisterInstanceAs(configurationProvider); } configurationProvider = configurationProvider ?? container.Resolve <IRuntimeConfigurationProvider>(); var plugins = LoadPlugins(configurationProvider, container); foreach (var plugin in plugins) { plugin.RegisterDependencies(container); } RuntimeConfiguration runtimeConfiguration = new RuntimeConfiguration(); foreach (var plugin in plugins) { plugin.RegisterConfigurationDefaults(runtimeConfiguration); } configurationProvider.LoadConfiguration(runtimeConfiguration); #if !BODI_LIMITEDRUNTIME if (runtimeConfiguration.CustomDependencies != null) { container.RegisterFromConfiguration(runtimeConfiguration.CustomDependencies); } #endif container.RegisterInstanceAs(runtimeConfiguration); if (runtimeConfiguration.RuntimeUnitTestProvider != null) { container.RegisterInstanceAs(container.Resolve <IUnitTestRuntimeProvider>(runtimeConfiguration.RuntimeUnitTestProvider)); } foreach (var plugin in plugins) { plugin.RegisterCustomizations(container, runtimeConfiguration); } return(container); }
public virtual IObjectContainer CreateGlobalContainer(Assembly testAssembly, IRuntimeConfigurationProvider configurationProvider = null) { var container = new ObjectContainer(); container.RegisterInstanceAs <IContainerBuilder>(this); RegisterDefaults(container); var testAssemblyProvider = container.Resolve <ITestAssemblyProvider>(); testAssemblyProvider.RegisterTestAssembly(testAssembly); if (configurationProvider != null) { container.RegisterInstanceAs(configurationProvider); } configurationProvider = configurationProvider ?? container.Resolve <IRuntimeConfigurationProvider>(); container.RegisterTypeAs <RuntimePluginEvents, RuntimePluginEvents>(); //NOTE: we need this unnecessary registration, due to a bug in BoDi (does not inherit non-registered objects) var runtimePluginEvents = container.Resolve <RuntimePluginEvents>(); SpecFlowConfiguration specFlowConfiguration = ConfigurationLoader.GetDefault(); specFlowConfiguration = configurationProvider.LoadConfiguration(specFlowConfiguration); if (specFlowConfiguration.CustomDependencies != null) { container.RegisterFromConfiguration(specFlowConfiguration.CustomDependencies); } var unitTestProviderConfigration = container.Resolve <UnitTestProviderConfiguration>(); LoadPlugins(configurationProvider, container, runtimePluginEvents, specFlowConfiguration, unitTestProviderConfigration, testAssembly); runtimePluginEvents.RaiseConfigurationDefaults(specFlowConfiguration); runtimePluginEvents.RaiseRegisterGlobalDependencies(container); container.RegisterInstanceAs(specFlowConfiguration); if (unitTestProviderConfigration != null) { container.RegisterInstanceAs(container.Resolve <IUnitTestRuntimeProvider>(unitTestProviderConfigration.UnitTestProvider ?? ConfigDefaults.UnitTestProviderName)); } runtimePluginEvents.RaiseCustomizeGlobalDependencies(container, specFlowConfiguration); container.Resolve <IConfigurationLoader>().TraceConfigSource(container.Resolve <ITraceListener>(), specFlowConfiguration); return(container); }
/// <summary> /// Adds the core Snoozle functionality and configuration to the application. This should only be called from the data providers <see cref="IMvcBuilder"/> extensions, /// and not directly from the web application. /// </summary> public static IMvcBuilder AddSnoozleCore <TRuntimeConfiguration>( this IMvcBuilder @this, IRuntimeConfigurationProvider <TRuntimeConfiguration> runtimeConfigurationProvider, IConfigurationSection configOptions) where TRuntimeConfiguration : class, IRuntimeConfiguration { IServiceCollection serviceCollection = @this.Services; AddSnoozleCore(@this, runtimeConfigurationProvider); serviceCollection.Configure <SnoozleOptions>(options => configOptions.Bind(options)); return(@this); }
/// <summary> /// Adds the core Snoozle functionality and configuration to the application. This should only be called from the data providers <see cref="IMvcBuilder"/> extensions, /// and not directly from the web application. /// </summary> public static IMvcBuilder AddSnoozleCore <TRuntimeConfiguration, TOptions>( this IMvcBuilder @this, IRuntimeConfigurationProvider <TRuntimeConfiguration> runtimeConfigurationProvider, Action <TOptions> optionsBuilder) where TRuntimeConfiguration : class, IRuntimeConfiguration where TOptions : SnoozleOptions { IServiceCollection serviceCollection = @this.Services; AddSnoozleCore(@this, runtimeConfigurationProvider); serviceCollection.Configure(optionsBuilder); return(@this); }
public virtual IObjectContainer CreateGlobalContainer(IRuntimeConfigurationProvider configurationProvider = null) { var container = new ObjectContainer(); container.RegisterInstanceAs <IContainerBuilder>(this); RegisterDefaults(container); if (configurationProvider != null) { container.RegisterInstanceAs(configurationProvider); } configurationProvider = configurationProvider ?? container.Resolve <IRuntimeConfigurationProvider>(); container.RegisterTypeAs <RuntimePluginEvents, RuntimePluginEvents>(); //NOTE: we need this unnecessary registration, due to a bug in BoDi (does not inherit non-registered objects) var runtimePluginEvents = container.Resolve <RuntimePluginEvents>(); LoadPlugins(configurationProvider, container, runtimePluginEvents); runtimePluginEvents.RaiseRegisterGlobalDependencies(container); RuntimeConfiguration runtimeConfiguration = new RuntimeConfiguration(); runtimePluginEvents.RaiseConfigurationDefaults(runtimeConfiguration); configurationProvider.LoadConfiguration(runtimeConfiguration); #if !BODI_LIMITEDRUNTIME if (runtimeConfiguration.CustomDependencies != null) { container.RegisterFromConfiguration(runtimeConfiguration.CustomDependencies); } #endif container.RegisterInstanceAs(runtimeConfiguration); if (runtimeConfiguration.RuntimeUnitTestProvider != null) { container.RegisterInstanceAs(container.Resolve <IUnitTestRuntimeProvider>(runtimeConfiguration.RuntimeUnitTestProvider)); } runtimePluginEvents.RaiseCustomizeGlobalDependencies(container, runtimeConfiguration); return(container); }
protected virtual void LoadPlugins(IRuntimeConfigurationProvider configurationProvider, ObjectContainer container, RuntimePluginEvents runtimePluginEvents, SpecFlowConfiguration specFlowConfiguration) { // initialize plugins that were registered from code foreach (var runtimePlugin in container.Resolve <IDictionary <string, IRuntimePlugin> >().Values) { // these plugins cannot have parameters runtimePlugin.Initialize(runtimePluginEvents, new RuntimePluginParameters()); } // load & initalize parameters from configuration var pluginLoader = container.Resolve <IRuntimePluginLoader>(); foreach (var pluginDescriptor in configurationProvider.GetPlugins(specFlowConfiguration).Where(pd => (pd.Type & PluginType.Runtime) != 0)) { LoadPlugin(pluginDescriptor, pluginLoader, runtimePluginEvents); } }
public static IObjectContainer CreateContainer(IRuntimeConfigurationProvider configurationProvider = null) { var container = new ObjectContainer(); RegisterDefaults(container); if (configurationProvider != null) container.RegisterInstanceAs(configurationProvider); configurationProvider = configurationProvider ?? container.Resolve<IRuntimeConfigurationProvider>(); var pluginLoader = container.Resolve<IRuntimePluginLoader>(); var plugins = configurationProvider.GetPlugins().Select(pd => LoadPlugin(pluginLoader, pd)).ToArray(); foreach (var plugin in plugins) { plugin.RegisterDefaults(container); } RuntimeConfiguration runtimeConfiguration = new RuntimeConfiguration(); foreach (var defaultsProvider in container.Resolve<IDictionary<string, IRuntimeConfigurationDefaultsProvider>>().Values) { defaultsProvider.SetDefaultConfiguration(runtimeConfiguration); } configurationProvider.LoadConfiguration(runtimeConfiguration); #if !BODI_LIMITEDRUNTIME if (runtimeConfiguration.CustomDependencies != null) container.RegisterFromConfiguration(runtimeConfiguration.CustomDependencies); #endif container.RegisterInstanceAs(runtimeConfiguration); if (runtimeConfiguration.TraceListenerType != null) container.RegisterTypeAs<ITraceListener>(runtimeConfiguration.TraceListenerType); if (runtimeConfiguration.RuntimeUnitTestProvider != null) container.RegisterInstanceAs(container.Resolve<IUnitTestRuntimeProvider>(runtimeConfiguration.RuntimeUnitTestProvider)); foreach (var plugin in plugins) { plugin.RegisterCustomizations(container, runtimeConfiguration); } return container; }
/// <summary> /// Adds the core Snoozle functionality and configuration to the application. This should only be called from the data providers <see cref="IMvcBuilder"/> extensions, /// and not directly from the web application. /// </summary> private static IMvcBuilder AddSnoozleCore <TRuntimeConfiguration>( this IMvcBuilder @this, IRuntimeConfigurationProvider <TRuntimeConfiguration> runtimeConfigurationProvider) where TRuntimeConfiguration : class, IRuntimeConfiguration { IServiceCollection serviceCollection = @this.Services; var baseRuntimeConfgurationProvider = runtimeConfigurationProvider as IRuntimeConfigurationProvider <IRuntimeConfiguration>; serviceCollection.AddSingleton(baseRuntimeConfgurationProvider); // Add controller types to a custom application part so they can be discovered correctly @this.ConfigureApplicationPartManager(manager => manager.ApplicationParts.Add(new RestResourceControllerApplicationPart(GetRestResourceControllerTypeInfos()))); // Add custom controller model convention to ensure controller route matches resource name @this.AddMvcOptions(options => options.Conventions.Add(new RestResourceControllerModelConvention(GetCustomRoutes(baseRuntimeConfgurationProvider)))); return(@this); }
protected virtual void LoadPlugins(IRuntimeConfigurationProvider configurationProvider, ObjectContainer container, RuntimePluginEvents runtimePluginEvents, SpecFlowConfiguration specFlowConfiguration, UnitTestProviderConfiguration unitTestProviderConfigration) { // initialize plugins that were registered from code foreach (var runtimePlugin in container.Resolve <IDictionary <string, IRuntimePlugin> >().Values) { // these plugins cannot have parameters runtimePlugin.Initialize(runtimePluginEvents, new RuntimePluginParameters(), unitTestProviderConfigration); } // load & initalize parameters from configuration var pluginLocator = container.Resolve <IRuntimePluginLocator>(); var pluginLoader = container.Resolve <IRuntimePluginLoader>(); var traceListener = container.Resolve <ITraceListener>(); foreach (var pluginPath in pluginLocator.GetAllRuntimePlugins()) { LoadPlugin(pluginPath, pluginLoader, runtimePluginEvents, unitTestProviderConfigration, traceListener); } }
protected virtual void LoadPlugins(IRuntimeConfigurationProvider configurationProvider, ObjectContainer container, RuntimePluginEvents runtimePluginEvents, SpecFlowConfiguration specFlowConfiguration, UnitTestProviderConfiguration unitTestProviderConfigration, Assembly testAssembly) { // initialize plugins that were registered from code foreach (var runtimePlugin in container.Resolve <IDictionary <string, IRuntimePlugin> >().Values) { // these plugins cannot have parameters runtimePlugin.Initialize(runtimePluginEvents, new RuntimePluginParameters(), unitTestProviderConfigration); } // load & initalize parameters from configuration var pluginLocator = container.Resolve <IRuntimePluginLocator>(); var pluginLoader = container.Resolve <IRuntimePluginLoader>(); var traceListener = container.Resolve <ITraceListener>(); foreach (var pluginPath in pluginLocator.GetAllRuntimePlugins()) { // Should not log error if TestAssembly does not have a RuntimePlugin attribute var traceMissingPluginAttribute = !testAssembly.Location.Equals(pluginPath); LoadPlugin(pluginPath, pluginLoader, runtimePluginEvents, unitTestProviderConfigration, traceListener, traceMissingPluginAttribute); } }
public virtual IObjectContainer CreateContainer(IRuntimeConfigurationProvider configurationProvider = null) { var container = new ObjectContainer(); container.RegisterInstanceAs<ITestRunContainerBuilder>(this); RegisterDefaults(container); if (configurationProvider != null) container.RegisterInstanceAs(configurationProvider); configurationProvider = configurationProvider ?? container.Resolve<IRuntimeConfigurationProvider>(); var plugins = LoadPlugins(configurationProvider, container); foreach (var plugin in plugins) plugin.RegisterDependencies(container); RuntimeConfiguration runtimeConfiguration = new RuntimeConfiguration(); foreach (var plugin in plugins) plugin.RegisterConfigurationDefaults(runtimeConfiguration); configurationProvider.LoadConfiguration(runtimeConfiguration); #if !BODI_LIMITEDRUNTIME if (runtimeConfiguration.CustomDependencies != null) container.RegisterFromConfiguration(runtimeConfiguration.CustomDependencies); #endif container.RegisterInstanceAs(runtimeConfiguration); if (runtimeConfiguration.RuntimeUnitTestProvider != null) container.RegisterInstanceAs(container.Resolve<IUnitTestRuntimeProvider>(runtimeConfiguration.RuntimeUnitTestProvider)); foreach (var plugin in plugins) plugin.RegisterCustomizations(container, runtimeConfiguration); return container; }
private static Dictionary <Type, string> GetCustomRoutes(IRuntimeConfigurationProvider <IRuntimeConfiguration> baseRuntimeConfgurationProvider) { // Create a map of custom routes defined for the rest resources return(new Dictionary <Type, string>( baseRuntimeConfgurationProvider.TypesConfigured.Select(c => KeyValuePair.Create(c, baseRuntimeConfgurationProvider.GetRuntimeConfigurationForType(c).Route)))); }
internal static IObjectContainer CreateDefaultTestRunnerContainer(IRuntimeConfigurationProvider configurationProvider = null) { var instance = new TestRunContainerBuilder(); var globalContainer = CreateDefaultGlobalContainer(configurationProvider); return instance.CreateTestRunnerContainer(globalContainer); }
internal static IObjectContainer CreateDefaultTestThreadContainer(IRuntimeConfigurationProvider configurationProvider = null, Action <IObjectContainer> registerGlobalMocks = null, Action <IObjectContainer> registerTestThreadMocks = null) { return(CreateDefaultTestThreadContainer(configurationProvider, registerGlobalMocks, registerTestThreadMocks, new RuntimeTestsContainerBuilder())); }
protected virtual void LoadPlugins(IRuntimeConfigurationProvider configurationProvider, ObjectContainer container, RuntimePluginEvents runtimePluginEvents) { // initialize plugins that were registered from code foreach (var runtimePlugin in container.Resolve<IDictionary<string, IRuntimePlugin>>().Values) { // these plugins cannot have parameters runtimePlugin.Initialize(runtimePluginEvents, new RuntimePluginParameters()); } // load & initalize parameters from configuration var pluginLoader = container.Resolve<IRuntimePluginLoader>(); foreach (var pluginDescriptor in configurationProvider.GetPlugins().Where(pd => (pd.Type & PluginType.Runtime) != 0)) { LoadPlugin(pluginDescriptor, pluginLoader, runtimePluginEvents); } }
public virtual IObjectContainer CreateGlobalContainer(IRuntimeConfigurationProvider configurationProvider = null) { var container = new ObjectContainer(); container.RegisterInstanceAs<IContainerBuilder>(this); RegisterDefaults(container); if (configurationProvider != null) container.RegisterInstanceAs(configurationProvider); configurationProvider = configurationProvider ?? container.Resolve<IRuntimeConfigurationProvider>(); container.RegisterTypeAs<RuntimePluginEvents, RuntimePluginEvents>(); //NOTE: we need this unnecessary registration, due to a bug in BoDi (does not inherit non-registered objects) var runtimePluginEvents = container.Resolve<RuntimePluginEvents>(); LoadPlugins(configurationProvider, container, runtimePluginEvents); runtimePluginEvents.RaiseRegisterGlobalDependencies(container); RuntimeConfiguration runtimeConfiguration = new RuntimeConfiguration(); runtimePluginEvents.RaiseConfigurationDefaults(runtimeConfiguration); configurationProvider.LoadConfiguration(runtimeConfiguration); #if !BODI_LIMITEDRUNTIME if (runtimeConfiguration.CustomDependencies != null) container.RegisterFromConfiguration(runtimeConfiguration.CustomDependencies); #endif container.RegisterInstanceAs(runtimeConfiguration); if (runtimeConfiguration.RuntimeUnitTestProvider != null) container.RegisterInstanceAs(container.Resolve<IUnitTestRuntimeProvider>(runtimeConfiguration.RuntimeUnitTestProvider)); runtimePluginEvents.RaiseCustomizeGlobalDependencies(container, runtimeConfiguration); return container; }