예제 #1
0
        public ActionResult Index()
        {
            bool easyInstall = System.Configuration.ConfigurationManager.AppSettings["EasyInstall"].ToLowerInvariant() == "true";

            if (!easyInstall)
            {
                return(this.Failed("Access is denied. In order to use this feature, please enter a key named EasyInstall with value true on Web.config/AppSettings.", System.Net.HttpStatusCode.Conflict));
            }

            if (!Directory.Exists(HostingEnvironment.MapPath("~/Resources/_Configs")))
            {
                return(this.Failed("Cannot continue. The configuration template directory: /Resources/_Configs was not found.", System.Net.HttpStatusCode.Conflict));
            }

            var model = EasyInstallConfigFile.Get();

            if (model == null)
            {
                model = new InstallViewModel
                {
                    DomainName   = this.Request.Url.Host,
                    DatabaseName = ByConvention.ConvertToTenantName(this.Request.Url.Host),
                    SqlServer    = new SqlServerConfig(),
                    PostgreSQL   = new PostgreSQLConfig()
                };
            }

            return(this.View("~/Views/EasyInstall.cshtml", model));
        }
예제 #2
0
        public static string GetDbNameByConvention(string domain = "")
        {
            var    approved   = GetSerializer();
            var    convention = new ByConvention(Log.Logger, approved);
            string or         = GetDomain();

            return(convention.GetTenantName(domain, or));
        }
예제 #3
0
        public void TestOrConvention(string domain, string or, string expected)
        {
            var logger     = new FakeLogger();
            var serializer = new FakeDomainSerializer();

            var    convention = new ByConvention(logger, serializer);
            string result     = convention.GetTenantName(domain, or);

            Assert.Equal(expected, result);
        }
예제 #4
0
        public static bool IsValidTenant(string tenant = "")
        {
            var logger     = Log.Logger;
            var serializer = GetSerializer();
            var convention = new ByConvention(logger, serializer);

            var validator = new TenantValidator(logger, serializer, convention);

            return(validator.IsValid(tenant));
        }
예제 #5
0
        public static ITenantLocator GetTenantLocator()
        {
            var logger       = Log.Logger;
            var serializer   = GetSerializer();
            var byConvention = new ByConvention(logger, serializer);
            var extractor    = new DomainNameExtractor(logger);
            var validator    = new TenantValidator(logger, serializer, byConvention);
            var investigator = new TenantLocator(logger, extractor, byConvention, validator, serializer);

            return(investigator);
        }
예제 #6
0
        public void ValidatorTest(string tenantName, bool expected)
        {
            var logger     = new FakeLogger();
            var seriazlier = new FakeDomainSerializer();
            var convention = new ByConvention(logger, seriazlier);

            var  validator = new TenantValidator(logger, seriazlier, convention);
            bool result    = validator.IsValid(tenantName);

            Assert.Equal(expected, result);
        }
예제 #7
0
        public static ApprovedDomain FindDomainByTenant(string tenant)
        {
            var logger     = Log.Logger;
            var serializer = GetSerializer();
            var convention = new ByConvention(logger, serializer);

            string defaultTenant = GetDefaultTenantName();

            var finder = new DomainFinder(serializer, convention);

            return(finder.FindByTenant(tenant, defaultTenant));
        }
예제 #8
0
        public void ShouldFindDomainByTenantName(string defaultSite, string synonym, string expectedDomain)
        {
            var logger     = new FakeLogger();
            var serializer = new FakeDomainSerializer();
            var convention = new ByConvention(logger, serializer);

            var finder = new DomainFinder(serializer, convention);

            var    found  = finder.FindBySynonym(synonym, defaultSite);
            string result = found.DomainName;

            Assert.Equal(expectedDomain, result);
        }
예제 #9
0
        public void TestConvention(string url, string expected)
        {
            string defaultTenant = "localhost";
            var    logger        = new FakeLogger();
            var    serializer    = new FakeDomainSerializer();
            var    extractor     = new DomainNameExtractor(logger);
            var    convention    = new ByConvention(logger, serializer);
            var    validator     = new TenantValidator(logger, serializer, convention);

            var locator = new TenantLocator(logger, extractor, convention, validator, serializer);

            string result = locator.FromUrl(url, defaultTenant);

            Assert.Equal(expected, result);
        }
예제 #10
0
        public void TestGenerateMethod(string url, string expected)
        {
            var          logger        = new FakeLogger();
            var          extractor     = new DomainNameExtractor(logger);
            var          serializer    = new FakeDomainSerializer();
            var          byConvention  = new ByConvention(logger, serializer);
            var          validator     = new TenantValidator(logger, serializer, byConvention);
            const string defaultTenant = "localhost";


            var locator = new TenantLocator(logger, extractor, byConvention, validator, serializer);
            var uri     = new Uri(url);
            var keyGen  = new CacheKeyGenerator(uri, locator, defaultTenant);

            string result = keyGen.Generate();

            Assert.Equal(expected, result);
        }