public void NormalExecutionReturnsExpectedObjects() { var settings = new ShellSettings { Name = "Default" }; var topologyDescriptor = new ShellDescriptor { SerialNumber = 6655321 }; var topology = new ShellTopology(); var shellLifetimeScope = _container.BeginLifetimeScope("shell"); _container.Mock<IShellDescriptorCache>() .Setup(x => x.Fetch("Default")) .Returns(topologyDescriptor); _container.Mock<ICompositionStrategy>() .Setup(x => x.Compose(settings, topologyDescriptor)) .Returns(topology); _container.Mock<IShellContainerFactory>() .Setup(x => x.CreateContainer(settings, topology)) .Returns(shellLifetimeScope); _container.Mock<IShellDescriptorManager>() .Setup(x => x.GetShellDescriptor()) .Returns(topologyDescriptor); var factory = _container.Resolve<IShellContextFactory>(); var context = factory.CreateShellContext(settings); Assert.That(context.Settings, Is.SameAs(settings)); Assert.That(context.Descriptor, Is.SameAs(topologyDescriptor)); Assert.That(context.Topology, Is.SameAs(topology)); Assert.That(context.LifetimeScope, Is.SameAs(shellLifetimeScope)); Assert.That(context.Shell, Is.SameAs(shellLifetimeScope.Resolve<IOrchardShell>())); }
public SessionFactoryHolder( ShellSettings shellSettings, ShellTopology shellTopology, ISessionFactoryBuilder sessionFactoryBuilder, IAppDataFolder appDataFolder) { _shellSettings = shellSettings; _shellTopology = shellTopology; _sessionFactoryBuilder = sessionFactoryBuilder; _appDataFolder = appDataFolder; Logger = NullLogger.Instance; }
public void ExtensionDisplayNameShouldBeUsedInBothStandardRoutes() { var topology = new ShellTopology { Controllers = new[] { new ControllerTopology { AreaName ="Long.Name.Foo", Feature =new Feature { Descriptor=new FeatureDescriptor { Extension=new ExtensionDescriptor { DisplayName="Foo" } } } }, new ControllerTopology { AreaName ="Long.Name.Bar", Feature =new Feature { Descriptor=new FeatureDescriptor { Extension=new ExtensionDescriptor { DisplayName="Bar" } } } } } }; var routeProvider = new StandardExtensionRouteProvider(topology); var routes = new List<RouteDescriptor>(); routeProvider.GetRoutes(routes); Assert.That(routes, Has.Count.EqualTo(4)); var fooAdmin = routes.Select(x => x.Route).OfType<Route>() .Single(x => x.Url == "Admin/Foo/{action}/{id}"); var fooRoute = routes.Select(x => x.Route).OfType<Route>() .Single(x => x.Url == "Foo/{controller}/{action}/{id}"); var barAdmin = routes.Select(x => x.Route).OfType<Route>() .Single(x => x.Url == "Admin/Bar/{action}/{id}"); var barRoute = routes.Select(x => x.Route).OfType<Route>() .Single(x => x.Url == "Bar/{controller}/{action}/{id}"); Assert.That(fooAdmin.DataTokens["area"], Is.EqualTo("Long.Name.Foo")); Assert.That(fooRoute.DataTokens["area"], Is.EqualTo("Long.Name.Foo")); Assert.That(barAdmin.DataTokens["area"], Is.EqualTo("Long.Name.Bar")); Assert.That(barRoute.DataTokens["area"], Is.EqualTo("Long.Name.Bar")); }
public void CreatingSetupContextUsesOrchardSetupFeature() { var settings = default(ShellSettings); var descriptor = default(ShellDescriptor); var topology = new ShellTopology(); _container.Mock<ICompositionStrategy>() .Setup(x => x.Compose(It.IsAny<ShellSettings>(), It.IsAny<ShellDescriptor>())) .Callback((ShellSettings s, ShellDescriptor d) => { settings = s; descriptor = d; }) .Returns(topology); _container.Mock<IShellContainerFactory>() .Setup(x => x.CreateContainer(It.IsAny<ShellSettings>(), topology)) .Returns(_container.BeginLifetimeScope("shell")); var factory = _container.Resolve<IShellContextFactory>(); var context = factory.CreateSetupContext(new ShellSettings { Name = "Default" }); Assert.That(context.Descriptor.EnabledFeatures, Has.Some.With.Property("Name").EqualTo("Orchard.Setup")); }
public StandardExtensionRouteProvider(ShellTopology topology) { _topology = topology; }
public ILifetimeScope CreateContainer(ShellSettings settings, ShellTopology topology) { var intermediateScope = _lifetimeScope.BeginLifetimeScope( builder => { foreach (var item in topology.Dependencies.Where(t => typeof(IModule).IsAssignableFrom(t.Type))) { var registration = RegisterType(builder, item) .Keyed<IModule>(item.Type) .InstancePerDependency(); foreach (var parameter in item.Parameters) { registration = registration .WithParameter(parameter.Name, parameter.Value) .WithProperty(parameter.Name, parameter.Value); } } }); return intermediateScope.BeginLifetimeScope( "shell", builder => { var dynamicProxyContext = new DynamicProxyContext(); builder.Register(ctx => dynamicProxyContext); builder.Register(ctx => settings); builder.Register(ctx => topology); var moduleIndex = intermediateScope.Resolve<IIndex<Type, IModule>>(); foreach (var item in topology.Dependencies.Where(t => typeof(IModule).IsAssignableFrom(t.Type))) { builder.RegisterModule(moduleIndex[item.Type]); } foreach (var item in topology.Dependencies.Where(t => typeof(IDependency).IsAssignableFrom(t.Type))) { var registration = RegisterType(builder, item) .EnableDynamicProxy(dynamicProxyContext) .InstancePerLifetimeScope(); foreach (var interfaceType in item.Type.GetInterfaces() .Where(itf => typeof(IDependency).IsAssignableFrom(itf) && !typeof(IEventHandler).IsAssignableFrom(itf))) { registration = registration.As(interfaceType); if (typeof(ISingletonDependency).IsAssignableFrom(interfaceType)) { registration = registration.InstancePerMatchingLifetimeScope("shell"); } else if (typeof(ITransientDependency).IsAssignableFrom(interfaceType)) { registration = registration.InstancePerDependency(); } } if (typeof(IEventHandler).IsAssignableFrom(item.Type)) { registration = registration.As(typeof(IEventHandler)); } foreach (var parameter in item.Parameters) { registration = registration .WithParameter(parameter.Name, parameter.Value) .WithProperty(parameter.Name, parameter.Value); } } foreach (var item in topology.Controllers) { var serviceKey = (item.AreaName + "/" + item.ControllerName).ToLowerInvariant(); RegisterType(builder, item) .EnableDynamicProxy(dynamicProxyContext) .Keyed<IController>(serviceKey) .InstancePerDependency() .InjectActionInvoker(); } var optionalShellConfig = HostingEnvironment.MapPath("~/Config/Sites.config"); if (File.Exists(optionalShellConfig)) builder.RegisterModule(new ConfigurationSettingsReader(ConfigurationSettingsReader.DefaultSectionName, optionalShellConfig)); var optionalShellByNameConfig = HostingEnvironment.MapPath("~/Config/Sites." + settings.Name + ".config"); if (File.Exists(optionalShellByNameConfig)) builder.RegisterModule(new ConfigurationSettingsReader(ConfigurationSettingsReader.DefaultSectionName, optionalShellByNameConfig)); }); }