Esempio n. 1
0
 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;
 }
Esempio n. 2
0
        internal static IObjectContainer CreateDefaultTestRunnerContainer(IRuntimeConfigurationProvider configurationProvider = null)
        {
            var instance        = new TestRunContainerBuilder();
            var globalContainer = CreateDefaultGlobalContainer(configurationProvider);

            return(instance.CreateTestRunnerContainer(globalContainer));
        }
Esempio n. 3
0
        private static IObjectContainer CreateDefaultGlobalContainer(IRuntimeConfigurationProvider configurationProvider, Action <IObjectContainer> registerGlobalMocks, ContainerBuilder instance)
        {
            var globalContainer = instance.CreateGlobalContainer(typeof(TestObjectFactories).Assembly, configurationProvider);

            registerGlobalMocks?.Invoke(globalContainer);
            return(globalContainer);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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();
        }
Esempio n. 8
0
        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);
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
        /// <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);
        }
Esempio n. 14
0
        /// <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);
        }
Esempio n. 15
0
        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);
        }
Esempio n. 16
0
        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;
        }
Esempio n. 18
0
        /// <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);
        }
Esempio n. 19
0
        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);
            }
        }
Esempio n. 20
0
        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;
        }
Esempio n. 22
0
 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))));
 }
Esempio n. 23
0
 internal static IObjectContainer CreateDefaultTestRunnerContainer(IRuntimeConfigurationProvider configurationProvider = null)
 {
     var instance = new TestRunContainerBuilder();
     var globalContainer = CreateDefaultGlobalContainer(configurationProvider);
     return instance.CreateTestRunnerContainer(globalContainer);
 }
Esempio n. 24
0
 internal static IObjectContainer CreateDefaultTestThreadContainer(IRuntimeConfigurationProvider configurationProvider = null, Action <IObjectContainer> registerGlobalMocks = null, Action <IObjectContainer> registerTestThreadMocks = null)
 {
     return(CreateDefaultTestThreadContainer(configurationProvider, registerGlobalMocks, registerTestThreadMocks, new RuntimeTestsContainerBuilder()));
 }
Esempio n. 25
0
        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);
            }
        }
Esempio n. 26
-1
        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;
        }