diff --git a/src/Umbraco.Core/Models/UmbracoDomain.cs b/src/Umbraco.Core/Models/UmbracoDomain.cs index d2f5772e93..963535729c 100644 --- a/src/Umbraco.Core/Models/UmbracoDomain.cs +++ b/src/Umbraco.Core/Models/UmbracoDomain.cs @@ -11,6 +11,11 @@ namespace Umbraco.Core.Models [DataContract(IsReference = true)] public class UmbracoDomain : Entity, IDomain { + public UmbracoDomain(string domainName) + { + _domainName = domainName; + } + private IContent _content; private ILanguage _language; private string _domainName; diff --git a/src/Umbraco.Core/Persistence/Repositories/DomainRepository.cs b/src/Umbraco.Core/Persistence/Repositories/DomainRepository.cs index fd29c81c71..2adba8536a 100644 --- a/src/Umbraco.Core/Persistence/Repositories/DomainRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/DomainRepository.cs @@ -290,12 +290,11 @@ namespace Umbraco.Core.Persistence.Repositories return cacheableDomains .WhereNotNull() - .Select(cacheableDomain => new UmbracoDomain + .Select(cacheableDomain => new UmbracoDomain(cacheableDomain.DomainName) { Id = cacheableDomain.Id, //lookup from repo - this will be cached Language = cacheableDomain.DefaultLanguageId.HasValue ? langItems.FirstOrDefault(l => l.Id == cacheableDomain.DefaultLanguageId.Value) : null, - DomainName = cacheableDomain.DomainName, //lookup from repo - this will be cached RootContent = cacheableDomain.RootContentId.HasValue ? contentItems.FirstOrDefault(l => l.Id == cacheableDomain.RootContentId.Value) : null, }); @@ -305,12 +304,11 @@ namespace Umbraco.Core.Persistence.Repositories { if (cacheableDomain == null) return null; - return new UmbracoDomain + return new UmbracoDomain(cacheableDomain.DomainName) { Id = cacheableDomain.Id, //lookup from repo - this will be cached Language = cacheableDomain.DefaultLanguageId.HasValue ? languageRepository.Get(cacheableDomain.DefaultLanguageId.Value) : null, - DomainName = cacheableDomain.DomainName, //lookup from repo - this will be cached RootContent = cacheableDomain.RootContentId.HasValue ? contentRepository.Get(cacheableDomain.RootContentId.Value) : null }; diff --git a/src/Umbraco.Core/Services/LocalizedTextService.cs b/src/Umbraco.Core/Services/LocalizedTextService.cs index cdd52d0787..164ed77d50 100644 --- a/src/Umbraco.Core/Services/LocalizedTextService.cs +++ b/src/Umbraco.Core/Services/LocalizedTextService.cs @@ -46,10 +46,13 @@ namespace Umbraco.Core.Services /// Initializes with a source of a dictionary of culture -> areas -> sub dictionary of keys/values /// /// - public LocalizedTextService(IDictionary>> source) + /// + public LocalizedTextService(IDictionary>> source, ILogger logger) { if (source == null) throw new ArgumentNullException("source"); + if (logger == null) throw new ArgumentNullException("logger"); _dictionarySource = source; + _logger = logger; } public string Localize(string key, CultureInfo culture, IDictionary tokens = null) diff --git a/src/Umbraco.Tests/Persistence/Repositories/DomainRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/DomainRepositoryTest.cs index af0c3b86b5..7fa4f8aef0 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/DomainRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/DomainRepositoryTest.cs @@ -71,7 +71,7 @@ namespace Umbraco.Tests.Persistence.Repositories var lang = langRepo.GetByIsoCode("en-AU"); var content = contentRepo.Get(contentId); - var domain = (IDomain)new UmbracoDomain { RootContent = content, Language = lang, DomainName = "test.com" }; + var domain = (IDomain)new UmbracoDomain("test.com") { RootContent = content, Language = lang }; repo.AddOrUpdate(domain); unitOfWork.Commit(); @@ -107,11 +107,11 @@ namespace Umbraco.Tests.Persistence.Repositories var lang = langRepo.GetByIsoCode("en-AU"); var content = contentRepo.Get(contentId); - var domain1 = (IDomain)new UmbracoDomain { RootContent = content, Language = lang, DomainName = "test.com" }; + var domain1 = (IDomain)new UmbracoDomain("test.com") { RootContent = content, Language = lang }; repo.AddOrUpdate(domain1); unitOfWork.Commit(); - var domain2 = (IDomain)new UmbracoDomain { RootContent = content, Language = lang, DomainName = "test.com" }; + var domain2 = (IDomain)new UmbracoDomain("test.com") { RootContent = content, Language = lang }; repo.AddOrUpdate(domain2); Assert.Throws(unitOfWork.Commit); @@ -140,7 +140,7 @@ namespace Umbraco.Tests.Persistence.Repositories var lang = langRepo.GetByIsoCode("en-AU"); var content = contentRepo.Get(contentId); - var domain = (IDomain)new UmbracoDomain { RootContent = content, Language = lang, DomainName = "test.com" }; + var domain = (IDomain)new UmbracoDomain("test.com") { RootContent = content, Language = lang }; repo.AddOrUpdate(domain); unitOfWork.Commit(); @@ -183,7 +183,7 @@ namespace Umbraco.Tests.Persistence.Repositories unitOfWork.Commit(); - var domain = (IDomain)new UmbracoDomain { RootContent = content1, Language = lang1, DomainName = "test.com" }; + var domain = (IDomain)new UmbracoDomain("test.com") { RootContent = content1, Language = lang1 }; repo.AddOrUpdate(domain); unitOfWork.Commit(); @@ -227,7 +227,7 @@ namespace Umbraco.Tests.Persistence.Repositories for (int i = 0; i < 10; i++) { - var domain = (IDomain)new UmbracoDomain { RootContent = content, Language = lang, DomainName = "test " + i + ".com" }; + var domain = (IDomain)new UmbracoDomain("test " + i + ".com") { RootContent = content, Language = lang }; repo.AddOrUpdate(domain); unitOfWork.Commit(); } @@ -259,7 +259,7 @@ namespace Umbraco.Tests.Persistence.Repositories var ids = new List(); for (int i = 0; i < 10; i++) { - var domain = (IDomain)new UmbracoDomain { RootContent = content, Language = lang, DomainName = "test " + i + ".com" }; + var domain = (IDomain)new UmbracoDomain("test " + i + ".com") { RootContent = content, Language = lang }; repo.AddOrUpdate(domain); unitOfWork.Commit(); ids.Add(domain.Id); @@ -291,11 +291,10 @@ namespace Umbraco.Tests.Persistence.Repositories for (int i = 0; i < 10; i++) { - var domain = (IDomain)new UmbracoDomain + var domain = (IDomain)new UmbracoDomain((i % 2 == 0) ? "test " + i + ".com" : ("*" + i)) { RootContent = content, - Language = lang, - DomainName = (i%2==0) ? "test " + i + ".com" : ("*" + i) + Language = lang }; repo.AddOrUpdate(domain); unitOfWork.Commit(); @@ -338,11 +337,10 @@ namespace Umbraco.Tests.Persistence.Repositories for (int i = 0; i < 10; i++) { - var domain = (IDomain)new UmbracoDomain + var domain = (IDomain)new UmbracoDomain((i % 2 == 0) ? "test " + i + ".com" : ("*" + i)) { RootContent = (i % 2 == 0) ? contentItems[0] : contentItems[1], - Language = lang, - DomainName = (i % 2 == 0) ? "test " + i + ".com" : ("*" + i) + Language = lang }; repo.AddOrUpdate(domain); unitOfWork.Commit(); @@ -390,11 +388,10 @@ namespace Umbraco.Tests.Persistence.Repositories for (int i = 0; i < 10; i++) { - var domain = (IDomain)new UmbracoDomain + var domain = (IDomain)new UmbracoDomain((i % 2 == 0) ? "test " + i + ".com" : ("*" + i)) { RootContent = (i % 2 == 0) ? contentItems[0] : contentItems[1], - Language = lang, - DomainName = (i % 2 == 0) ? "test " + i + ".com" : ("*" + i) + Language = lang }; repo.AddOrUpdate(domain); unitOfWork.Commit(); diff --git a/src/Umbraco.Tests/Routing/ContentFinderByNiceUrlWithDomainsTests.cs b/src/Umbraco.Tests/Routing/ContentFinderByNiceUrlWithDomainsTests.cs index 1a1c116eca..13a3d7bca6 100644 --- a/src/Umbraco.Tests/Routing/ContentFinderByNiceUrlWithDomainsTests.cs +++ b/src/Umbraco.Tests/Routing/ContentFinderByNiceUrlWithDomainsTests.cs @@ -43,7 +43,7 @@ namespace Umbraco.Tests.Routing { SetupDomainServiceMock(new[] { - new UmbracoDomain {Id = 1, DomainName = "domain1.com/", Language = new Language("de-DE"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 1001}} + new UmbracoDomain("domain1.com/") {Id = 1, Language = new Language("de-DE"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 1001}} }); //var langEn = Language.GetByCultureCode("en-US"); @@ -56,12 +56,12 @@ namespace Umbraco.Tests.Routing { SetupDomainServiceMock(new[] { - new UmbracoDomain {Id = 1, DomainName = "domain1.com/", Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 1001}}, - new UmbracoDomain {Id = 1, DomainName = "domain1.com/en", Language = new Language("en-US"), RootContent = new Content("test2", -1, new ContentType(-1)) {Id = 10011}}, - new UmbracoDomain {Id = 1, DomainName = "domain1.com/fr", Language = new Language("fr-FR"), RootContent = new Content("test3", -1, new ContentType(-1)) {Id = 10012}}, - new UmbracoDomain {Id = 1, DomainName = "domain3.com/", Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 1003}}, - new UmbracoDomain {Id = 1, DomainName = "domain3.com/en", Language = new Language("en-US"), RootContent = new Content("test2", -1, new ContentType(-1)) {Id = 10031}}, - new UmbracoDomain {Id = 1, DomainName = "domain3.com/fr", Language = new Language("fr-FR"), RootContent = new Content("test3", -1, new ContentType(-1)) {Id = 10032}} + new UmbracoDomain("domain1.com/") {Id = 1, Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 1001}}, + new UmbracoDomain("domain1.com/en") {Id = 1, Language = new Language("en-US"), RootContent = new Content("test2", -1, new ContentType(-1)) {Id = 10011}}, + new UmbracoDomain("domain1.com/fr") {Id = 1, Language = new Language("fr-FR"), RootContent = new Content("test3", -1, new ContentType(-1)) {Id = 10012}}, + new UmbracoDomain("http://domain3.com/") {Id = 1, Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 1003}}, + new UmbracoDomain("http://domain3.com/en") {Id = 1, Language = new Language("en-US"), RootContent = new Content("test2", -1, new ContentType(-1)) {Id = 10031}}, + new UmbracoDomain("http://domain3.com/fr") {Id = 1, Language = new Language("fr-FR"), RootContent = new Content("test3", -1, new ContentType(-1)) {Id = 10032}} }); //var langEn = Language.GetByCultureCode("en-US"); diff --git a/src/Umbraco.Tests/Routing/DomainsAndCulturesTests.cs b/src/Umbraco.Tests/Routing/DomainsAndCulturesTests.cs index 2acadbb830..9042bbca53 100644 --- a/src/Umbraco.Tests/Routing/DomainsAndCulturesTests.cs +++ b/src/Umbraco.Tests/Routing/DomainsAndCulturesTests.cs @@ -19,9 +19,9 @@ namespace Umbraco.Tests.Routing { SetupDomainServiceMock(new[] { - new UmbracoDomain {Id = 1, DomainName = "domain1.com/", Language = new Language("de-DE"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 1001}}, - new UmbracoDomain {Id = 1, DomainName = "domain1.com/en", Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10011}}, - new UmbracoDomain {Id = 1, DomainName = "domain1.com/fr", Language = new Language("fr-FR"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10012}} + new UmbracoDomain("domain1.com/") {Id = 1, Language = new Language("de-DE"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 1001}}, + new UmbracoDomain("domain1.com/en") {Id = 1, Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10011}}, + new UmbracoDomain("domain1.com/fr") {Id = 1, Language = new Language("fr-FR"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10012}} }); } @@ -29,15 +29,15 @@ namespace Umbraco.Tests.Routing { SetupDomainServiceMock(new[] { - new UmbracoDomain {Id = 1, DomainName = "domain1.com/", Language = new Language("de-DE"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 1001}}, - new UmbracoDomain {Id = 1, DomainName = "domain1.com/en", Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10011}}, - new UmbracoDomain {Id = 1, DomainName = "domain1.com/fr", Language = new Language("fr-FR"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10012}}, - new UmbracoDomain {Id = 1, DomainName = "*1001", Language = new Language("de-DE"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 1001}}, - new UmbracoDomain {Id = 1, DomainName = "*10011", Language = new Language("cs-CZ"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10011}}, - new UmbracoDomain {Id = 1, DomainName = "*100112", Language = new Language("nl-NL"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 100112}}, - new UmbracoDomain {Id = 1, DomainName = "*1001122", Language = new Language("da-DK"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 1001122}}, - new UmbracoDomain {Id = 1, DomainName = "*10012", Language = new Language("nl-NL"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10012}}, - new UmbracoDomain {Id = 1, DomainName = "*10031", Language = new Language("nl-NL"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10031}} + new UmbracoDomain("domain1.com/") {Id = 1, Language = new Language("de-DE"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 1001}}, + new UmbracoDomain("domain1.com/en") {Id = 1, Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10011}}, + new UmbracoDomain("domain1.com/fr") {Id = 1, Language = new Language("fr-FR"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10012}}, + new UmbracoDomain("*1001") {Id = 1, Language = new Language("de-DE"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 1001}}, + new UmbracoDomain("*10011") {Id = 1, Language = new Language("cs-CZ"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10011}}, + new UmbracoDomain("*100112") {Id = 1, Language = new Language("nl-NL"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 100112}}, + new UmbracoDomain("*1001122") {Id = 1, Language = new Language("da-DK"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 1001122}}, + new UmbracoDomain("*10012") {Id = 1, Language = new Language("nl-NL"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10012}}, + new UmbracoDomain("*10031") {Id = 1, Language = new Language("nl-NL"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10031}} }); } diff --git a/src/Umbraco.Tests/Routing/NiceUrlsProviderWithDomainsTests.cs b/src/Umbraco.Tests/Routing/NiceUrlsProviderWithDomainsTests.cs index 48d67deb28..3a64389104 100644 --- a/src/Umbraco.Tests/Routing/NiceUrlsProviderWithDomainsTests.cs +++ b/src/Umbraco.Tests/Routing/NiceUrlsProviderWithDomainsTests.cs @@ -13,9 +13,9 @@ using umbraco.cms.businesslogic.web; using System.Configuration; namespace Umbraco.Tests.Routing { - [TestFixture] + [TestFixture] public class NiceUrlsProviderWithDomainsTests : UrlRoutingTestBase - { + { protected override void FreezeResolution() { SiteDomainHelperResolver.Current = new SiteDomainHelperResolver(new SiteDomainHelper()); @@ -23,20 +23,20 @@ namespace Umbraco.Tests.Routing } - void SetDomains1() - { + void SetDomains1() + { SetupDomainServiceMock(new[] { - new UmbracoDomain {Id = 1, DomainName = "domain1.com", Language = new Language("fr-FR"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 1001}} + new UmbracoDomain("domain1.com") {Id = 1, Language = new Language("fr-FR"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 1001}} }); - } + } void SetDomains2() { SetupDomainServiceMock(new[] { - new UmbracoDomain {Id = 1, DomainName = "http://domain1.com/foo", Language = new Language("fr-FR"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 1001}} + new UmbracoDomain("http://domain1.com/foo") {Id = 1, Language = new Language("fr-FR"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 1001}} }); } @@ -44,7 +44,7 @@ namespace Umbraco.Tests.Routing { SetupDomainServiceMock(new[] { - new UmbracoDomain {Id = 1, DomainName = "http://domain1.com/", Language = new Language("fr-FR"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10011}} + new UmbracoDomain("http://domain1.com/") {Id = 1, Language = new Language("fr-FR"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10011}} }); } @@ -52,12 +52,12 @@ namespace Umbraco.Tests.Routing { SetupDomainServiceMock(new[] { - new UmbracoDomain {Id = 1, DomainName = "http://domain1.com/", Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 1001}}, - new UmbracoDomain {Id = 1, DomainName = "http://domain1.com/en", Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10011}}, - new UmbracoDomain {Id = 1, DomainName = "http://domain1.com/fr", Language = new Language("fr-FR"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10012}}, - new UmbracoDomain {Id = 1, DomainName = "http://domain3.com/", Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 1003}}, - new UmbracoDomain {Id = 1, DomainName = "http://domain3.com/en", Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10031}}, - new UmbracoDomain {Id = 1, DomainName = "http://domain3.com/fr", Language = new Language("fr-FR"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10032}} + new UmbracoDomain("http://domain1.com/") {Id = 1, Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 1001}}, + new UmbracoDomain("http://domain1.com/en") {Id = 1, Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10011}}, + new UmbracoDomain("http://domain1.com/fr") {Id = 1, Language = new Language("fr-FR"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10012}}, + new UmbracoDomain("http://domain3.com/") {Id = 1, Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 1003}}, + new UmbracoDomain("http://domain3.com/en") {Id = 1, Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10031}}, + new UmbracoDomain("http://domain3.com/fr") {Id = 1, Language = new Language("fr-FR"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10032}} }); } @@ -65,20 +65,20 @@ namespace Umbraco.Tests.Routing { SetupDomainServiceMock(new[] { - new UmbracoDomain {Id = 1, DomainName = "http://domain1.com/en", Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10011}}, - new UmbracoDomain {Id = 1, DomainName = "http://domain1a.com/en", Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10011}}, - new UmbracoDomain {Id = 1, DomainName = "http://domain1b.com/en", Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10011}}, - new UmbracoDomain {Id = 1, DomainName = "http://domain1.com/fr", Language = new Language("fr-FR"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10012}}, - new UmbracoDomain {Id = 1, DomainName = "http://domain1a.com/fr", Language = new Language("fr-FR"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10012}}, - new UmbracoDomain {Id = 1, DomainName = "http://domain1b.com/fr", Language = new Language("fr-FR"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10012}}, - new UmbracoDomain {Id = 1, DomainName = "http://domain3.com/en", Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10031}}, - new UmbracoDomain {Id = 1, DomainName = "http://domain3.com/fr", Language = new Language("fr-FR"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10032}} + new UmbracoDomain("http://domain1.com/en") {Id = 1, Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10011}}, + new UmbracoDomain("http://domain1a.com/en") {Id = 1, Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10011}}, + new UmbracoDomain("http://domain1b.com/en") {Id = 1, Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10011}}, + new UmbracoDomain("http://domain1.com/fr") {Id = 1, Language = new Language("fr-FR"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10012}}, + new UmbracoDomain("http://domain1a.com/fr") {Id = 1, Language = new Language("fr-FR"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10012}}, + new UmbracoDomain("http://domain1b.com/fr") {Id = 1, Language = new Language("fr-FR"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10012}}, + new UmbracoDomain("http://domain3.com/en") {Id = 1, Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10031}}, + new UmbracoDomain("http://domain3.com/fr") {Id = 1, Language = new Language("fr-FR"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10032}} }); } - protected override string GetXmlContent(int templateId) - { - return @" + protected override string GetXmlContent(int templateId) + { + return @" @@ -157,233 +157,233 @@ namespace Umbraco.Tests.Routing "; - } + } - // with one simple domain "domain1.com" - // basic tests - [TestCase(1001, "http://domain1.com", false, "/")] - [TestCase(10011, "http://domain1.com", false, "/1001-1/")] - [TestCase(1002, "http://domain1.com", false, "/1002/")] - // absolute tests - [TestCase(1001, "http://domain1.com", true, "http://domain1.com/")] - [TestCase(10011, "http://domain1.com", true, "http://domain1.com/1001-1/")] - // different current tests - [TestCase(1001, "http://domain2.com", false, "http://domain1.com/")] - [TestCase(10011, "http://domain2.com", false, "http://domain1.com/1001-1/")] - [TestCase(1001, "https://domain1.com", false, "/")] - [TestCase(10011, "https://domain1.com", false, "/1001-1/")] - public void Get_Nice_Url_SimpleDomain(int nodeId, string currentUrl, bool absolute, string expected) - { - var settings = SettingsForTests.GenerateMockSettings(); - var request = Mock.Get(settings.RequestHandler); - request.Setup(x => x.UseDomainPrefixes).Returns(false); - - var routingContext = GetRoutingContext("/test", 1111, umbracoSettings: settings); - - SettingsForTests.UseDirectoryUrls = true; - SettingsForTests.HideTopLevelNodeFromPath = false; // ignored w/domains - - SetDomains1(); - - var currentUri = new Uri(currentUrl); - var result = routingContext.UrlProvider.GetUrl(nodeId, currentUri, absolute); - Assert.AreEqual(expected, result); - } - - // with one complete domain "http://domain1.com/foo" - // basic tests - [TestCase(1001, "http://domain1.com", false, "/foo/")] - [TestCase(10011, "http://domain1.com", false, "/foo/1001-1/")] - [TestCase(1002, "http://domain1.com", false, "/1002/")] - // absolute tests - [TestCase(1001, "http://domain1.com", true, "http://domain1.com/foo/")] - [TestCase(10011, "http://domain1.com", true, "http://domain1.com/foo/1001-1/")] - // different current tests - [TestCase(1001, "http://domain2.com", false, "http://domain1.com/foo/")] - [TestCase(10011, "http://domain2.com", false, "http://domain1.com/foo/1001-1/")] - [TestCase(1001, "https://domain1.com", false, "http://domain1.com/foo/")] - [TestCase(10011, "https://domain1.com", false, "http://domain1.com/foo/1001-1/")] - public void Get_Nice_Url_SimpleWithSchemeAndPath(int nodeId, string currentUrl, bool absolute, string expected) - { + // with one simple domain "domain1.com" + // basic tests + [TestCase(1001, "http://domain1.com", false, "/")] + [TestCase(10011, "http://domain1.com", false, "/1001-1/")] + [TestCase(1002, "http://domain1.com", false, "/1002/")] + // absolute tests + [TestCase(1001, "http://domain1.com", true, "http://domain1.com/")] + [TestCase(10011, "http://domain1.com", true, "http://domain1.com/1001-1/")] + // different current tests + [TestCase(1001, "http://domain2.com", false, "http://domain1.com/")] + [TestCase(10011, "http://domain2.com", false, "http://domain1.com/1001-1/")] + [TestCase(1001, "https://domain1.com", false, "/")] + [TestCase(10011, "https://domain1.com", false, "/1001-1/")] + public void Get_Nice_Url_SimpleDomain(int nodeId, string currentUrl, bool absolute, string expected) + { var settings = SettingsForTests.GenerateMockSettings(); var request = Mock.Get(settings.RequestHandler); request.Setup(x => x.UseDomainPrefixes).Returns(false); - var routingContext = GetRoutingContext("/test", 1111, umbracoSettings: settings); + var routingContext = GetRoutingContext("/test", 1111, umbracoSettings: settings); SettingsForTests.UseDirectoryUrls = true; SettingsForTests.HideTopLevelNodeFromPath = false; // ignored w/domains - SetDomains2(); + SetDomains1(); - var currentUri = new Uri(currentUrl); - var result = routingContext.UrlProvider.GetUrl(nodeId, currentUri, absolute); - Assert.AreEqual(expected, result); - } + var currentUri = new Uri(currentUrl); + var result = routingContext.UrlProvider.GetUrl(nodeId, currentUri, absolute); + Assert.AreEqual(expected, result); + } - // with one domain, not at root - [TestCase(1001, "http://domain1.com", false, "/1001/")] - [TestCase(10011, "http://domain1.com", false, "/")] - [TestCase(100111, "http://domain1.com", false, "/1001-1-1/")] - [TestCase(1002, "http://domain1.com", false, "/1002/")] - public void Get_Nice_Url_DeepDomain(int nodeId, string currentUrl, bool absolute, string expected) - { + // with one complete domain "http://domain1.com/foo" + // basic tests + [TestCase(1001, "http://domain1.com", false, "/foo/")] + [TestCase(10011, "http://domain1.com", false, "/foo/1001-1/")] + [TestCase(1002, "http://domain1.com", false, "/1002/")] + // absolute tests + [TestCase(1001, "http://domain1.com", true, "http://domain1.com/foo/")] + [TestCase(10011, "http://domain1.com", true, "http://domain1.com/foo/1001-1/")] + // different current tests + [TestCase(1001, "http://domain2.com", false, "http://domain1.com/foo/")] + [TestCase(10011, "http://domain2.com", false, "http://domain1.com/foo/1001-1/")] + [TestCase(1001, "https://domain1.com", false, "http://domain1.com/foo/")] + [TestCase(10011, "https://domain1.com", false, "http://domain1.com/foo/1001-1/")] + public void Get_Nice_Url_SimpleWithSchemeAndPath(int nodeId, string currentUrl, bool absolute, string expected) + { var settings = SettingsForTests.GenerateMockSettings(); var request = Mock.Get(settings.RequestHandler); request.Setup(x => x.UseDomainPrefixes).Returns(false); - var routingContext = GetRoutingContext("/test", 1111, umbracoSettings: settings); + var routingContext = GetRoutingContext("/test", 1111, umbracoSettings: settings); + + SettingsForTests.UseDirectoryUrls = true; + SettingsForTests.HideTopLevelNodeFromPath = false; // ignored w/domains + + SetDomains2(); + + var currentUri = new Uri(currentUrl); + var result = routingContext.UrlProvider.GetUrl(nodeId, currentUri, absolute); + Assert.AreEqual(expected, result); + } + + // with one domain, not at root + [TestCase(1001, "http://domain1.com", false, "/1001/")] + [TestCase(10011, "http://domain1.com", false, "/")] + [TestCase(100111, "http://domain1.com", false, "/1001-1-1/")] + [TestCase(1002, "http://domain1.com", false, "/1002/")] + public void Get_Nice_Url_DeepDomain(int nodeId, string currentUrl, bool absolute, string expected) + { + var settings = SettingsForTests.GenerateMockSettings(); + var request = Mock.Get(settings.RequestHandler); + request.Setup(x => x.UseDomainPrefixes).Returns(false); + + var routingContext = GetRoutingContext("/test", 1111, umbracoSettings: settings); SettingsForTests.UseDirectoryUrls = true; SettingsForTests.HideTopLevelNodeFromPath = false; // ignored w/domains SetDomains3(); - var currentUri = new Uri(currentUrl); - var result = routingContext.UrlProvider.GetUrl(nodeId, currentUri, absolute); - Assert.AreEqual(expected, result); - } + var currentUri = new Uri(currentUrl); + var result = routingContext.UrlProvider.GetUrl(nodeId, currentUri, absolute); + Assert.AreEqual(expected, result); + } - // with nested domains - [TestCase(1001, "http://domain1.com", false, "/")] - [TestCase(10011, "http://domain1.com", false, "/en/")] - [TestCase(100111, "http://domain1.com", false, "/en/1001-1-1/")] - [TestCase(10012, "http://domain1.com", false, "/fr/")] - [TestCase(100121, "http://domain1.com", false, "/fr/1001-2-1/")] - [TestCase(10013, "http://domain1.com", false, "/1001-3/")] - [TestCase(1002, "http://domain1.com", false, "/1002/")] - [TestCase(1003, "http://domain3.com", false, "/")] - [TestCase(10031, "http://domain3.com", false, "/en/")] - [TestCase(100321, "http://domain3.com", false, "/fr/1003-2-1/")] - public void Get_Nice_Url_NestedDomains(int nodeId, string currentUrl, bool absolute, string expected) - { + // with nested domains + [TestCase(1001, "http://domain1.com", false, "/")] + [TestCase(10011, "http://domain1.com", false, "/en/")] + [TestCase(100111, "http://domain1.com", false, "/en/1001-1-1/")] + [TestCase(10012, "http://domain1.com", false, "/fr/")] + [TestCase(100121, "http://domain1.com", false, "/fr/1001-2-1/")] + [TestCase(10013, "http://domain1.com", false, "/1001-3/")] + [TestCase(1002, "http://domain1.com", false, "/1002/")] + [TestCase(1003, "http://domain3.com", false, "/")] + [TestCase(10031, "http://domain3.com", false, "/en/")] + [TestCase(100321, "http://domain3.com", false, "/fr/1003-2-1/")] + public void Get_Nice_Url_NestedDomains(int nodeId, string currentUrl, bool absolute, string expected) + { var settings = SettingsForTests.GenerateMockSettings(); var request = Mock.Get(settings.RequestHandler); request.Setup(x => x.UseDomainPrefixes).Returns(false); - var routingContext = GetRoutingContext("/test", 1111, umbracoSettings: settings); + var routingContext = GetRoutingContext("/test", 1111, umbracoSettings: settings); SettingsForTests.UseDirectoryUrls = true; SettingsForTests.HideTopLevelNodeFromPath = false; // ignored w/domains - - SetDomains4(); - var currentUri = new Uri(currentUrl); - var result = routingContext.UrlProvider.GetUrl(nodeId, currentUri, absolute); - Assert.AreEqual(expected, result); - } + SetDomains4(); - [Test] - public void Get_Nice_Url_DomainsAndCache() - { + var currentUri = new Uri(currentUrl); + var result = routingContext.UrlProvider.GetUrl(nodeId, currentUri, absolute); + Assert.AreEqual(expected, result); + } + + [Test] + public void Get_Nice_Url_DomainsAndCache() + { var settings = SettingsForTests.GenerateMockSettings(); var request = Mock.Get(settings.RequestHandler); request.Setup(x => x.UseDomainPrefixes).Returns(false); - var routingContext = GetRoutingContext("/test", 1111, umbracoSettings: settings); + var routingContext = GetRoutingContext("/test", 1111, umbracoSettings: settings); SettingsForTests.UseDirectoryUrls = true; SettingsForTests.HideTopLevelNodeFromPath = false; // ignored w/domains - SetDomains4(); + SetDomains4(); - string ignore; - ignore = routingContext.UrlProvider.GetUrl(1001, new Uri("http://domain1.com"), false); - ignore = routingContext.UrlProvider.GetUrl(10011, new Uri("http://domain1.com"), false); - ignore = routingContext.UrlProvider.GetUrl(100111, new Uri("http://domain1.com"), false); - ignore = routingContext.UrlProvider.GetUrl(10012, new Uri("http://domain1.com"), false); - ignore = routingContext.UrlProvider.GetUrl(100121, new Uri("http://domain1.com"), false); - ignore = routingContext.UrlProvider.GetUrl(10013, new Uri("http://domain1.com"), false); - ignore = routingContext.UrlProvider.GetUrl(1002, new Uri("http://domain1.com"), false); - ignore = routingContext.UrlProvider.GetUrl(1001, new Uri("http://domain2.com"), false); - ignore = routingContext.UrlProvider.GetUrl(10011, new Uri("http://domain2.com"), false); - ignore = routingContext.UrlProvider.GetUrl(100111, new Uri("http://domain2.com"), false); - ignore = routingContext.UrlProvider.GetUrl(1002, new Uri("http://domain2.com"), false); + string ignore; + ignore = routingContext.UrlProvider.GetUrl(1001, new Uri("http://domain1.com"), false); + ignore = routingContext.UrlProvider.GetUrl(10011, new Uri("http://domain1.com"), false); + ignore = routingContext.UrlProvider.GetUrl(100111, new Uri("http://domain1.com"), false); + ignore = routingContext.UrlProvider.GetUrl(10012, new Uri("http://domain1.com"), false); + ignore = routingContext.UrlProvider.GetUrl(100121, new Uri("http://domain1.com"), false); + ignore = routingContext.UrlProvider.GetUrl(10013, new Uri("http://domain1.com"), false); + ignore = routingContext.UrlProvider.GetUrl(1002, new Uri("http://domain1.com"), false); + ignore = routingContext.UrlProvider.GetUrl(1001, new Uri("http://domain2.com"), false); + ignore = routingContext.UrlProvider.GetUrl(10011, new Uri("http://domain2.com"), false); + ignore = routingContext.UrlProvider.GetUrl(100111, new Uri("http://domain2.com"), false); + ignore = routingContext.UrlProvider.GetUrl(1002, new Uri("http://domain2.com"), false); var cache = routingContext.UmbracoContext.ContentCache.InnerCache as PublishedContentCache; if (cache == null) throw new Exception("Unsupported IPublishedContentCache, only the Xml one is supported."); var cachedRoutes = cache.RoutesCache.GetCachedRoutes(); Assert.AreEqual(7, cachedRoutes.Count); - var cachedIds = cache.RoutesCache.GetCachedIds(); - Assert.AreEqual(7, cachedIds.Count); + var cachedIds = cache.RoutesCache.GetCachedIds(); + Assert.AreEqual(7, cachedIds.Count); - CheckRoute(cachedRoutes, cachedIds, 1001, "1001/"); - CheckRoute(cachedRoutes, cachedIds, 10011, "10011/"); - CheckRoute(cachedRoutes, cachedIds, 100111, "10011/1001-1-1"); - CheckRoute(cachedRoutes, cachedIds, 10012, "10012/"); - CheckRoute(cachedRoutes, cachedIds, 100121, "10012/1001-2-1"); - CheckRoute(cachedRoutes, cachedIds, 10013, "1001/1001-3"); - CheckRoute(cachedRoutes, cachedIds, 1002, "/1002"); + CheckRoute(cachedRoutes, cachedIds, 1001, "1001/"); + CheckRoute(cachedRoutes, cachedIds, 10011, "10011/"); + CheckRoute(cachedRoutes, cachedIds, 100111, "10011/1001-1-1"); + CheckRoute(cachedRoutes, cachedIds, 10012, "10012/"); + CheckRoute(cachedRoutes, cachedIds, 100121, "10012/1001-2-1"); + CheckRoute(cachedRoutes, cachedIds, 10013, "1001/1001-3"); + CheckRoute(cachedRoutes, cachedIds, 1002, "/1002"); - // use the cache - Assert.AreEqual("/", routingContext.UrlProvider.GetUrl(1001, new Uri("http://domain1.com"), false)); - Assert.AreEqual("/en/", routingContext.UrlProvider.GetUrl(10011, new Uri("http://domain1.com"), false)); - Assert.AreEqual("/en/1001-1-1/", routingContext.UrlProvider.GetUrl(100111, new Uri("http://domain1.com"), false)); - Assert.AreEqual("/fr/", routingContext.UrlProvider.GetUrl(10012, new Uri("http://domain1.com"), false)); - Assert.AreEqual("/fr/1001-2-1/", routingContext.UrlProvider.GetUrl(100121, new Uri("http://domain1.com"), false)); - Assert.AreEqual("/1001-3/", routingContext.UrlProvider.GetUrl(10013, new Uri("http://domain1.com"), false)); - Assert.AreEqual("/1002/", routingContext.UrlProvider.GetUrl(1002, new Uri("http://domain1.com"), false)); + // use the cache + Assert.AreEqual("/", routingContext.UrlProvider.GetUrl(1001, new Uri("http://domain1.com"), false)); + Assert.AreEqual("/en/", routingContext.UrlProvider.GetUrl(10011, new Uri("http://domain1.com"), false)); + Assert.AreEqual("/en/1001-1-1/", routingContext.UrlProvider.GetUrl(100111, new Uri("http://domain1.com"), false)); + Assert.AreEqual("/fr/", routingContext.UrlProvider.GetUrl(10012, new Uri("http://domain1.com"), false)); + Assert.AreEqual("/fr/1001-2-1/", routingContext.UrlProvider.GetUrl(100121, new Uri("http://domain1.com"), false)); + Assert.AreEqual("/1001-3/", routingContext.UrlProvider.GetUrl(10013, new Uri("http://domain1.com"), false)); + Assert.AreEqual("/1002/", routingContext.UrlProvider.GetUrl(1002, new Uri("http://domain1.com"), false)); - Assert.AreEqual("http://domain1.com/fr/1001-2-1/", routingContext.UrlProvider.GetUrl(100121, new Uri("http://domain2.com"), false)); - } + Assert.AreEqual("http://domain1.com/fr/1001-2-1/", routingContext.UrlProvider.GetUrl(100121, new Uri("http://domain2.com"), false)); + } - void CheckRoute(IDictionary routes, IDictionary ids, int id, string route) - { - Assert.IsTrue(routes.ContainsKey(id)); - Assert.AreEqual(route, routes[id]); - Assert.IsTrue(ids.ContainsKey(route)); - Assert.AreEqual(id, ids[route]); - } + void CheckRoute(IDictionary routes, IDictionary ids, int id, string route) + { + Assert.IsTrue(routes.ContainsKey(id)); + Assert.AreEqual(route, routes[id]); + Assert.IsTrue(ids.ContainsKey(route)); + Assert.AreEqual(id, ids[route]); + } - [Test] - public void Get_Nice_Url_Relative_Or_Absolute() - { + [Test] + public void Get_Nice_Url_Relative_Or_Absolute() + { var settings = SettingsForTests.GenerateMockSettings(); var requestMock = Mock.Get(settings.RequestHandler); requestMock.Setup(x => x.UseDomainPrefixes).Returns(false); - var routingContext = GetRoutingContext("http://domain1.com/test", 1111, umbracoSettings: settings); + var routingContext = GetRoutingContext("http://domain1.com/test", 1111, umbracoSettings: settings); SettingsForTests.UseDirectoryUrls = true; SettingsForTests.HideTopLevelNodeFromPath = false; - SetDomains4(); - + SetDomains4(); + Assert.AreEqual("/en/1001-1-1/", routingContext.UrlProvider.GetUrl(100111)); - Assert.AreEqual("http://domain3.com/en/1003-1-1/", routingContext.UrlProvider.GetUrl(100311)); - + Assert.AreEqual("http://domain3.com/en/1003-1-1/", routingContext.UrlProvider.GetUrl(100311)); + requestMock.Setup(x => x.UseDomainPrefixes).Returns(true); Assert.AreEqual("http://domain1.com/en/1001-1-1/", routingContext.UrlProvider.GetUrl(100111)); - Assert.AreEqual("http://domain3.com/en/1003-1-1/", routingContext.UrlProvider.GetUrl(100311)); + Assert.AreEqual("http://domain3.com/en/1003-1-1/", routingContext.UrlProvider.GetUrl(100311)); requestMock.Setup(x => x.UseDomainPrefixes).Returns(false); routingContext.UrlProvider.Mode = UrlProviderMode.Absolute; - Assert.AreEqual("http://domain1.com/en/1001-1-1/", routingContext.UrlProvider.GetUrl(100111)); - Assert.AreEqual("http://domain3.com/en/1003-1-1/", routingContext.UrlProvider.GetUrl(100311)); - } + Assert.AreEqual("http://domain1.com/en/1001-1-1/", routingContext.UrlProvider.GetUrl(100111)); + Assert.AreEqual("http://domain3.com/en/1003-1-1/", routingContext.UrlProvider.GetUrl(100311)); + } - [Test] - public void Get_Nice_Url_Alternate() - { + [Test] + public void Get_Nice_Url_Alternate() + { var settings = SettingsForTests.GenerateMockSettings(); - var routingContext = GetRoutingContext("http://domain1.com/en/test", 1111,umbracoSettings:settings); + var routingContext = GetRoutingContext("http://domain1.com/en/test", 1111, umbracoSettings: settings); SettingsForTests.UseDirectoryUrls = true; SettingsForTests.HideTopLevelNodeFromPath = false; - SetDomains5(); + SetDomains5(); - var url = routingContext.UrlProvider.GetUrl(100111, true); + var url = routingContext.UrlProvider.GetUrl(100111, true); Assert.AreEqual("http://domain1.com/en/1001-1-1/", url); - var result = routingContext.UrlProvider.GetOtherUrls(100111).ToArray(); - - Assert.AreEqual(2, result.Count()); - Assert.IsTrue(result.Contains("http://domain1a.com/en/1001-1-1/")); - Assert.IsTrue(result.Contains("http://domain1b.com/en/1001-1-1/")); - } - } + var result = routingContext.UrlProvider.GetOtherUrls(100111).ToArray(); + + Assert.AreEqual(2, result.Count()); + Assert.IsTrue(result.Contains("http://domain1a.com/en/1001-1-1/")); + Assert.IsTrue(result.Contains("http://domain1b.com/en/1001-1-1/")); + } + } } diff --git a/src/Umbraco.Tests/Routing/SiteDomainHelperTests.cs b/src/Umbraco.Tests/Routing/SiteDomainHelperTests.cs index 9a046925ef..4abbf43e63 100644 --- a/src/Umbraco.Tests/Routing/SiteDomainHelperTests.cs +++ b/src/Umbraco.Tests/Routing/SiteDomainHelperTests.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using NUnit.Framework; +using Umbraco.Core.Models; using Umbraco.Tests.TestHelpers; using Umbraco.Web.Routing; using umbraco.cms.businesslogic.web; @@ -181,8 +182,8 @@ namespace Umbraco.Tests.Routing var current = new Uri("http://domain1.com/foo/bar"); var output = helper.MapDomain(current, new[] { - new DomainAndUri(new MockDomain("domain1.com"), Uri.UriSchemeHttp), - new DomainAndUri(new MockDomain("domain2.com"), Uri.UriSchemeHttp), + new DomainAndUri(new UmbracoDomain("domain1.com"), Uri.UriSchemeHttp), + new DomainAndUri(new UmbracoDomain("domain2.com"), Uri.UriSchemeHttp), }).Uri.ToString(); Assert.AreEqual("http://domain1.com/", output); @@ -192,8 +193,8 @@ namespace Umbraco.Tests.Routing current = new Uri("http://domain1.com/foo/bar"); output = helper.MapDomain(current, new[] { - new DomainAndUri(new MockDomain("domain1.net"), Uri.UriSchemeHttp), - new DomainAndUri(new MockDomain("domain2.net"), Uri.UriSchemeHttp) + new DomainAndUri(new UmbracoDomain("domain1.net"), Uri.UriSchemeHttp), + new DomainAndUri(new UmbracoDomain("domain2.net"), Uri.UriSchemeHttp) }).Uri.ToString(); Assert.AreEqual("http://domain1.net/", output); @@ -204,8 +205,8 @@ namespace Umbraco.Tests.Routing current = new Uri("http://domain1.com/foo/bar"); output = helper.MapDomain(current, new[] { - new DomainAndUri(new MockDomain("domain2.net"), Uri.UriSchemeHttp), - new DomainAndUri(new MockDomain("domain1.net"), Uri.UriSchemeHttp) + new DomainAndUri(new UmbracoDomain("domain2.net"), Uri.UriSchemeHttp), + new DomainAndUri(new UmbracoDomain("domain1.net"), Uri.UriSchemeHttp) }).Uri.ToString(); Assert.AreEqual("http://domain1.net/", output); } @@ -231,11 +232,11 @@ namespace Umbraco.Tests.Routing var current = new Uri("http://domain1.com/foo/bar"); var output = helper.MapDomains(current, new[] { - new DomainAndUri(new MockDomain("domain1.com"), Uri.UriSchemeHttp), // no: current + what MapDomain would pick - new DomainAndUri(new MockDomain("domain2.com"), Uri.UriSchemeHttp), // no: not same site - new DomainAndUri(new MockDomain("domain3.com"), Uri.UriSchemeHttp), // no: not same site - new DomainAndUri(new MockDomain("domain4.com"), Uri.UriSchemeHttp), // no: not same site - new DomainAndUri(new MockDomain("domain1.org"), Uri.UriSchemeHttp), // yes: same site (though bogus setup) + new DomainAndUri(new UmbracoDomain("domain1.com"), Uri.UriSchemeHttp), // no: current + what MapDomain would pick + new DomainAndUri(new UmbracoDomain("domain2.com"), Uri.UriSchemeHttp), // no: not same site + new DomainAndUri(new UmbracoDomain("domain3.com"), Uri.UriSchemeHttp), // no: not same site + new DomainAndUri(new UmbracoDomain("domain4.com"), Uri.UriSchemeHttp), // no: not same site + new DomainAndUri(new UmbracoDomain("domain1.org"), Uri.UriSchemeHttp), // yes: same site (though bogus setup) }, true).ToArray(); Assert.AreEqual(1, output.Count()); @@ -246,11 +247,11 @@ namespace Umbraco.Tests.Routing current = new Uri("http://domain1.com/foo/bar"); output = helper.MapDomains(current, new[] { - new DomainAndUri(new MockDomain("domain1.net"), Uri.UriSchemeHttp), // no: what MapDomain would pick - new DomainAndUri(new MockDomain("domain2.com"), Uri.UriSchemeHttp), // no: not same site - new DomainAndUri(new MockDomain("domain3.com"), Uri.UriSchemeHttp), // no: not same site - new DomainAndUri(new MockDomain("domain4.com"), Uri.UriSchemeHttp), // no: not same site - new DomainAndUri(new MockDomain("domain1.org"), Uri.UriSchemeHttp), // yes: same site (though bogus setup) + new DomainAndUri(new UmbracoDomain("domain1.net"), Uri.UriSchemeHttp), // no: what MapDomain would pick + new DomainAndUri(new UmbracoDomain("domain2.com"), Uri.UriSchemeHttp), // no: not same site + new DomainAndUri(new UmbracoDomain("domain3.com"), Uri.UriSchemeHttp), // no: not same site + new DomainAndUri(new UmbracoDomain("domain4.com"), Uri.UriSchemeHttp), // no: not same site + new DomainAndUri(new UmbracoDomain("domain1.org"), Uri.UriSchemeHttp), // yes: same site (though bogus setup) }, true).ToArray(); Assert.AreEqual(1, output.Count()); @@ -264,12 +265,12 @@ namespace Umbraco.Tests.Routing current = new Uri("http://domain1.com/foo/bar"); output = helper.MapDomains(current, new[] { - new DomainAndUri(new MockDomain("domain1.com"), Uri.UriSchemeHttp), // no: current + what MapDomain would pick - new DomainAndUri(new MockDomain("domain2.com"), Uri.UriSchemeHttp), // no: not same site - new DomainAndUri(new MockDomain("domain3.com"), Uri.UriSchemeHttp), // yes: bound site - new DomainAndUri(new MockDomain("domain3.org"), Uri.UriSchemeHttp), // yes: bound site - new DomainAndUri(new MockDomain("domain4.com"), Uri.UriSchemeHttp), // no: not same site - new DomainAndUri(new MockDomain("domain1.org"), Uri.UriSchemeHttp), // yes: same site (though bogus setup) + new DomainAndUri(new UmbracoDomain("domain1.com"), Uri.UriSchemeHttp), // no: current + what MapDomain would pick + new DomainAndUri(new UmbracoDomain("domain2.com"), Uri.UriSchemeHttp), // no: not same site + new DomainAndUri(new UmbracoDomain("domain3.com"), Uri.UriSchemeHttp), // yes: bound site + new DomainAndUri(new UmbracoDomain("domain3.org"), Uri.UriSchemeHttp), // yes: bound site + new DomainAndUri(new UmbracoDomain("domain4.com"), Uri.UriSchemeHttp), // no: not same site + new DomainAndUri(new UmbracoDomain("domain1.org"), Uri.UriSchemeHttp), // yes: same site (though bogus setup) }, true).ToArray(); Assert.AreEqual(3, output.Count()); @@ -282,12 +283,12 @@ namespace Umbraco.Tests.Routing current = new Uri("http://domain1.com/foo/bar"); output = helper.MapDomains(current, new[] { - new DomainAndUri(new MockDomain("domain1.net"), Uri.UriSchemeHttp), // no: what MapDomain would pick - new DomainAndUri(new MockDomain("domain2.com"), Uri.UriSchemeHttp), // no: not same site - new DomainAndUri(new MockDomain("domain3.com"), Uri.UriSchemeHttp), // yes: bound site - new DomainAndUri(new MockDomain("domain3.org"), Uri.UriSchemeHttp), // yes: bound site - new DomainAndUri(new MockDomain("domain4.com"), Uri.UriSchemeHttp), // no: not same site - new DomainAndUri(new MockDomain("domain1.org"), Uri.UriSchemeHttp), // yes: same site (though bogus setup) + new DomainAndUri(new UmbracoDomain("domain1.net"), Uri.UriSchemeHttp), // no: what MapDomain would pick + new DomainAndUri(new UmbracoDomain("domain2.com"), Uri.UriSchemeHttp), // no: not same site + new DomainAndUri(new UmbracoDomain("domain3.com"), Uri.UriSchemeHttp), // yes: bound site + new DomainAndUri(new UmbracoDomain("domain3.org"), Uri.UriSchemeHttp), // yes: bound site + new DomainAndUri(new UmbracoDomain("domain4.com"), Uri.UriSchemeHttp), // no: not same site + new DomainAndUri(new UmbracoDomain("domain1.org"), Uri.UriSchemeHttp), // yes: same site (though bogus setup) }, true).ToArray(); Assert.AreEqual(3, output.Count()); @@ -296,14 +297,14 @@ namespace Umbraco.Tests.Routing Assert.Contains("http://domain3.org/", output.Select(d => d.Uri.ToString()).ToArray()); } - class MockDomain : Domain - { - private static readonly FieldInfo NameField = typeof (Domain).GetField("_name", BindingFlags.Instance | BindingFlags.NonPublic); + //class MockDomain : Domain + //{ + // private static readonly FieldInfo NameField = typeof (Domain).GetField("_name", BindingFlags.Instance | BindingFlags.NonPublic); - public MockDomain(string name) - { - NameField.SetValue(this, name); - } - } + // public MockDomain(string name) + // { + // NameField.SetValue(this, name); + // } + //} } } diff --git a/src/Umbraco.Tests/Routing/UrlRoutingTestBase.cs b/src/Umbraco.Tests/Routing/UrlRoutingTestBase.cs index 86e5edc833..089f78ac3e 100644 --- a/src/Umbraco.Tests/Routing/UrlRoutingTestBase.cs +++ b/src/Umbraco.Tests/Routing/UrlRoutingTestBase.cs @@ -40,9 +40,9 @@ namespace Umbraco.Tests.Routing domainService.Setup(service => service.GetAll(It.IsAny())) .Returns((bool incWildcards) => new[] { - new UmbracoDomain{Id = 1,DomainName = "domain1.com/", Language = new Language("de-DE"), RootContent = new Content("test1", -1, new ContentType(-1)){ Id = 1001}}, - new UmbracoDomain{Id = 1,DomainName = "domain1.com/en", Language = new Language("en-US"), RootContent = new Content("test2", -1, new ContentType(-1)){ Id = 10011}}, - new UmbracoDomain{Id = 1,DomainName = "domain1.com/fr", Language = new Language("fr-FR"), RootContent = new Content("test3", -1, new ContentType(-1)){ Id = 10012}} + new UmbracoDomain("domain1.com/"){Id = 1, Language = new Language("de-DE"), RootContent = new Content("test1", -1, new ContentType(-1)){ Id = 1001}}, + new UmbracoDomain("domain1.com/en"){Id = 1, Language = new Language("en-US"), RootContent = new Content("test2", -1, new ContentType(-1)){ Id = 10011}}, + new UmbracoDomain("domain1.com/fr"){Id = 1, Language = new Language("fr-FR"), RootContent = new Content("test3", -1, new ContentType(-1)){ Id = 10012}} }); return svcCtx; } diff --git a/src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs b/src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs index 9cd4474dcb..1378cd3547 100644 --- a/src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs +++ b/src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs @@ -80,8 +80,8 @@ namespace Umbraco.Tests.Routing { SetupDomainServiceMock(new[] { - new UmbracoDomain {Id = 1, DomainName = "http://domain1.com/", Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 1001}}, - new UmbracoDomain {Id = 1, DomainName = "http://domain2.com/", Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10011}} + new UmbracoDomain("http://domain1.com/") {Id = 1, Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 1001}}, + new UmbracoDomain("http://domain2.com/") {Id = 1, Language = new Language("en-US"), RootContent = new Content("test1", -1, new ContentType(-1)) {Id = 10011}} }); } diff --git a/src/Umbraco.Tests/Services/LocalizedTextServiceTests.cs b/src/Umbraco.Tests/Services/LocalizedTextServiceTests.cs index 0bcf7a2dd8..17e58fb408 100644 --- a/src/Umbraco.Tests/Services/LocalizedTextServiceTests.cs +++ b/src/Umbraco.Tests/Services/LocalizedTextServiceTests.cs @@ -41,7 +41,7 @@ namespace Umbraco.Tests.Services }, } } - }); + }, Mock.Of()); var result = txtService.GetAllStoredValues(culture); @@ -130,7 +130,7 @@ namespace Umbraco.Tests.Services } } } - }); + }, Mock.Of()); var result = txtService.Localize("testArea/testKey", culture); @@ -155,7 +155,7 @@ namespace Umbraco.Tests.Services } } } - }); + }, Mock.Of()); var result = txtService.Localize("testKey", culture); @@ -180,7 +180,7 @@ namespace Umbraco.Tests.Services } } } - }); + }, Mock.Of()); var result = txtService.Localize("testArea/doNotFind", culture); @@ -206,7 +206,7 @@ namespace Umbraco.Tests.Services } } } - }); + }, Mock.Of()); var result = txtService.Localize("doNotFind", culture); @@ -231,7 +231,7 @@ namespace Umbraco.Tests.Services } } } - }); + }, Mock.Of()); var result = txtService.Localize("testKey", culture, new Dictionary { { "0", "world" }, { "1", "great" }, { "2", "planet" } }); @@ -359,7 +359,7 @@ namespace Umbraco.Tests.Services } } } - }); + }, Mock.Of()); Assert.AreEqual("[testKey]", txtService.Localize("testArea/testKey", CultureInfo.GetCultureInfo("en-AU"))); } diff --git a/src/Umbraco.Tests/TestHelpers/Stubs/TestControllerFactory.cs b/src/Umbraco.Tests/TestHelpers/Stubs/TestControllerFactory.cs index 723f621356..91ca2b1e0f 100644 --- a/src/Umbraco.Tests/TestHelpers/Stubs/TestControllerFactory.cs +++ b/src/Umbraco.Tests/TestHelpers/Stubs/TestControllerFactory.cs @@ -1,9 +1,11 @@ using System; +using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Web.Mvc; using System.Web.Routing; using System.Web.SessionState; +using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Logging; using Umbraco.Web; @@ -34,20 +36,26 @@ namespace Umbraco.Tests.TestHelpers.Stubs if (t == null) return null; + var possibleParams = new object[] + { + _umbracoContext, _logger + }; var ctors = t.GetConstructors(); - if (ctors.Any(x => + foreach (var ctor in ctors.OrderByDescending(x => x.GetParameters().Count())) { - var parameters = x.GetParameters(); - if (parameters.Length != 2) return false; - return parameters.First().ParameterType == typeof (ILogger) && parameters.Last().ParameterType == typeof (UmbracoContext); - })) - { - return Activator.CreateInstance(t, new object[]{_logger, _umbracoContext}) as IController; - } - else - { - return Activator.CreateInstance(t) as IController; + var args = new List(); + var allParams = ctor.GetParameters().ToArray(); + foreach (var parameter in allParams) + { + var found = possibleParams.SingleOrDefault(x => x.GetType() == parameter.ParameterType); + if (found != null) args.Add(found); + } + if (args.Count == allParams.Length) + { + return Activator.CreateInstance(t, args.ToArray()) as IController; + } } + return null; } public System.Web.SessionState.SessionStateBehavior GetControllerSessionBehavior(RequestContext requestContext, string controllerName) diff --git a/src/Umbraco.Web/WebServices/DomainsApiController.cs b/src/Umbraco.Web/WebServices/DomainsApiController.cs index f6c55309c0..a72f7537b0 100644 --- a/src/Umbraco.Web/WebServices/DomainsApiController.cs +++ b/src/Umbraco.Web/WebServices/DomainsApiController.cs @@ -58,9 +58,8 @@ namespace Umbraco.Web.WebServices else { // yet there is a race condition here... - var newDomain = new UmbracoDomain + var newDomain = new UmbracoDomain("*" + model.NodeId) { - DomainName = "*" + model.NodeId, Language = Services.LocalizationService.GetLanguageById(model.Language), RootContent = Services.ContentService.GetById(model.NodeId) }; @@ -110,9 +109,8 @@ namespace Umbraco.Web.WebServices else { // yet there is a race condition here... - var newDomain = new UmbracoDomain + var newDomain = new UmbracoDomain(name) { - DomainName = name, Language = Services.LocalizationService.GetLanguageById(domainModel.Lang), RootContent = Services.ContentService.GetById(model.NodeId) }; diff --git a/src/umbraco.cms/businesslogic/web/Domain.cs b/src/umbraco.cms/businesslogic/web/Domain.cs index 3c1f8381bc..370d75b4db 100644 --- a/src/umbraco.cms/businesslogic/web/Domain.cs +++ b/src/umbraco.cms/businesslogic/web/Domain.cs @@ -164,9 +164,8 @@ namespace umbraco.cms.businesslogic.web var lang = ApplicationContext.Current.Services.LocalizationService.GetLanguageById(LanguageId); if (lang == null) throw new NullReferenceException("No language exists with id " + LanguageId); - var domain = new UmbracoDomain + var domain = new UmbracoDomain(DomainName) { - DomainName = DomainName, RootContent = content, Language = lang };