protected void Application_Start() { // I'm not using areas... no need to register. // AreaRegistration.RegisterAllAreas(); RegisterRoutes(RouteTable.Routes); // create a container just to pull in tenants var topContainer = new Container(); topContainer.Configure(config => { config.Scan(scanner => { // scan the tenants folder // (For some reason just passing "Tenants" doesn't seem to work, which it should according to the docs) scanner.AssembliesFromPath(Path.Combine(Server.MapPath("~/"), "Tenants")); // pull in all the tenant types scanner.AddAllTypesOf<IApplicationTenant>(); }); }); // create selectors var tenantSelector = new DefaultTenantSelector(topContainer.GetAllInstances<IApplicationTenant>()); var containerSelector = new TenantContainerResolver(tenantSelector); // clear view engines, we don't want anything other than spark ViewEngines.Engines.Clear(); // set view engine ViewEngines.Engines.Add(new TenantViewEngine(tenantSelector)); // set controller factory ControllerBuilder.Current.SetControllerFactory(new ContainerControllerFactory(containerSelector)); }
public void DefaultTenantSelector_Select_ReturnsTenantWithSpecifiedBasePath() { var url = "http://wwww.eagleenvision.net"; var expected = GenerateTenant(url); var tenants = new[] { GenerateTenant(), GenerateTenant("http://www.google.com", "http://www.yahoo.com"), expected }; var selector = new DefaultTenantSelector(tenants); Assert.Same(expected, selector.Select(FakeRequest(url))); }
public void DefaultTenantSelector_Ctr_SetsControllers() { var tenants = Enumerable.Empty<IApplicationTenant>(); var selector = new DefaultTenantSelector(tenants); Assert.Same(tenants, selector.Tenants); }