Fixes up remaining routing tests, all tests passing (apart from arbitrary plugin mgr ones)

This commit is contained in:
Shannon
2015-01-22 15:42:29 +11:00
parent 2f86813a21
commit b892f98834
14 changed files with 292 additions and 283 deletions

View File

@@ -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;

View File

@@ -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
};

View File

@@ -46,10 +46,13 @@ namespace Umbraco.Core.Services
/// Initializes with a source of a dictionary of culture -> areas -> sub dictionary of keys/values
/// </summary>
/// <param name="source"></param>
public LocalizedTextService(IDictionary<CultureInfo, IDictionary<string, IDictionary<string, string>>> source)
/// <param name="logger"></param>
public LocalizedTextService(IDictionary<CultureInfo, IDictionary<string, IDictionary<string, string>>> 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<string, string> tokens = null)

View File

@@ -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<DuplicateNameException>(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<int>();
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();

View File

@@ -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");

View File

@@ -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}}
});
}

View File

@@ -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 @"<?xml version=""1.0"" encoding=""utf-8""?>
protected override string GetXmlContent(int templateId)
{
return @"<?xml version=""1.0"" encoding=""utf-8""?>
<!DOCTYPE root[
<!ELEMENT Doc ANY>
<!ATTLIST Doc id ID #REQUIRED>
@@ -157,233 +157,233 @@ namespace Umbraco.Tests.Routing
</Doc>
</Doc>
</root>";
}
}
// 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<int, string> routes, IDictionary<string, int> 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<int, string> routes, IDictionary<string, int> 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/"));
}
}
}

View File

@@ -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);
// }
//}
}
}

View File

@@ -40,9 +40,9 @@ namespace Umbraco.Tests.Routing
domainService.Setup(service => service.GetAll(It.IsAny<bool>()))
.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;
}

View File

@@ -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}}
});
}

View File

@@ -41,7 +41,7 @@ namespace Umbraco.Tests.Services
},
}
}
});
}, Mock.Of<ILogger>());
var result = txtService.GetAllStoredValues(culture);
@@ -130,7 +130,7 @@ namespace Umbraco.Tests.Services
}
}
}
});
}, Mock.Of<ILogger>());
var result = txtService.Localize("testArea/testKey", culture);
@@ -155,7 +155,7 @@ namespace Umbraco.Tests.Services
}
}
}
});
}, Mock.Of<ILogger>());
var result = txtService.Localize("testKey", culture);
@@ -180,7 +180,7 @@ namespace Umbraco.Tests.Services
}
}
}
});
}, Mock.Of<ILogger>());
var result = txtService.Localize("testArea/doNotFind", culture);
@@ -206,7 +206,7 @@ namespace Umbraco.Tests.Services
}
}
}
});
}, Mock.Of<ILogger>());
var result = txtService.Localize("doNotFind", culture);
@@ -231,7 +231,7 @@ namespace Umbraco.Tests.Services
}
}
}
});
}, Mock.Of<ILogger>());
var result = txtService.Localize("testKey", culture,
new Dictionary<string, string> { { "0", "world" }, { "1", "great" }, { "2", "planet" } });
@@ -359,7 +359,7 @@ namespace Umbraco.Tests.Services
}
}
}
});
}, Mock.Of<ILogger>());
Assert.AreEqual("[testKey]", txtService.Localize("testArea/testKey", CultureInfo.GetCultureInfo("en-AU")));
}

View File

@@ -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<object>();
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)

View File

@@ -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)
};

View File

@@ -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
};