Removes NiceUrl methods, renames NiceUrl test cases
This commit is contained in:
@@ -1,52 +1,52 @@
|
||||
using Moq;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using LightInject;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
using Umbraco.Web.Routing;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Tests.Testing;
|
||||
using Current = Umbraco.Web.Composing.Current;
|
||||
using LightInject;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
using Umbraco.Web.Routing;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Tests.Testing;
|
||||
using Current = Umbraco.Web.Composing.Current;
|
||||
using Umbraco.Core.Configuration.UmbracoSettings;
|
||||
|
||||
namespace Umbraco.Tests.Routing
|
||||
{
|
||||
[TestFixture]
|
||||
[UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerFixture)]
|
||||
public class ContentFinderByNiceUrlAndTemplateTests : BaseWebTest
|
||||
{
|
||||
Template CreateTemplate(string alias)
|
||||
{
|
||||
var template = new Template(alias, alias);
|
||||
template.Content = ""; // else saving throws with a dirty internal error
|
||||
Current.Services.FileService.SaveTemplate(template);
|
||||
return template;
|
||||
}
|
||||
|
||||
[TestCase("/blah")]
|
||||
[TestCase("/default.aspx/blah")] //this one is actually rather important since this is the path that comes through when we are running in pre-IIS 7 for the root document '/' !
|
||||
[TestCase("/home/Sub1/blah")]
|
||||
[TestCase("/Home/Sub1/Blah")] //different cases
|
||||
[TestCase("/home/Sub1.aspx/blah")]
|
||||
public void Match_Document_By_Url_With_Template(string urlAsString)
|
||||
{
|
||||
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false);
|
||||
namespace Umbraco.Tests.Routing
|
||||
{
|
||||
[TestFixture]
|
||||
[UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerFixture)]
|
||||
public class ContentFinderByUrlAndTemplateTests : BaseWebTest
|
||||
{
|
||||
Template CreateTemplate(string alias)
|
||||
{
|
||||
var template = new Template(alias, alias);
|
||||
template.Content = ""; // else saving throws with a dirty internal error
|
||||
Current.Services.FileService.SaveTemplate(template);
|
||||
return template;
|
||||
}
|
||||
|
||||
[TestCase("/blah")]
|
||||
[TestCase("/default.aspx/blah")] //this one is actually rather important since this is the path that comes through when we are running in pre-IIS 7 for the root document '/' !
|
||||
[TestCase("/home/Sub1/blah")]
|
||||
[TestCase("/Home/Sub1/Blah")] //different cases
|
||||
[TestCase("/home/Sub1.aspx/blah")]
|
||||
public void Match_Document_By_Url_With_Template(string urlAsString)
|
||||
{
|
||||
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false);
|
||||
SettingsForTests.ConfigureSettings(globalSettings.Object);
|
||||
|
||||
var template1 = CreateTemplate("test");
|
||||
var template2 = CreateTemplate("blah");
|
||||
var umbracoContext = GetUmbracoContext(urlAsString, template1.Id, globalSettings:globalSettings.Object);
|
||||
var publishedRouter = CreatePublishedRouter();
|
||||
var frequest = publishedRouter.CreateRequest(umbracoContext);
|
||||
var lookup = new ContentFinderByUrlAndTemplate(Logger, ServiceContext.FileService);
|
||||
|
||||
var result = lookup.TryFindContent(frequest);
|
||||
|
||||
Assert.IsTrue(result);
|
||||
Assert.IsNotNull(frequest.PublishedContent);
|
||||
Assert.IsNotNull(frequest.TemplateAlias);
|
||||
Assert.AreEqual("blah".ToUpperInvariant(), frequest.TemplateAlias.ToUpperInvariant());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var template1 = CreateTemplate("test");
|
||||
var template2 = CreateTemplate("blah");
|
||||
var umbracoContext = GetUmbracoContext(urlAsString, template1.Id, globalSettings:globalSettings.Object);
|
||||
var publishedRouter = CreatePublishedRouter();
|
||||
var frequest = publishedRouter.CreateRequest(umbracoContext);
|
||||
var lookup = new ContentFinderByUrlAndTemplate(Logger, ServiceContext.FileService);
|
||||
|
||||
var result = lookup.TryFindContent(frequest);
|
||||
|
||||
Assert.IsTrue(result);
|
||||
Assert.IsNotNull(frequest.PublishedContent);
|
||||
Assert.IsNotNull(frequest.TemplateAlias);
|
||||
Assert.AreEqual("blah".ToUpperInvariant(), frequest.TemplateAlias.ToUpperInvariant());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,166 +1,166 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core.Configuration;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
using Umbraco.Tests.Testing;
|
||||
using Umbraco.Web.Routing;
|
||||
|
||||
namespace Umbraco.Tests.Routing
|
||||
{
|
||||
[TestFixture]
|
||||
[UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest)]
|
||||
public class ContentFinderByNiceUrlTests : BaseWebTest
|
||||
{
|
||||
[TestCase("/", 1046)]
|
||||
[TestCase("/default.aspx", 1046)] //this one is actually rather important since this is the path that comes through when we are running in pre-IIS 7 for the root document '/' !
|
||||
[TestCase("/Sub1", 1173)]
|
||||
[TestCase("/sub1", 1173)]
|
||||
[TestCase("/sub1.aspx", 1173)]
|
||||
[TestCase("/home/sub1", -1)] // should fail
|
||||
|
||||
// these two are special. getNiceUrl(1046) returns "/" but getNiceUrl(1172) cannot also return "/" so
|
||||
// we've made it return "/test-page" => we have to support that url back in the lookup...
|
||||
[TestCase("/home", 1046)]
|
||||
[TestCase("/test-page", 1172)]
|
||||
public void Match_Document_By_Url_Hide_Top_Level(string urlString, int expectedId)
|
||||
{
|
||||
var globalSettingsMock = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettingsMock.Setup(x => x.HideTopLevelNodeFromPath).Returns(true);
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core.Configuration;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
using Umbraco.Tests.Testing;
|
||||
using Umbraco.Web.Routing;
|
||||
|
||||
namespace Umbraco.Tests.Routing
|
||||
{
|
||||
[TestFixture]
|
||||
[UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest)]
|
||||
public class ContentFinderByUrlTests : BaseWebTest
|
||||
{
|
||||
[TestCase("/", 1046)]
|
||||
[TestCase("/default.aspx", 1046)] //this one is actually rather important since this is the path that comes through when we are running in pre-IIS 7 for the root document '/' !
|
||||
[TestCase("/Sub1", 1173)]
|
||||
[TestCase("/sub1", 1173)]
|
||||
[TestCase("/sub1.aspx", 1173)]
|
||||
[TestCase("/home/sub1", -1)] // should fail
|
||||
|
||||
// these two are special. getNiceUrl(1046) returns "/" but getNiceUrl(1172) cannot also return "/" so
|
||||
// we've made it return "/test-page" => we have to support that url back in the lookup...
|
||||
[TestCase("/home", 1046)]
|
||||
[TestCase("/test-page", 1172)]
|
||||
public void Match_Document_By_Url_Hide_Top_Level(string urlString, int expectedId)
|
||||
{
|
||||
var globalSettingsMock = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettingsMock.Setup(x => x.HideTopLevelNodeFromPath).Returns(true);
|
||||
SettingsForTests.ConfigureSettings(globalSettingsMock.Object);
|
||||
|
||||
var umbracoContext = GetUmbracoContext(urlString, globalSettings:globalSettingsMock.Object);
|
||||
var publishedRouter = CreatePublishedRouter();
|
||||
var frequest = publishedRouter.CreateRequest(umbracoContext);
|
||||
var lookup = new ContentFinderByUrl(Logger);
|
||||
|
||||
Assert.IsTrue(UmbracoConfig.For.GlobalSettings().HideTopLevelNodeFromPath);
|
||||
|
||||
// fixme debugging - going further down, the routes cache is NOT empty?!
|
||||
if (urlString == "/home/sub1")
|
||||
System.Diagnostics.Debugger.Break();
|
||||
|
||||
var result = lookup.TryFindContent(frequest);
|
||||
|
||||
if (expectedId > 0)
|
||||
{
|
||||
Assert.IsTrue(result);
|
||||
Assert.AreEqual(expectedId, frequest.PublishedContent.Id);
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.IsFalse(result);
|
||||
}
|
||||
}
|
||||
|
||||
[TestCase("/", 1046)]
|
||||
[TestCase("/default.aspx", 1046)] //this one is actually rather important since this is the path that comes through when we are running in pre-IIS 7 for the root document '/' !
|
||||
[TestCase("/home", 1046)]
|
||||
[TestCase("/home/Sub1", 1173)]
|
||||
[TestCase("/Home/Sub1", 1173)] //different cases
|
||||
[TestCase("/home/Sub1.aspx", 1173)]
|
||||
public void Match_Document_By_Url(string urlString, int expectedId)
|
||||
{
|
||||
var globalSettingsMock = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettingsMock.Setup(x => x.HideTopLevelNodeFromPath).Returns(false);
|
||||
|
||||
var umbracoContext = GetUmbracoContext(urlString, globalSettings:globalSettingsMock.Object);
|
||||
var publishedRouter = CreatePublishedRouter();
|
||||
var frequest = publishedRouter.CreateRequest(umbracoContext);
|
||||
var lookup = new ContentFinderByUrl(Logger);
|
||||
|
||||
Assert.IsTrue(UmbracoConfig.For.GlobalSettings().HideTopLevelNodeFromPath);
|
||||
|
||||
// fixme debugging - going further down, the routes cache is NOT empty?!
|
||||
if (urlString == "/home/sub1")
|
||||
System.Diagnostics.Debugger.Break();
|
||||
|
||||
var result = lookup.TryFindContent(frequest);
|
||||
|
||||
if (expectedId > 0)
|
||||
{
|
||||
Assert.IsTrue(result);
|
||||
Assert.AreEqual(expectedId, frequest.PublishedContent.Id);
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.IsFalse(result);
|
||||
}
|
||||
}
|
||||
|
||||
[TestCase("/", 1046)]
|
||||
[TestCase("/default.aspx", 1046)] //this one is actually rather important since this is the path that comes through when we are running in pre-IIS 7 for the root document '/' !
|
||||
[TestCase("/home", 1046)]
|
||||
[TestCase("/home/Sub1", 1173)]
|
||||
[TestCase("/Home/Sub1", 1173)] //different cases
|
||||
[TestCase("/home/Sub1.aspx", 1173)]
|
||||
public void Match_Document_By_Url(string urlString, int expectedId)
|
||||
{
|
||||
var globalSettingsMock = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettingsMock.Setup(x => x.HideTopLevelNodeFromPath).Returns(false);
|
||||
SettingsForTests.ConfigureSettings(globalSettingsMock.Object);
|
||||
|
||||
var umbracoContext = GetUmbracoContext(urlString, globalSettings:globalSettingsMock.Object);
|
||||
var publishedRouter = CreatePublishedRouter();
|
||||
var frequest = publishedRouter.CreateRequest(umbracoContext);
|
||||
var lookup = new ContentFinderByUrl(Logger);
|
||||
|
||||
Assert.IsFalse(UmbracoConfig.For.GlobalSettings().HideTopLevelNodeFromPath);
|
||||
|
||||
var result = lookup.TryFindContent(frequest);
|
||||
|
||||
Assert.IsTrue(result);
|
||||
Assert.AreEqual(expectedId, frequest.PublishedContent.Id);
|
||||
}
|
||||
/// <summary>
|
||||
/// This test handles requests with special characters in the URL.
|
||||
/// </summary>
|
||||
/// <param name="urlString"></param>
|
||||
/// <param name="expectedId"></param>
|
||||
[TestCase("/", 1046)]
|
||||
[TestCase("/home/sub1/custom-sub-3-with-accént-character", 1179)]
|
||||
[TestCase("/home/sub1/custom-sub-4-with-æøå", 1180)]
|
||||
public void Match_Document_By_Url_With_Special_Characters(string urlString, int expectedId)
|
||||
{
|
||||
var globalSettingsMock = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettingsMock.Setup(x => x.HideTopLevelNodeFromPath).Returns(false);
|
||||
var umbracoContext = GetUmbracoContext(urlString, globalSettings:globalSettingsMock.Object);
|
||||
var publishedRouter = CreatePublishedRouter();
|
||||
var frequest = publishedRouter.CreateRequest(umbracoContext);
|
||||
var lookup = new ContentFinderByUrl(Logger);
|
||||
|
||||
Assert.IsFalse(UmbracoConfig.For.GlobalSettings().HideTopLevelNodeFromPath);
|
||||
|
||||
var result = lookup.TryFindContent(frequest);
|
||||
|
||||
Assert.IsTrue(result);
|
||||
Assert.AreEqual(expectedId, frequest.PublishedContent.Id);
|
||||
}
|
||||
/// <summary>
|
||||
/// This test handles requests with special characters in the URL.
|
||||
/// </summary>
|
||||
/// <param name="urlString"></param>
|
||||
/// <param name="expectedId"></param>
|
||||
[TestCase("/", 1046)]
|
||||
[TestCase("/home/sub1/custom-sub-3-with-accént-character", 1179)]
|
||||
[TestCase("/home/sub1/custom-sub-4-with-æøå", 1180)]
|
||||
public void Match_Document_By_Url_With_Special_Characters(string urlString, int expectedId)
|
||||
{
|
||||
var globalSettingsMock = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettingsMock.Setup(x => x.HideTopLevelNodeFromPath).Returns(false);
|
||||
SettingsForTests.ConfigureSettings(globalSettingsMock.Object);
|
||||
|
||||
var umbracoContext = GetUmbracoContext(urlString, globalSettings:globalSettingsMock.Object);
|
||||
var publishedRouter = CreatePublishedRouter();
|
||||
var frequest = publishedRouter.CreateRequest(umbracoContext);
|
||||
var lookup = new ContentFinderByUrl(Logger);
|
||||
|
||||
var result = lookup.TryFindContent(frequest);
|
||||
|
||||
Assert.IsTrue(result);
|
||||
Assert.AreEqual(expectedId, frequest.PublishedContent.Id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This test handles requests with a hostname associated.
|
||||
/// The logic for handling this goes through the DomainHelper and is a bit different
|
||||
/// from what happens in a normal request - so it has a separate test with a mocked
|
||||
/// hostname added.
|
||||
/// </summary>
|
||||
/// <param name="urlString"></param>
|
||||
/// <param name="expectedId"></param>
|
||||
[TestCase("/", 1046)]
|
||||
[TestCase("/home/sub1/custom-sub-3-with-accént-character", 1179)]
|
||||
[TestCase("/home/sub1/custom-sub-4-with-æøå", 1180)]
|
||||
public void Match_Document_By_Url_With_Special_Characters_Using_Hostname(string urlString, int expectedId)
|
||||
{
|
||||
var globalSettingsMock = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettingsMock.Setup(x => x.HideTopLevelNodeFromPath).Returns(false);
|
||||
var umbracoContext = GetUmbracoContext(urlString, globalSettings:globalSettingsMock.Object);
|
||||
var publishedRouter = CreatePublishedRouter();
|
||||
var frequest = publishedRouter.CreateRequest(umbracoContext);
|
||||
var lookup = new ContentFinderByUrl(Logger);
|
||||
|
||||
var result = lookup.TryFindContent(frequest);
|
||||
|
||||
Assert.IsTrue(result);
|
||||
Assert.AreEqual(expectedId, frequest.PublishedContent.Id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This test handles requests with a hostname associated.
|
||||
/// The logic for handling this goes through the DomainHelper and is a bit different
|
||||
/// from what happens in a normal request - so it has a separate test with a mocked
|
||||
/// hostname added.
|
||||
/// </summary>
|
||||
/// <param name="urlString"></param>
|
||||
/// <param name="expectedId"></param>
|
||||
[TestCase("/", 1046)]
|
||||
[TestCase("/home/sub1/custom-sub-3-with-accént-character", 1179)]
|
||||
[TestCase("/home/sub1/custom-sub-4-with-æøå", 1180)]
|
||||
public void Match_Document_By_Url_With_Special_Characters_Using_Hostname(string urlString, int expectedId)
|
||||
{
|
||||
var globalSettingsMock = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettingsMock.Setup(x => x.HideTopLevelNodeFromPath).Returns(false);
|
||||
SettingsForTests.ConfigureSettings(globalSettingsMock.Object);
|
||||
|
||||
var umbracoContext = GetUmbracoContext(urlString, globalSettings:globalSettingsMock.Object);
|
||||
var publishedRouter = CreatePublishedRouter();
|
||||
var frequest = publishedRouter.CreateRequest(umbracoContext);
|
||||
frequest.Domain = new DomainAndUri(new Domain(1, "mysite", -1, CultureInfo.CurrentCulture, false, true), new Uri("http://mysite/"));
|
||||
var lookup = new ContentFinderByUrl(Logger);
|
||||
|
||||
var result = lookup.TryFindContent(frequest);
|
||||
|
||||
Assert.IsTrue(result);
|
||||
Assert.AreEqual(expectedId, frequest.PublishedContent.Id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This test handles requests with a hostname with special characters associated.
|
||||
/// The logic for handling this goes through the DomainHelper and is a bit different
|
||||
/// from what happens in a normal request - so it has a separate test with a mocked
|
||||
/// hostname added.
|
||||
/// </summary>
|
||||
/// <param name="urlString"></param>
|
||||
/// <param name="expectedId"></param>
|
||||
[TestCase("/æøå/", 1046)]
|
||||
[TestCase("/æøå/home/sub1", 1173)]
|
||||
[TestCase("/æøå/home/sub1/custom-sub-3-with-accént-character", 1179)]
|
||||
[TestCase("/æøå/home/sub1/custom-sub-4-with-æøå", 1180)]
|
||||
public void Match_Document_By_Url_With_Special_Characters_In_Hostname(string urlString, int expectedId)
|
||||
{
|
||||
var globalSettingsMock = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettingsMock.Setup(x => x.HideTopLevelNodeFromPath).Returns(false);
|
||||
var umbracoContext = GetUmbracoContext(urlString, globalSettings:globalSettingsMock.Object);
|
||||
var publishedRouter = CreatePublishedRouter();
|
||||
var frequest = publishedRouter.CreateRequest(umbracoContext);
|
||||
frequest.Domain = new DomainAndUri(new Domain(1, "mysite", -1, CultureInfo.CurrentCulture, false, true), new Uri("http://mysite/"));
|
||||
var lookup = new ContentFinderByUrl(Logger);
|
||||
|
||||
var result = lookup.TryFindContent(frequest);
|
||||
|
||||
Assert.IsTrue(result);
|
||||
Assert.AreEqual(expectedId, frequest.PublishedContent.Id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This test handles requests with a hostname with special characters associated.
|
||||
/// The logic for handling this goes through the DomainHelper and is a bit different
|
||||
/// from what happens in a normal request - so it has a separate test with a mocked
|
||||
/// hostname added.
|
||||
/// </summary>
|
||||
/// <param name="urlString"></param>
|
||||
/// <param name="expectedId"></param>
|
||||
[TestCase("/æøå/", 1046)]
|
||||
[TestCase("/æøå/home/sub1", 1173)]
|
||||
[TestCase("/æøå/home/sub1/custom-sub-3-with-accént-character", 1179)]
|
||||
[TestCase("/æøå/home/sub1/custom-sub-4-with-æøå", 1180)]
|
||||
public void Match_Document_By_Url_With_Special_Characters_In_Hostname(string urlString, int expectedId)
|
||||
{
|
||||
var globalSettingsMock = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettingsMock.Setup(x => x.HideTopLevelNodeFromPath).Returns(false);
|
||||
SettingsForTests.ConfigureSettings(globalSettingsMock.Object);
|
||||
|
||||
var umbracoContext = GetUmbracoContext(urlString, globalSettings:globalSettingsMock.Object);
|
||||
var publishedRouter = CreatePublishedRouter();
|
||||
var frequest = publishedRouter.CreateRequest(umbracoContext);
|
||||
frequest.Domain = new DomainAndUri(new Domain(1, "mysite/æøå", -1, CultureInfo.CurrentCulture, false, true), new Uri("http://mysite/æøå"));
|
||||
var lookup = new ContentFinderByUrl(Logger);
|
||||
|
||||
var result = lookup.TryFindContent(frequest);
|
||||
|
||||
Assert.IsTrue(result);
|
||||
Assert.AreEqual(expectedId, frequest.PublishedContent.Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
var umbracoContext = GetUmbracoContext(urlString, globalSettings:globalSettingsMock.Object);
|
||||
var publishedRouter = CreatePublishedRouter();
|
||||
var frequest = publishedRouter.CreateRequest(umbracoContext);
|
||||
frequest.Domain = new DomainAndUri(new Domain(1, "mysite/æøå", -1, CultureInfo.CurrentCulture, false, true), new Uri("http://mysite/æøå"));
|
||||
var lookup = new ContentFinderByUrl(Logger);
|
||||
|
||||
var result = lookup.TryFindContent(frequest);
|
||||
|
||||
Assert.IsTrue(result);
|
||||
Assert.AreEqual(expectedId, frequest.PublishedContent.Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,188 +1,188 @@
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
using Umbraco.Web.Routing;
|
||||
|
||||
namespace Umbraco.Tests.Routing
|
||||
{
|
||||
|
||||
[TestFixture]
|
||||
public class ContentFinderByNiceUrlWithDomainsTests : UrlRoutingTestBase
|
||||
{
|
||||
void SetDomains3()
|
||||
{
|
||||
SetupDomainServiceMock(new[]
|
||||
{
|
||||
new UmbracoDomain("domain1.com/") {Id = 1, LanguageId = LangDeId, RootContentId = 1001, LanguageIsoCode = "de-DE"}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
void SetDomains4()
|
||||
{
|
||||
SetupDomainServiceMock(new[]
|
||||
{
|
||||
new UmbracoDomain("domain1.com/") {Id = 1, LanguageId = LangEngId, RootContentId = 1001, LanguageIsoCode = "en-US"},
|
||||
new UmbracoDomain("domain1.com/en") {Id = 1, LanguageId = LangEngId, RootContentId = 10011, LanguageIsoCode = "en-US"},
|
||||
new UmbracoDomain("domain1.com/fr") {Id = 1, LanguageId = LangFrId, RootContentId = 10012, LanguageIsoCode = "fr-FR"},
|
||||
new UmbracoDomain("http://domain3.com/") {Id = 1, LanguageId = LangEngId, RootContentId = 1003, LanguageIsoCode = "en-US"},
|
||||
new UmbracoDomain("http://domain3.com/en") {Id = 1, LanguageId = LangEngId, RootContentId = 10031, LanguageIsoCode = "en-US"},
|
||||
new UmbracoDomain("http://domain3.com/fr") {Id = 1, LanguageId = LangFrId, RootContentId = 10032, LanguageIsoCode = "fr-FR"}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
protected override string GetXmlContent(int templateId)
|
||||
{
|
||||
return @"<?xml version=""1.0"" encoding=""utf-8""?>
|
||||
<!DOCTYPE root[
|
||||
<!ELEMENT Doc ANY>
|
||||
<!ATTLIST Doc id ID #REQUIRED>
|
||||
]>
|
||||
<root id=""-1"">
|
||||
<Doc id=""1001"" parentID=""-1"" level=""1"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""0"" createDate=""2012-06-12T14:13:17"" updateDate=""2012-07-20T18:50:43"" nodeName=""Home"" urlName=""1001"" writerName=""admin"" creatorName=""admin"" path=""-1,1001"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
<Doc id=""10011"" parentID=""1001"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""0"" createDate=""2012-07-20T18:06:45"" updateDate=""2012-07-20T19:07:31"" nodeName=""Sub1"" urlName=""1001-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10011"" isDoc="""">
|
||||
<content><![CDATA[<div>This is some content</div>]]></content>
|
||||
<Doc id=""100111"" parentID=""10011"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""0"" createDate=""2012-07-20T18:07:54"" updateDate=""2012-07-20T19:10:27"" nodeName=""Sub2"" urlName=""1001-1-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10011,100111"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""100112"" parentID=""10011"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1001-1-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10011,100112"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
<Doc id=""1001121"" parentID=""100112"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1001-1-2-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10011,100112,1001121"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""1001122"" parentID=""100112"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1001-1-2-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10011,100112,1001122"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
</Doc>
|
||||
</Doc>
|
||||
<Doc id=""10012"" parentID=""1001"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:01"" updateDate=""2012-07-20T18:49:32"" nodeName=""Sub 2"" urlName=""1001-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10012"" isDoc="""">
|
||||
<content><![CDATA[<div>This is some content</div>]]></content>
|
||||
<Doc id=""100121"" parentID=""10012"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""0"" createDate=""2012-07-20T18:07:54"" updateDate=""2012-07-20T19:10:27"" nodeName=""Sub2"" urlName=""1001-2-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10012,100121"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""100122"" parentID=""10012"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1001-2-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10012,100122"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
<Doc id=""1001221"" parentID=""100122"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1001-2-2-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10012,100122,1001221"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""1001222"" parentID=""100122"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1001-2-2-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10012,100122,1001222"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
</Doc>
|
||||
</Doc>
|
||||
<Doc id=""10013"" parentID=""1001"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:01"" updateDate=""2012-07-20T18:49:32"" nodeName=""Sub 2"" urlName=""1001-3"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10013"" isDoc="""">
|
||||
</Doc>
|
||||
</Doc>
|
||||
<Doc id=""1002"" parentID=""-1"" level=""1"" writerID=""0"" creatorID=""0"" nodeType=""1234"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-16T15:26:59"" updateDate=""2012-07-18T14:23:35"" nodeName=""Test"" urlName=""1002"" writerName=""admin"" creatorName=""admin"" path=""-1,1002"" isDoc="""">
|
||||
</Doc>
|
||||
<Doc id=""1003"" parentID=""-1"" level=""1"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""0"" createDate=""2012-06-12T14:13:17"" updateDate=""2012-07-20T18:50:43"" nodeName=""Home"" urlName=""1003"" writerName=""admin"" creatorName=""admin"" path=""-1,1003"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
<Doc id=""10031"" parentID=""1003"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""0"" createDate=""2012-07-20T18:06:45"" updateDate=""2012-07-20T19:07:31"" nodeName=""Sub1"" urlName=""1003-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10031"" isDoc="""">
|
||||
<content><![CDATA[<div>This is some content</div>]]></content>
|
||||
<Doc id=""100311"" parentID=""10031"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""0"" createDate=""2012-07-20T18:07:54"" updateDate=""2012-07-20T19:10:27"" nodeName=""Sub2"" urlName=""1003-1-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10031,100311"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""100312"" parentID=""10031"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1003-1-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10031,100312"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
<Doc id=""1003121"" parentID=""100312"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1003-1-2-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10031,100312,1003121"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""1003122"" parentID=""100312"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1003-1-2-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10031,100312,1003122"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
</Doc>
|
||||
</Doc>
|
||||
<Doc id=""10032"" parentID=""1003"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:01"" updateDate=""2012-07-20T18:49:32"" nodeName=""Sub 2"" urlName=""1003-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10032"" isDoc="""">
|
||||
<content><![CDATA[<div>This is some content</div>]]></content>
|
||||
<Doc id=""100321"" parentID=""10032"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""0"" createDate=""2012-07-20T18:07:54"" updateDate=""2012-07-20T19:10:27"" nodeName=""Sub2"" urlName=""1003-2-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10032,100321"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""100322"" parentID=""10032"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1003-2-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10032,100322"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
<Doc id=""1003221"" parentID=""100322"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""0"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1003-2-2-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10032,100322,1003221"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""1003222"" parentID=""100322"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1003-2-2-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10032,100322,1003222"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
</Doc>
|
||||
</Doc>
|
||||
<Doc id=""10033"" parentID=""1003"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:01"" updateDate=""2012-07-20T18:49:32"" nodeName=""Sub 2"" urlName=""1003-3"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10033"" isDoc="""">
|
||||
</Doc>
|
||||
</Doc>
|
||||
</root>";
|
||||
}
|
||||
|
||||
[TestCase("http://domain1.com/", 1001)]
|
||||
[TestCase("http://domain1.com/1001-1", 10011)]
|
||||
[TestCase("http://domain1.com/1001-2/1001-2-1", 100121)]
|
||||
|
||||
public void Lookup_SingleDomain(string url, int expectedId)
|
||||
{
|
||||
SetDomains3();
|
||||
|
||||
var globalSettingsMock = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
using Umbraco.Web.Routing;
|
||||
|
||||
namespace Umbraco.Tests.Routing
|
||||
{
|
||||
|
||||
[TestFixture]
|
||||
public class ContentFinderByUrlWithDomainsTests : UrlRoutingTestBase
|
||||
{
|
||||
void SetDomains3()
|
||||
{
|
||||
SetupDomainServiceMock(new[]
|
||||
{
|
||||
new UmbracoDomain("domain1.com/") {Id = 1, LanguageId = LangDeId, RootContentId = 1001, LanguageIsoCode = "de-DE"}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
void SetDomains4()
|
||||
{
|
||||
SetupDomainServiceMock(new[]
|
||||
{
|
||||
new UmbracoDomain("domain1.com/") {Id = 1, LanguageId = LangEngId, RootContentId = 1001, LanguageIsoCode = "en-US"},
|
||||
new UmbracoDomain("domain1.com/en") {Id = 1, LanguageId = LangEngId, RootContentId = 10011, LanguageIsoCode = "en-US"},
|
||||
new UmbracoDomain("domain1.com/fr") {Id = 1, LanguageId = LangFrId, RootContentId = 10012, LanguageIsoCode = "fr-FR"},
|
||||
new UmbracoDomain("http://domain3.com/") {Id = 1, LanguageId = LangEngId, RootContentId = 1003, LanguageIsoCode = "en-US"},
|
||||
new UmbracoDomain("http://domain3.com/en") {Id = 1, LanguageId = LangEngId, RootContentId = 10031, LanguageIsoCode = "en-US"},
|
||||
new UmbracoDomain("http://domain3.com/fr") {Id = 1, LanguageId = LangFrId, RootContentId = 10032, LanguageIsoCode = "fr-FR"}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
protected override string GetXmlContent(int templateId)
|
||||
{
|
||||
return @"<?xml version=""1.0"" encoding=""utf-8""?>
|
||||
<!DOCTYPE root[
|
||||
<!ELEMENT Doc ANY>
|
||||
<!ATTLIST Doc id ID #REQUIRED>
|
||||
]>
|
||||
<root id=""-1"">
|
||||
<Doc id=""1001"" parentID=""-1"" level=""1"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""0"" createDate=""2012-06-12T14:13:17"" updateDate=""2012-07-20T18:50:43"" nodeName=""Home"" urlName=""1001"" writerName=""admin"" creatorName=""admin"" path=""-1,1001"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
<Doc id=""10011"" parentID=""1001"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""0"" createDate=""2012-07-20T18:06:45"" updateDate=""2012-07-20T19:07:31"" nodeName=""Sub1"" urlName=""1001-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10011"" isDoc="""">
|
||||
<content><![CDATA[<div>This is some content</div>]]></content>
|
||||
<Doc id=""100111"" parentID=""10011"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""0"" createDate=""2012-07-20T18:07:54"" updateDate=""2012-07-20T19:10:27"" nodeName=""Sub2"" urlName=""1001-1-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10011,100111"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""100112"" parentID=""10011"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1001-1-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10011,100112"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
<Doc id=""1001121"" parentID=""100112"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1001-1-2-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10011,100112,1001121"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""1001122"" parentID=""100112"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1001-1-2-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10011,100112,1001122"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
</Doc>
|
||||
</Doc>
|
||||
<Doc id=""10012"" parentID=""1001"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:01"" updateDate=""2012-07-20T18:49:32"" nodeName=""Sub 2"" urlName=""1001-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10012"" isDoc="""">
|
||||
<content><![CDATA[<div>This is some content</div>]]></content>
|
||||
<Doc id=""100121"" parentID=""10012"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""0"" createDate=""2012-07-20T18:07:54"" updateDate=""2012-07-20T19:10:27"" nodeName=""Sub2"" urlName=""1001-2-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10012,100121"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""100122"" parentID=""10012"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1001-2-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10012,100122"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
<Doc id=""1001221"" parentID=""100122"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1001-2-2-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10012,100122,1001221"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""1001222"" parentID=""100122"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1001-2-2-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10012,100122,1001222"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
</Doc>
|
||||
</Doc>
|
||||
<Doc id=""10013"" parentID=""1001"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:01"" updateDate=""2012-07-20T18:49:32"" nodeName=""Sub 2"" urlName=""1001-3"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10013"" isDoc="""">
|
||||
</Doc>
|
||||
</Doc>
|
||||
<Doc id=""1002"" parentID=""-1"" level=""1"" writerID=""0"" creatorID=""0"" nodeType=""1234"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-16T15:26:59"" updateDate=""2012-07-18T14:23:35"" nodeName=""Test"" urlName=""1002"" writerName=""admin"" creatorName=""admin"" path=""-1,1002"" isDoc="""">
|
||||
</Doc>
|
||||
<Doc id=""1003"" parentID=""-1"" level=""1"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""0"" createDate=""2012-06-12T14:13:17"" updateDate=""2012-07-20T18:50:43"" nodeName=""Home"" urlName=""1003"" writerName=""admin"" creatorName=""admin"" path=""-1,1003"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
<Doc id=""10031"" parentID=""1003"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""0"" createDate=""2012-07-20T18:06:45"" updateDate=""2012-07-20T19:07:31"" nodeName=""Sub1"" urlName=""1003-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10031"" isDoc="""">
|
||||
<content><![CDATA[<div>This is some content</div>]]></content>
|
||||
<Doc id=""100311"" parentID=""10031"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""0"" createDate=""2012-07-20T18:07:54"" updateDate=""2012-07-20T19:10:27"" nodeName=""Sub2"" urlName=""1003-1-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10031,100311"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""100312"" parentID=""10031"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1003-1-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10031,100312"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
<Doc id=""1003121"" parentID=""100312"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1003-1-2-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10031,100312,1003121"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""1003122"" parentID=""100312"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1003-1-2-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10031,100312,1003122"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
</Doc>
|
||||
</Doc>
|
||||
<Doc id=""10032"" parentID=""1003"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:01"" updateDate=""2012-07-20T18:49:32"" nodeName=""Sub 2"" urlName=""1003-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10032"" isDoc="""">
|
||||
<content><![CDATA[<div>This is some content</div>]]></content>
|
||||
<Doc id=""100321"" parentID=""10032"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""0"" createDate=""2012-07-20T18:07:54"" updateDate=""2012-07-20T19:10:27"" nodeName=""Sub2"" urlName=""1003-2-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10032,100321"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""100322"" parentID=""10032"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1003-2-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10032,100322"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
<Doc id=""1003221"" parentID=""100322"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""0"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1003-2-2-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10032,100322,1003221"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""1003222"" parentID=""100322"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1003-2-2-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10032,100322,1003222"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
</Doc>
|
||||
</Doc>
|
||||
<Doc id=""10033"" parentID=""1003"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:01"" updateDate=""2012-07-20T18:49:32"" nodeName=""Sub 2"" urlName=""1003-3"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10033"" isDoc="""">
|
||||
</Doc>
|
||||
</Doc>
|
||||
</root>";
|
||||
}
|
||||
|
||||
[TestCase("http://domain1.com/", 1001)]
|
||||
[TestCase("http://domain1.com/1001-1", 10011)]
|
||||
[TestCase("http://domain1.com/1001-2/1001-2-1", 100121)]
|
||||
|
||||
public void Lookup_SingleDomain(string url, int expectedId)
|
||||
{
|
||||
SetDomains3();
|
||||
|
||||
var globalSettingsMock = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettingsMock.Setup(x => x.HideTopLevelNodeFromPath).Returns(true);
|
||||
SettingsForTests.ConfigureSettings(globalSettingsMock.Object);
|
||||
|
||||
var umbracoContext = GetUmbracoContext(url, globalSettings:globalSettingsMock.Object);
|
||||
var publishedRouter = CreatePublishedRouter(Container);
|
||||
var frequest = publishedRouter.CreateRequest(umbracoContext);
|
||||
|
||||
// must lookup domain else lookup by url fails
|
||||
publishedRouter.FindDomain(frequest);
|
||||
|
||||
var lookup = new ContentFinderByUrl(Logger);
|
||||
var result = lookup.TryFindContent(frequest);
|
||||
Assert.IsTrue(result);
|
||||
Assert.AreEqual(expectedId, frequest.PublishedContent.Id);
|
||||
}
|
||||
|
||||
[TestCase("http://domain1.com/", 1001, "en-US")]
|
||||
[TestCase("http://domain1.com/en", 10011, "en-US")]
|
||||
[TestCase("http://domain1.com/en/1001-1-1", 100111, "en-US")]
|
||||
[TestCase("http://domain1.com/fr", 10012, "fr-FR")]
|
||||
[TestCase("http://domain1.com/fr/1001-2-1", 100121, "fr-FR")]
|
||||
[TestCase("http://domain1.com/1001-3", 10013, "en-US")]
|
||||
|
||||
[TestCase("http://domain2.com/1002", 1002, null)]
|
||||
|
||||
[TestCase("http://domain3.com/", 1003, "en-US")]
|
||||
[TestCase("http://domain3.com/en", 10031, "en-US")]
|
||||
[TestCase("http://domain3.com/en/1003-1-1", 100311, "en-US")]
|
||||
[TestCase("http://domain3.com/fr", 10032, "fr-FR")]
|
||||
[TestCase("http://domain3.com/fr/1003-2-1", 100321, "fr-FR")]
|
||||
[TestCase("http://domain3.com/1003-3", 10033, "en-US")]
|
||||
|
||||
[TestCase("https://domain1.com/", 1001, "en-US")]
|
||||
[TestCase("https://domain3.com/", 1001, null)] // because domain3 is explicitely set on http
|
||||
|
||||
public void Lookup_NestedDomains(string url, int expectedId, string expectedCulture)
|
||||
{
|
||||
SetDomains4();
|
||||
|
||||
// defaults depend on test environment
|
||||
expectedCulture = expectedCulture ?? System.Threading.Thread.CurrentThread.CurrentUICulture.Name;
|
||||
|
||||
var globalSettingsMock = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettingsMock.Setup(x => x.HideTopLevelNodeFromPath).Returns(true);
|
||||
SettingsForTests.ConfigureSettings(globalSettingsMock.Object);
|
||||
|
||||
var umbracoContext = GetUmbracoContext(url, globalSettings:globalSettingsMock.Object);
|
||||
var publishedRouter = CreatePublishedRouter(Container);
|
||||
var frequest = publishedRouter.CreateRequest(umbracoContext);
|
||||
|
||||
// must lookup domain else lookup by url fails
|
||||
publishedRouter.FindDomain(frequest);
|
||||
Assert.AreEqual(expectedCulture, frequest.Culture.Name);
|
||||
|
||||
var lookup = new ContentFinderByUrl(Logger);
|
||||
var result = lookup.TryFindContent(frequest);
|
||||
Assert.IsTrue(result);
|
||||
Assert.AreEqual(expectedId, frequest.PublishedContent.Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
SettingsForTests.ConfigureSettings(globalSettingsMock.Object);
|
||||
|
||||
var umbracoContext = GetUmbracoContext(url, globalSettings:globalSettingsMock.Object);
|
||||
var publishedRouter = CreatePublishedRouter(Container);
|
||||
var frequest = publishedRouter.CreateRequest(umbracoContext);
|
||||
|
||||
// must lookup domain else lookup by url fails
|
||||
publishedRouter.FindDomain(frequest);
|
||||
|
||||
var lookup = new ContentFinderByUrl(Logger);
|
||||
var result = lookup.TryFindContent(frequest);
|
||||
Assert.IsTrue(result);
|
||||
Assert.AreEqual(expectedId, frequest.PublishedContent.Id);
|
||||
}
|
||||
|
||||
[TestCase("http://domain1.com/", 1001, "en-US")]
|
||||
[TestCase("http://domain1.com/en", 10011, "en-US")]
|
||||
[TestCase("http://domain1.com/en/1001-1-1", 100111, "en-US")]
|
||||
[TestCase("http://domain1.com/fr", 10012, "fr-FR")]
|
||||
[TestCase("http://domain1.com/fr/1001-2-1", 100121, "fr-FR")]
|
||||
[TestCase("http://domain1.com/1001-3", 10013, "en-US")]
|
||||
|
||||
[TestCase("http://domain2.com/1002", 1002, null)]
|
||||
|
||||
[TestCase("http://domain3.com/", 1003, "en-US")]
|
||||
[TestCase("http://domain3.com/en", 10031, "en-US")]
|
||||
[TestCase("http://domain3.com/en/1003-1-1", 100311, "en-US")]
|
||||
[TestCase("http://domain3.com/fr", 10032, "fr-FR")]
|
||||
[TestCase("http://domain3.com/fr/1003-2-1", 100321, "fr-FR")]
|
||||
[TestCase("http://domain3.com/1003-3", 10033, "en-US")]
|
||||
|
||||
[TestCase("https://domain1.com/", 1001, "en-US")]
|
||||
[TestCase("https://domain3.com/", 1001, null)] // because domain3 is explicitely set on http
|
||||
|
||||
public void Lookup_NestedDomains(string url, int expectedId, string expectedCulture)
|
||||
{
|
||||
SetDomains4();
|
||||
|
||||
// defaults depend on test environment
|
||||
expectedCulture = expectedCulture ?? System.Threading.Thread.CurrentThread.CurrentUICulture.Name;
|
||||
|
||||
var globalSettingsMock = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettingsMock.Setup(x => x.HideTopLevelNodeFromPath).Returns(true);
|
||||
SettingsForTests.ConfigureSettings(globalSettingsMock.Object);
|
||||
|
||||
var umbracoContext = GetUmbracoContext(url, globalSettings:globalSettingsMock.Object);
|
||||
var publishedRouter = CreatePublishedRouter(Container);
|
||||
var frequest = publishedRouter.CreateRequest(umbracoContext);
|
||||
|
||||
// must lookup domain else lookup by url fails
|
||||
publishedRouter.FindDomain(frequest);
|
||||
Assert.AreEqual(expectedCulture, frequest.Culture.Name);
|
||||
|
||||
var lookup = new ContentFinderByUrl(Logger);
|
||||
var result = lookup.TryFindContent(frequest);
|
||||
Assert.IsTrue(result);
|
||||
Assert.AreEqual(expectedId, frequest.PublishedContent.Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,208 +1,208 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core.Configuration.UmbracoSettings;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
using Umbraco.Tests.Testing;
|
||||
using Umbraco.Web.PublishedCache.XmlPublishedCache;
|
||||
using Umbraco.Web.Routing;
|
||||
|
||||
namespace Umbraco.Tests.Routing
|
||||
{
|
||||
[TestFixture]
|
||||
[UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerFixture)]
|
||||
public class NiceUrlProviderTests : BaseWebTest
|
||||
{
|
||||
protected override void Compose()
|
||||
{
|
||||
base.Compose();
|
||||
Container.Register<ISiteDomainHelper, SiteDomainHelper>();
|
||||
}
|
||||
|
||||
private IUmbracoSettingsSection _umbracoSettings;
|
||||
|
||||
public override void SetUp()
|
||||
{
|
||||
base.SetUp();
|
||||
|
||||
//generate new mock settings and assign so we can configure in individual tests
|
||||
_umbracoSettings = SettingsForTests.GenerateMockUmbracoSettings();
|
||||
SettingsForTests.ConfigureSettings(_umbracoSettings);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This checks that when we retrieve a NiceUrl for multiple items that there are no issues with cache overlap
|
||||
/// and that they are all cached correctly.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void Ensure_Cache_Is_Correct()
|
||||
{
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true);
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false);
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core.Configuration.UmbracoSettings;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
using Umbraco.Tests.Testing;
|
||||
using Umbraco.Web.PublishedCache.XmlPublishedCache;
|
||||
using Umbraco.Web.Routing;
|
||||
|
||||
namespace Umbraco.Tests.Routing
|
||||
{
|
||||
[TestFixture]
|
||||
[UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerFixture)]
|
||||
public class UrlProviderTests : BaseWebTest
|
||||
{
|
||||
protected override void Compose()
|
||||
{
|
||||
base.Compose();
|
||||
Container.Register<ISiteDomainHelper, SiteDomainHelper>();
|
||||
}
|
||||
|
||||
private IUmbracoSettingsSection _umbracoSettings;
|
||||
|
||||
public override void SetUp()
|
||||
{
|
||||
base.SetUp();
|
||||
|
||||
//generate new mock settings and assign so we can configure in individual tests
|
||||
_umbracoSettings = SettingsForTests.GenerateMockUmbracoSettings();
|
||||
SettingsForTests.ConfigureSettings(_umbracoSettings);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This checks that when we retrieve a NiceUrl for multiple items that there are no issues with cache overlap
|
||||
/// and that they are all cached correctly.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void Ensure_Cache_Is_Correct()
|
||||
{
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true);
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false);
|
||||
SettingsForTests.ConfigureSettings(globalSettings.Object);
|
||||
|
||||
var umbracoContext = GetUmbracoContext("/test", 1111, urlProviders: new []
|
||||
{
|
||||
new DefaultUrlProvider(_umbracoSettings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
|
||||
}, globalSettings:globalSettings.Object);
|
||||
|
||||
var requestHandlerMock = Mock.Get(_umbracoSettings.RequestHandler);
|
||||
requestHandlerMock.Setup(x => x.AddTrailingSlash).Returns(false);// (cached routes have none)
|
||||
|
||||
var samples = new Dictionary<int, string> {
|
||||
{ 1046, "/home" },
|
||||
{ 1173, "/home/sub1" },
|
||||
{ 1174, "/home/sub1/sub2" },
|
||||
{ 1176, "/home/sub1/sub-3" },
|
||||
{ 1177, "/home/sub1/custom-sub-1" },
|
||||
{ 1178, "/home/sub1/custom-sub-2" },
|
||||
{ 1175, "/home/sub-2" },
|
||||
{ 1172, "/test-page" }
|
||||
};
|
||||
|
||||
foreach (var sample in samples)
|
||||
{
|
||||
var result = umbracoContext.UrlProvider.GetUrl(sample.Key);
|
||||
Assert.AreEqual(sample.Value, result);
|
||||
}
|
||||
|
||||
var randomSample = new KeyValuePair<int, string>(1177, "/home/sub1/custom-sub-1");
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
var result = umbracoContext.UrlProvider.GetUrl(randomSample.Key);
|
||||
Assert.AreEqual(randomSample.Value, result);
|
||||
}
|
||||
|
||||
var cache = umbracoContext.ContentCache as PublishedContentCache;
|
||||
if (cache == null) throw new Exception("Unsupported IPublishedContentCache, only the Xml one is supported.");
|
||||
var cachedRoutes = cache.RoutesCache.GetCachedRoutes();
|
||||
Assert.AreEqual(8, cachedRoutes.Count);
|
||||
|
||||
foreach (var sample in samples)
|
||||
{
|
||||
Assert.IsTrue(cachedRoutes.ContainsKey(sample.Key));
|
||||
Assert.AreEqual(sample.Value, cachedRoutes[sample.Key]);
|
||||
}
|
||||
|
||||
var cachedIds = cache.RoutesCache.GetCachedIds();
|
||||
Assert.AreEqual(0, cachedIds.Count);
|
||||
}
|
||||
|
||||
// test hideTopLevelNodeFromPath false
|
||||
[TestCase(1046, "/home/")]
|
||||
[TestCase(1173, "/home/sub1/")]
|
||||
[TestCase(1174, "/home/sub1/sub2/")]
|
||||
[TestCase(1176, "/home/sub1/sub-3/")]
|
||||
[TestCase(1177, "/home/sub1/custom-sub-1/")]
|
||||
[TestCase(1178, "/home/sub1/custom-sub-2/")]
|
||||
[TestCase(1175, "/home/sub-2/")]
|
||||
[TestCase(1172, "/test-page/")]
|
||||
public void Get_Nice_Url_Not_Hiding_Top_Level(int nodeId, string niceUrlMatch)
|
||||
{
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true);
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false);
|
||||
|
||||
var umbracoContext = GetUmbracoContext("/test", 1111, urlProviders: new []
|
||||
{
|
||||
new DefaultUrlProvider(_umbracoSettings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
|
||||
}, globalSettings:globalSettings.Object);
|
||||
|
||||
var requestHandlerMock = Mock.Get(_umbracoSettings.RequestHandler);
|
||||
requestHandlerMock.Setup(x => x.AddTrailingSlash).Returns(false);// (cached routes have none)
|
||||
|
||||
var samples = new Dictionary<int, string> {
|
||||
{ 1046, "/home" },
|
||||
{ 1173, "/home/sub1" },
|
||||
{ 1174, "/home/sub1/sub2" },
|
||||
{ 1176, "/home/sub1/sub-3" },
|
||||
{ 1177, "/home/sub1/custom-sub-1" },
|
||||
{ 1178, "/home/sub1/custom-sub-2" },
|
||||
{ 1175, "/home/sub-2" },
|
||||
{ 1172, "/test-page" }
|
||||
};
|
||||
|
||||
foreach (var sample in samples)
|
||||
{
|
||||
var result = umbracoContext.UrlProvider.GetUrl(sample.Key);
|
||||
Assert.AreEqual(sample.Value, result);
|
||||
}
|
||||
|
||||
var randomSample = new KeyValuePair<int, string>(1177, "/home/sub1/custom-sub-1");
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
var result = umbracoContext.UrlProvider.GetUrl(randomSample.Key);
|
||||
Assert.AreEqual(randomSample.Value, result);
|
||||
}
|
||||
|
||||
var cache = umbracoContext.ContentCache as PublishedContentCache;
|
||||
if (cache == null) throw new Exception("Unsupported IPublishedContentCache, only the Xml one is supported.");
|
||||
var cachedRoutes = cache.RoutesCache.GetCachedRoutes();
|
||||
Assert.AreEqual(8, cachedRoutes.Count);
|
||||
|
||||
foreach (var sample in samples)
|
||||
{
|
||||
Assert.IsTrue(cachedRoutes.ContainsKey(sample.Key));
|
||||
Assert.AreEqual(sample.Value, cachedRoutes[sample.Key]);
|
||||
}
|
||||
|
||||
var cachedIds = cache.RoutesCache.GetCachedIds();
|
||||
Assert.AreEqual(0, cachedIds.Count);
|
||||
}
|
||||
|
||||
// test hideTopLevelNodeFromPath false
|
||||
[TestCase(1046, "/home/")]
|
||||
[TestCase(1173, "/home/sub1/")]
|
||||
[TestCase(1174, "/home/sub1/sub2/")]
|
||||
[TestCase(1176, "/home/sub1/sub-3/")]
|
||||
[TestCase(1177, "/home/sub1/custom-sub-1/")]
|
||||
[TestCase(1178, "/home/sub1/custom-sub-2/")]
|
||||
[TestCase(1175, "/home/sub-2/")]
|
||||
[TestCase(1172, "/test-page/")]
|
||||
public void Get_Nice_Url_Not_Hiding_Top_Level(int nodeId, string niceUrlMatch)
|
||||
{
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true);
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false);
|
||||
SettingsForTests.ConfigureSettings(globalSettings.Object);
|
||||
|
||||
var umbracoContext = GetUmbracoContext("/test", 1111, urlProviders: new[]
|
||||
{
|
||||
new DefaultUrlProvider(_umbracoSettings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
|
||||
}, globalSettings:globalSettings.Object);
|
||||
|
||||
var requestMock = Mock.Get(_umbracoSettings.RequestHandler);
|
||||
requestMock.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
|
||||
var result = umbracoContext.UrlProvider.GetUrl(nodeId);
|
||||
Assert.AreEqual(niceUrlMatch, result);
|
||||
}
|
||||
|
||||
// no need for umbracoUseDirectoryUrls test = should be handled by UriUtilityTests
|
||||
|
||||
// test hideTopLevelNodeFromPath true
|
||||
[TestCase(1046, "/")]
|
||||
[TestCase(1173, "/sub1/")]
|
||||
[TestCase(1174, "/sub1/sub2/")]
|
||||
[TestCase(1176, "/sub1/sub-3/")]
|
||||
[TestCase(1177, "/sub1/custom-sub-1/")]
|
||||
[TestCase(1178, "/sub1/custom-sub-2/")]
|
||||
[TestCase(1175, "/sub-2/")]
|
||||
[TestCase(1172, "/test-page/")] // not hidden because not first root
|
||||
public void Get_Nice_Url_Hiding_Top_Level(int nodeId, string niceUrlMatch)
|
||||
{
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true);
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(true);
|
||||
|
||||
var umbracoContext = GetUmbracoContext("/test", 1111, urlProviders: new[]
|
||||
{
|
||||
new DefaultUrlProvider(_umbracoSettings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
|
||||
}, globalSettings:globalSettings.Object);
|
||||
|
||||
var requestMock = Mock.Get(_umbracoSettings.RequestHandler);
|
||||
requestMock.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
|
||||
var result = umbracoContext.UrlProvider.GetUrl(nodeId);
|
||||
Assert.AreEqual(niceUrlMatch, result);
|
||||
}
|
||||
|
||||
// no need for umbracoUseDirectoryUrls test = should be handled by UriUtilityTests
|
||||
|
||||
// test hideTopLevelNodeFromPath true
|
||||
[TestCase(1046, "/")]
|
||||
[TestCase(1173, "/sub1/")]
|
||||
[TestCase(1174, "/sub1/sub2/")]
|
||||
[TestCase(1176, "/sub1/sub-3/")]
|
||||
[TestCase(1177, "/sub1/custom-sub-1/")]
|
||||
[TestCase(1178, "/sub1/custom-sub-2/")]
|
||||
[TestCase(1175, "/sub-2/")]
|
||||
[TestCase(1172, "/test-page/")] // not hidden because not first root
|
||||
public void Get_Nice_Url_Hiding_Top_Level(int nodeId, string niceUrlMatch)
|
||||
{
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true);
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(true);
|
||||
SettingsForTests.ConfigureSettings(globalSettings.Object);
|
||||
|
||||
var umbracoContext = GetUmbracoContext("/test", 1111, urlProviders: new[]
|
||||
{
|
||||
new DefaultUrlProvider(_umbracoSettings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
|
||||
}, globalSettings:globalSettings.Object);
|
||||
|
||||
var requestMock = Mock.Get(_umbracoSettings.RequestHandler);
|
||||
requestMock.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
|
||||
var result = umbracoContext.UrlProvider.GetUrl(nodeId);
|
||||
Assert.AreEqual(niceUrlMatch, result);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Get_Nice_Url_Relative_Or_Absolute()
|
||||
{
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true);
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false);
|
||||
|
||||
var umbracoContext = GetUmbracoContext("/test", 1111, urlProviders: new[]
|
||||
{
|
||||
new DefaultUrlProvider(_umbracoSettings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
|
||||
}, globalSettings:globalSettings.Object);
|
||||
|
||||
var requestMock = Mock.Get(_umbracoSettings.RequestHandler);
|
||||
requestMock.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
|
||||
var result = umbracoContext.UrlProvider.GetUrl(nodeId);
|
||||
Assert.AreEqual(niceUrlMatch, result);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Get_Nice_Url_Relative_Or_Absolute()
|
||||
{
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true);
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false);
|
||||
SettingsForTests.ConfigureSettings(globalSettings.Object);
|
||||
|
||||
|
||||
var requestMock = Mock.Get(_umbracoSettings.RequestHandler);
|
||||
requestMock.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
|
||||
var umbracoContext = GetUmbracoContext("http://example.com/test", 1111, umbracoSettings: _umbracoSettings, urlProviders: new[]
|
||||
{
|
||||
new DefaultUrlProvider(_umbracoSettings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
|
||||
}, globalSettings:globalSettings.Object);
|
||||
|
||||
Assert.AreEqual("/home/sub1/custom-sub-1/", umbracoContext.UrlProvider.GetUrl(1177));
|
||||
|
||||
requestMock.Setup(x => x.UseDomainPrefixes).Returns(true);
|
||||
Assert.AreEqual("http://example.com/home/sub1/custom-sub-1/", umbracoContext.UrlProvider.GetUrl(1177));
|
||||
|
||||
requestMock.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
umbracoContext.UrlProvider.Mode = UrlProviderMode.Absolute;
|
||||
Assert.AreEqual("http://example.com/home/sub1/custom-sub-1/", umbracoContext.UrlProvider.GetUrl(1177));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Get_Nice_Url_Unpublished()
|
||||
{
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true);
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false);
|
||||
|
||||
var requestMock = Mock.Get(_umbracoSettings.RequestHandler);
|
||||
requestMock.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
|
||||
var umbracoContext = GetUmbracoContext("http://example.com/test", 1111, umbracoSettings: _umbracoSettings, urlProviders: new[]
|
||||
{
|
||||
new DefaultUrlProvider(_umbracoSettings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
|
||||
}, globalSettings:globalSettings.Object);
|
||||
|
||||
Assert.AreEqual("/home/sub1/custom-sub-1/", umbracoContext.UrlProvider.GetUrl(1177));
|
||||
|
||||
requestMock.Setup(x => x.UseDomainPrefixes).Returns(true);
|
||||
Assert.AreEqual("http://example.com/home/sub1/custom-sub-1/", umbracoContext.UrlProvider.GetUrl(1177));
|
||||
|
||||
requestMock.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
umbracoContext.UrlProvider.Mode = UrlProviderMode.Absolute;
|
||||
Assert.AreEqual("http://example.com/home/sub1/custom-sub-1/", umbracoContext.UrlProvider.GetUrl(1177));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Get_Nice_Url_Unpublished()
|
||||
{
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true);
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false);
|
||||
SettingsForTests.ConfigureSettings(globalSettings.Object);
|
||||
|
||||
var umbracoContext = GetUmbracoContext("http://example.com/test", 1111, urlProviders: new[]
|
||||
{
|
||||
new DefaultUrlProvider(_umbracoSettings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
|
||||
}, globalSettings:globalSettings.Object);
|
||||
|
||||
//mock the Umbraco settings that we need
|
||||
var requestMock = Mock.Get(_umbracoSettings.RequestHandler);
|
||||
requestMock.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
|
||||
Assert.AreEqual("#", umbracoContext.UrlProvider.GetUrl(999999));
|
||||
|
||||
requestMock.Setup(x => x.UseDomainPrefixes).Returns(true);
|
||||
|
||||
Assert.AreEqual("#", umbracoContext.UrlProvider.GetUrl(999999));
|
||||
|
||||
requestMock.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
|
||||
umbracoContext.UrlProvider.Mode = UrlProviderMode.Absolute;
|
||||
|
||||
Assert.AreEqual("#", umbracoContext.UrlProvider.GetUrl(999999));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var umbracoContext = GetUmbracoContext("http://example.com/test", 1111, urlProviders: new[]
|
||||
{
|
||||
new DefaultUrlProvider(_umbracoSettings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
|
||||
}, globalSettings:globalSettings.Object);
|
||||
|
||||
//mock the Umbraco settings that we need
|
||||
var requestMock = Mock.Get(_umbracoSettings.RequestHandler);
|
||||
requestMock.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
|
||||
Assert.AreEqual("#", umbracoContext.UrlProvider.GetUrl(999999));
|
||||
|
||||
requestMock.Setup(x => x.UseDomainPrefixes).Returns(true);
|
||||
|
||||
Assert.AreEqual("#", umbracoContext.UrlProvider.GetUrl(999999));
|
||||
|
||||
requestMock.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
|
||||
umbracoContext.UrlProvider.Mode = UrlProviderMode.Absolute;
|
||||
|
||||
Assert.AreEqual("#", umbracoContext.UrlProvider.GetUrl(999999));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,7 @@ namespace Umbraco.Tests.Routing
|
||||
// the quirks due to hideTopLevelFromPath and backward compatibility.
|
||||
|
||||
[UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerFixture)]
|
||||
public class NiceUrlRoutesTests : TestWithDatabaseBase
|
||||
public class UrlRoutesTests : TestWithDatabaseBase
|
||||
{
|
||||
#region Test Setup
|
||||
|
||||
@@ -1,423 +1,423 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Services;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
using Umbraco.Web.PublishedCache.XmlPublishedCache;
|
||||
using Umbraco.Web.Routing;
|
||||
using Umbraco.Core.Composing;
|
||||
|
||||
namespace Umbraco.Tests.Routing
|
||||
{
|
||||
[TestFixture]
|
||||
public class NiceUrlsProviderWithDomainsTests : UrlRoutingTestBase
|
||||
{
|
||||
protected override void Compose()
|
||||
{
|
||||
base.Compose();
|
||||
|
||||
Container.RegisterSingleton(_ => Mock.Of<IDomainService>());
|
||||
Container.Register<ISiteDomainHelper, SiteDomainHelper>();
|
||||
}
|
||||
|
||||
void SetDomains1()
|
||||
{
|
||||
SetupDomainServiceMock(new[]
|
||||
{
|
||||
new UmbracoDomain("domain1.com") {Id = 1, LanguageId = LangFrId, RootContentId = 1001, LanguageIsoCode = "fr-FR"}
|
||||
});
|
||||
}
|
||||
|
||||
void SetDomains2()
|
||||
{
|
||||
SetupDomainServiceMock(new[]
|
||||
{
|
||||
new UmbracoDomain("http://domain1.com/foo") {Id = 1, LanguageId = LangFrId, RootContentId = 1001, LanguageIsoCode = "fr-FR"}
|
||||
});
|
||||
}
|
||||
|
||||
void SetDomains3()
|
||||
{
|
||||
SetupDomainServiceMock(new[]
|
||||
{
|
||||
new UmbracoDomain("http://domain1.com/") {Id = 1, LanguageId = LangFrId, RootContentId = 10011, LanguageIsoCode = "fr-FR"}
|
||||
});
|
||||
}
|
||||
|
||||
void SetDomains4()
|
||||
{
|
||||
SetupDomainServiceMock(new[]
|
||||
{
|
||||
new UmbracoDomain("http://domain1.com/") {Id = 1, LanguageId = LangEngId, RootContentId = 1001, LanguageIsoCode = "en-US"},
|
||||
new UmbracoDomain("http://domain1.com/en") {Id = 1, LanguageId = LangEngId, RootContentId = 10011, LanguageIsoCode = "en-US"},
|
||||
new UmbracoDomain("http://domain1.com/fr") {Id = 1, LanguageId = LangFrId, RootContentId = 10012, LanguageIsoCode = "fr-FR"},
|
||||
new UmbracoDomain("http://domain3.com/") {Id = 1, LanguageId = LangEngId, RootContentId = 1003, LanguageIsoCode = "en-US"},
|
||||
new UmbracoDomain("http://domain3.com/en") {Id = 1, LanguageId = LangEngId, RootContentId = 10031, LanguageIsoCode = "en-US"},
|
||||
new UmbracoDomain("http://domain3.com/fr") {Id = 1, LanguageId = LangFrId, RootContentId = 10032, LanguageIsoCode = "fr-FR"}
|
||||
});
|
||||
}
|
||||
|
||||
void SetDomains5()
|
||||
{
|
||||
SetupDomainServiceMock(new[]
|
||||
{
|
||||
new UmbracoDomain("http://domain1.com/en") {Id = 1, LanguageId = LangEngId, RootContentId = 10011, LanguageIsoCode = "en-US"},
|
||||
new UmbracoDomain("http://domain1a.com/en") {Id = 1, LanguageId = LangEngId, RootContentId = 10011, LanguageIsoCode = "en-US"},
|
||||
new UmbracoDomain("http://domain1b.com/en") {Id = 1, LanguageId = LangEngId, RootContentId = 10011, LanguageIsoCode = "en-US"},
|
||||
new UmbracoDomain("http://domain1.com/fr") {Id = 1, LanguageId = LangFrId, RootContentId = 10012, LanguageIsoCode = "fr-FR"},
|
||||
new UmbracoDomain("http://domain1a.com/fr") {Id = 1, LanguageId = LangFrId, RootContentId = 10012, LanguageIsoCode = "fr-FR"},
|
||||
new UmbracoDomain("http://domain1b.com/fr") {Id = 1, LanguageId = LangFrId, RootContentId = 10012, LanguageIsoCode = "fr-FR"},
|
||||
new UmbracoDomain("http://domain3.com/en") {Id = 1, LanguageId = LangEngId, RootContentId = 10031, LanguageIsoCode = "en-US"},
|
||||
new UmbracoDomain("http://domain3.com/fr") {Id = 1, LanguageId = LangFrId, RootContentId = 10032, LanguageIsoCode = "fr-FR"}
|
||||
});
|
||||
}
|
||||
|
||||
protected override string GetXmlContent(int templateId)
|
||||
{
|
||||
return @"<?xml version=""1.0"" encoding=""utf-8""?>
|
||||
<!DOCTYPE root[
|
||||
<!ELEMENT Doc ANY>
|
||||
<!ATTLIST Doc id ID #REQUIRED>
|
||||
]>
|
||||
<root id=""-1"">
|
||||
<Doc id=""1001"" parentID=""-1"" level=""1"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-06-12T14:13:17"" updateDate=""2012-07-20T18:50:43"" nodeName=""Home"" urlName=""1001"" writerName=""admin"" creatorName=""admin"" path=""-1,1001"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
<Doc id=""10011"" parentID=""1001"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:06:45"" updateDate=""2012-07-20T19:07:31"" nodeName=""Sub1"" urlName=""1001-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10011"" isDoc="""">
|
||||
<content><![CDATA[<div>This is some content</div>]]></content>
|
||||
<Doc id=""100111"" parentID=""10011"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:07:54"" updateDate=""2012-07-20T19:10:27"" nodeName=""Sub2"" urlName=""1001-1-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10011,100111"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""100112"" parentID=""10011"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1001-1-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10011,100112"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
<Doc id=""1001121"" parentID=""100112"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1001-1-2-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10011,100112,1001121"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""1001122"" parentID=""100112"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1001-1-2-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10011,100112,1001122"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
</Doc>
|
||||
</Doc>
|
||||
<Doc id=""10012"" parentID=""1001"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:01"" updateDate=""2012-07-20T18:49:32"" nodeName=""Sub 2"" urlName=""1001-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10012"" isDoc="""">
|
||||
<content><![CDATA[<div>This is some content</div>]]></content>
|
||||
<Doc id=""100121"" parentID=""10012"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:07:54"" updateDate=""2012-07-20T19:10:27"" nodeName=""Sub2"" urlName=""1001-2-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10012,100121"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""100122"" parentID=""10012"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1001-2-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10012,100122"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
<Doc id=""1001221"" parentID=""100122"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1001-2-2-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10012,100122,1001221"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""1001222"" parentID=""100122"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1001-2-2-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10012,100122,1001222"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
</Doc>
|
||||
</Doc>
|
||||
<Doc id=""10013"" parentID=""1001"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""3"" createDate=""2012-07-20T18:08:01"" updateDate=""2012-07-20T18:49:32"" nodeName=""Sub 2"" urlName=""1001-3"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10013"" isDoc="""">
|
||||
</Doc>
|
||||
</Doc>
|
||||
<Doc id=""1002"" parentID=""-1"" level=""1"" writerID=""0"" creatorID=""0"" nodeType=""1234"" template=""" + templateId + @""" sortOrder=""3"" createDate=""2012-07-16T15:26:59"" updateDate=""2012-07-18T14:23:35"" nodeName=""Test"" urlName=""1002"" writerName=""admin"" creatorName=""admin"" path=""-1,1002"" isDoc="""">
|
||||
</Doc>
|
||||
<Doc id=""1003"" parentID=""-1"" level=""1"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-06-12T14:13:17"" updateDate=""2012-07-20T18:50:43"" nodeName=""Home"" urlName=""1003"" writerName=""admin"" creatorName=""admin"" path=""-1,1003"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
<Doc id=""10031"" parentID=""1003"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:06:45"" updateDate=""2012-07-20T19:07:31"" nodeName=""Sub1"" urlName=""1003-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10031"" isDoc="""">
|
||||
<content><![CDATA[<div>This is some content</div>]]></content>
|
||||
<Doc id=""100311"" parentID=""10031"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:07:54"" updateDate=""2012-07-20T19:10:27"" nodeName=""Sub2"" urlName=""1003-1-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10031,100311"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""100312"" parentID=""10031"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1003-1-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10031,100312"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
<Doc id=""1003121"" parentID=""100312"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1003-1-2-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10031,100312,1003121"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""1003122"" parentID=""100312"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1003-1-2-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10031,100312,1003122"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
</Doc>
|
||||
</Doc>
|
||||
<Doc id=""10032"" parentID=""1003"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:01"" updateDate=""2012-07-20T18:49:32"" nodeName=""Sub 2"" urlName=""1003-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10032"" isDoc="""">
|
||||
<content><![CDATA[<div>This is some content</div>]]></content>
|
||||
<Doc id=""100321"" parentID=""10032"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:07:54"" updateDate=""2012-07-20T19:10:27"" nodeName=""Sub2"" urlName=""1003-2-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10032,100321"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""100322"" parentID=""10032"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1003-2-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10032,100322"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
<Doc id=""1003221"" parentID=""100322"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1003-2-2-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10032,100322,1003221"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""1003222"" parentID=""100322"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1003-2-2-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10032,100322,1003222"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
</Doc>
|
||||
</Doc>
|
||||
<Doc id=""10033"" parentID=""1003"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""3"" createDate=""2012-07-20T18:08:01"" updateDate=""2012-07-20T18:49:32"" nodeName=""Sub 2"" urlName=""1003-3"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10033"" isDoc="""">
|
||||
</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.GenerateMockUmbracoSettings();
|
||||
var request = Mock.Get(settings.RequestHandler);
|
||||
request.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true);
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); // ignored w/domains
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Services;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
using Umbraco.Web.PublishedCache.XmlPublishedCache;
|
||||
using Umbraco.Web.Routing;
|
||||
using Umbraco.Core.Composing;
|
||||
|
||||
namespace Umbraco.Tests.Routing
|
||||
{
|
||||
[TestFixture]
|
||||
public class UrlsProviderWithDomainsTests : UrlRoutingTestBase
|
||||
{
|
||||
protected override void Compose()
|
||||
{
|
||||
base.Compose();
|
||||
|
||||
Container.RegisterSingleton(_ => Mock.Of<IDomainService>());
|
||||
Container.Register<ISiteDomainHelper, SiteDomainHelper>();
|
||||
}
|
||||
|
||||
void SetDomains1()
|
||||
{
|
||||
SetupDomainServiceMock(new[]
|
||||
{
|
||||
new UmbracoDomain("domain1.com") {Id = 1, LanguageId = LangFrId, RootContentId = 1001, LanguageIsoCode = "fr-FR"}
|
||||
});
|
||||
}
|
||||
|
||||
void SetDomains2()
|
||||
{
|
||||
SetupDomainServiceMock(new[]
|
||||
{
|
||||
new UmbracoDomain("http://domain1.com/foo") {Id = 1, LanguageId = LangFrId, RootContentId = 1001, LanguageIsoCode = "fr-FR"}
|
||||
});
|
||||
}
|
||||
|
||||
void SetDomains3()
|
||||
{
|
||||
SetupDomainServiceMock(new[]
|
||||
{
|
||||
new UmbracoDomain("http://domain1.com/") {Id = 1, LanguageId = LangFrId, RootContentId = 10011, LanguageIsoCode = "fr-FR"}
|
||||
});
|
||||
}
|
||||
|
||||
void SetDomains4()
|
||||
{
|
||||
SetupDomainServiceMock(new[]
|
||||
{
|
||||
new UmbracoDomain("http://domain1.com/") {Id = 1, LanguageId = LangEngId, RootContentId = 1001, LanguageIsoCode = "en-US"},
|
||||
new UmbracoDomain("http://domain1.com/en") {Id = 1, LanguageId = LangEngId, RootContentId = 10011, LanguageIsoCode = "en-US"},
|
||||
new UmbracoDomain("http://domain1.com/fr") {Id = 1, LanguageId = LangFrId, RootContentId = 10012, LanguageIsoCode = "fr-FR"},
|
||||
new UmbracoDomain("http://domain3.com/") {Id = 1, LanguageId = LangEngId, RootContentId = 1003, LanguageIsoCode = "en-US"},
|
||||
new UmbracoDomain("http://domain3.com/en") {Id = 1, LanguageId = LangEngId, RootContentId = 10031, LanguageIsoCode = "en-US"},
|
||||
new UmbracoDomain("http://domain3.com/fr") {Id = 1, LanguageId = LangFrId, RootContentId = 10032, LanguageIsoCode = "fr-FR"}
|
||||
});
|
||||
}
|
||||
|
||||
void SetDomains5()
|
||||
{
|
||||
SetupDomainServiceMock(new[]
|
||||
{
|
||||
new UmbracoDomain("http://domain1.com/en") {Id = 1, LanguageId = LangEngId, RootContentId = 10011, LanguageIsoCode = "en-US"},
|
||||
new UmbracoDomain("http://domain1a.com/en") {Id = 1, LanguageId = LangEngId, RootContentId = 10011, LanguageIsoCode = "en-US"},
|
||||
new UmbracoDomain("http://domain1b.com/en") {Id = 1, LanguageId = LangEngId, RootContentId = 10011, LanguageIsoCode = "en-US"},
|
||||
new UmbracoDomain("http://domain1.com/fr") {Id = 1, LanguageId = LangFrId, RootContentId = 10012, LanguageIsoCode = "fr-FR"},
|
||||
new UmbracoDomain("http://domain1a.com/fr") {Id = 1, LanguageId = LangFrId, RootContentId = 10012, LanguageIsoCode = "fr-FR"},
|
||||
new UmbracoDomain("http://domain1b.com/fr") {Id = 1, LanguageId = LangFrId, RootContentId = 10012, LanguageIsoCode = "fr-FR"},
|
||||
new UmbracoDomain("http://domain3.com/en") {Id = 1, LanguageId = LangEngId, RootContentId = 10031, LanguageIsoCode = "en-US"},
|
||||
new UmbracoDomain("http://domain3.com/fr") {Id = 1, LanguageId = LangFrId, RootContentId = 10032, LanguageIsoCode = "fr-FR"}
|
||||
});
|
||||
}
|
||||
|
||||
protected override string GetXmlContent(int templateId)
|
||||
{
|
||||
return @"<?xml version=""1.0"" encoding=""utf-8""?>
|
||||
<!DOCTYPE root[
|
||||
<!ELEMENT Doc ANY>
|
||||
<!ATTLIST Doc id ID #REQUIRED>
|
||||
]>
|
||||
<root id=""-1"">
|
||||
<Doc id=""1001"" parentID=""-1"" level=""1"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-06-12T14:13:17"" updateDate=""2012-07-20T18:50:43"" nodeName=""Home"" urlName=""1001"" writerName=""admin"" creatorName=""admin"" path=""-1,1001"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
<Doc id=""10011"" parentID=""1001"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:06:45"" updateDate=""2012-07-20T19:07:31"" nodeName=""Sub1"" urlName=""1001-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10011"" isDoc="""">
|
||||
<content><![CDATA[<div>This is some content</div>]]></content>
|
||||
<Doc id=""100111"" parentID=""10011"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:07:54"" updateDate=""2012-07-20T19:10:27"" nodeName=""Sub2"" urlName=""1001-1-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10011,100111"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""100112"" parentID=""10011"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1001-1-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10011,100112"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
<Doc id=""1001121"" parentID=""100112"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1001-1-2-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10011,100112,1001121"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""1001122"" parentID=""100112"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1001-1-2-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10011,100112,1001122"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
</Doc>
|
||||
</Doc>
|
||||
<Doc id=""10012"" parentID=""1001"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:01"" updateDate=""2012-07-20T18:49:32"" nodeName=""Sub 2"" urlName=""1001-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10012"" isDoc="""">
|
||||
<content><![CDATA[<div>This is some content</div>]]></content>
|
||||
<Doc id=""100121"" parentID=""10012"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:07:54"" updateDate=""2012-07-20T19:10:27"" nodeName=""Sub2"" urlName=""1001-2-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10012,100121"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""100122"" parentID=""10012"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1001-2-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10012,100122"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
<Doc id=""1001221"" parentID=""100122"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1001-2-2-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10012,100122,1001221"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""1001222"" parentID=""100122"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1001-2-2-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10012,100122,1001222"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
</Doc>
|
||||
</Doc>
|
||||
<Doc id=""10013"" parentID=""1001"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""3"" createDate=""2012-07-20T18:08:01"" updateDate=""2012-07-20T18:49:32"" nodeName=""Sub 2"" urlName=""1001-3"" writerName=""admin"" creatorName=""admin"" path=""-1,1001,10013"" isDoc="""">
|
||||
</Doc>
|
||||
</Doc>
|
||||
<Doc id=""1002"" parentID=""-1"" level=""1"" writerID=""0"" creatorID=""0"" nodeType=""1234"" template=""" + templateId + @""" sortOrder=""3"" createDate=""2012-07-16T15:26:59"" updateDate=""2012-07-18T14:23:35"" nodeName=""Test"" urlName=""1002"" writerName=""admin"" creatorName=""admin"" path=""-1,1002"" isDoc="""">
|
||||
</Doc>
|
||||
<Doc id=""1003"" parentID=""-1"" level=""1"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-06-12T14:13:17"" updateDate=""2012-07-20T18:50:43"" nodeName=""Home"" urlName=""1003"" writerName=""admin"" creatorName=""admin"" path=""-1,1003"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
<Doc id=""10031"" parentID=""1003"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:06:45"" updateDate=""2012-07-20T19:07:31"" nodeName=""Sub1"" urlName=""1003-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10031"" isDoc="""">
|
||||
<content><![CDATA[<div>This is some content</div>]]></content>
|
||||
<Doc id=""100311"" parentID=""10031"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:07:54"" updateDate=""2012-07-20T19:10:27"" nodeName=""Sub2"" urlName=""1003-1-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10031,100311"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""100312"" parentID=""10031"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1003-1-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10031,100312"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
<Doc id=""1003121"" parentID=""100312"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1003-1-2-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10031,100312,1003121"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""1003122"" parentID=""100312"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1003-1-2-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10031,100312,1003122"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
</Doc>
|
||||
</Doc>
|
||||
<Doc id=""10032"" parentID=""1003"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:01"" updateDate=""2012-07-20T18:49:32"" nodeName=""Sub 2"" urlName=""1003-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10032"" isDoc="""">
|
||||
<content><![CDATA[<div>This is some content</div>]]></content>
|
||||
<Doc id=""100321"" parentID=""10032"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-07-20T18:07:54"" updateDate=""2012-07-20T19:10:27"" nodeName=""Sub2"" urlName=""1003-2-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10032,100321"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""100322"" parentID=""10032"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1003-2-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10032,100322"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
<Doc id=""1003221"" parentID=""100322"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1003-2-2-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10032,100322,1003221"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
<Doc id=""1003222"" parentID=""100322"" level=""4"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""1003-2-2-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10032,100322,1003222"" isDoc="""">
|
||||
<content><![CDATA[]]></content>
|
||||
</Doc>
|
||||
</Doc>
|
||||
</Doc>
|
||||
<Doc id=""10033"" parentID=""1003"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""3"" createDate=""2012-07-20T18:08:01"" updateDate=""2012-07-20T18:49:32"" nodeName=""Sub 2"" urlName=""1003-3"" writerName=""admin"" creatorName=""admin"" path=""-1,1003,10033"" isDoc="""">
|
||||
</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.GenerateMockUmbracoSettings();
|
||||
var request = Mock.Get(settings.RequestHandler);
|
||||
request.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true);
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); // ignored w/domains
|
||||
SettingsForTests.ConfigureSettings(globalSettings.Object);
|
||||
|
||||
var umbracoContext = GetUmbracoContext("/test", 1111, umbracoSettings: settings, urlProviders: new[]
|
||||
{
|
||||
new DefaultUrlProvider(settings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
|
||||
}, globalSettings:globalSettings.Object);
|
||||
|
||||
SetDomains1();
|
||||
|
||||
var currentUri = new Uri(currentUrl);
|
||||
var result = umbracoContext.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)
|
||||
{
|
||||
var settings = SettingsForTests.GenerateMockUmbracoSettings();
|
||||
var request = Mock.Get(settings.RequestHandler);
|
||||
request.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true);
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); // ignored w/domains
|
||||
|
||||
var umbracoContext = GetUmbracoContext("/test", 1111, umbracoSettings: settings, urlProviders: new[]
|
||||
{
|
||||
new DefaultUrlProvider(settings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
|
||||
}, globalSettings:globalSettings.Object);
|
||||
|
||||
SetDomains1();
|
||||
|
||||
var currentUri = new Uri(currentUrl);
|
||||
var result = umbracoContext.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)
|
||||
{
|
||||
var settings = SettingsForTests.GenerateMockUmbracoSettings();
|
||||
var request = Mock.Get(settings.RequestHandler);
|
||||
request.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true);
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); // ignored w/domains
|
||||
SettingsForTests.ConfigureSettings(globalSettings.Object);
|
||||
|
||||
var umbracoContext = GetUmbracoContext("/test", 1111, umbracoSettings: settings, urlProviders: new[]
|
||||
{
|
||||
new DefaultUrlProvider(settings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
|
||||
}, globalSettings:globalSettings.Object);
|
||||
|
||||
SetDomains2();
|
||||
|
||||
var currentUri = new Uri(currentUrl);
|
||||
var result = umbracoContext.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.GenerateMockUmbracoSettings();
|
||||
var request = Mock.Get(settings.RequestHandler);
|
||||
request.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true);
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); // ignored w/domains
|
||||
|
||||
var umbracoContext = GetUmbracoContext("/test", 1111, umbracoSettings: settings, urlProviders: new[]
|
||||
{
|
||||
new DefaultUrlProvider(settings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
|
||||
}, globalSettings:globalSettings.Object);
|
||||
|
||||
SetDomains2();
|
||||
|
||||
var currentUri = new Uri(currentUrl);
|
||||
var result = umbracoContext.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.GenerateMockUmbracoSettings();
|
||||
var request = Mock.Get(settings.RequestHandler);
|
||||
request.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true);
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); // ignored w/domains
|
||||
SettingsForTests.ConfigureSettings(globalSettings.Object);
|
||||
|
||||
var umbracoContext = GetUmbracoContext("/test", 1111, umbracoSettings: settings, urlProviders: new[]
|
||||
{
|
||||
new DefaultUrlProvider(settings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
|
||||
}, globalSettings:globalSettings.Object);
|
||||
|
||||
SetDomains3();
|
||||
|
||||
var currentUri = new Uri(currentUrl);
|
||||
var result = umbracoContext.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)
|
||||
{
|
||||
var settings = SettingsForTests.GenerateMockUmbracoSettings();
|
||||
var request = Mock.Get(settings.RequestHandler);
|
||||
request.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true);
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); // ignored w/domains
|
||||
|
||||
var umbracoContext = GetUmbracoContext("/test", 1111, umbracoSettings: settings, urlProviders: new[]
|
||||
{
|
||||
new DefaultUrlProvider(settings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
|
||||
}, globalSettings:globalSettings.Object);
|
||||
|
||||
SetDomains3();
|
||||
|
||||
var currentUri = new Uri(currentUrl);
|
||||
var result = umbracoContext.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)
|
||||
{
|
||||
var settings = SettingsForTests.GenerateMockUmbracoSettings();
|
||||
var request = Mock.Get(settings.RequestHandler);
|
||||
request.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true);
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); // ignored w/domains
|
||||
SettingsForTests.ConfigureSettings(globalSettings.Object);
|
||||
|
||||
var umbracoContext = GetUmbracoContext("/test", 1111, umbracoSettings: settings, urlProviders: new[]
|
||||
{
|
||||
new DefaultUrlProvider(settings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
|
||||
}, globalSettings:globalSettings.Object);
|
||||
|
||||
SetDomains4();
|
||||
|
||||
var currentUri = new Uri(currentUrl);
|
||||
var result = umbracoContext.UrlProvider.GetUrl(nodeId, currentUri, absolute);
|
||||
Assert.AreEqual(expected, result);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Get_Nice_Url_DomainsAndCache()
|
||||
{
|
||||
var settings = SettingsForTests.GenerateMockUmbracoSettings();
|
||||
var request = Mock.Get(settings.RequestHandler);
|
||||
request.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true);
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); // ignored w/domains
|
||||
|
||||
var umbracoContext = GetUmbracoContext("/test", 1111, umbracoSettings: settings, urlProviders: new[]
|
||||
{
|
||||
new DefaultUrlProvider(settings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
|
||||
}, globalSettings:globalSettings.Object);
|
||||
|
||||
SetDomains4();
|
||||
|
||||
var currentUri = new Uri(currentUrl);
|
||||
var result = umbracoContext.UrlProvider.GetUrl(nodeId, currentUri, absolute);
|
||||
Assert.AreEqual(expected, result);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Get_Nice_Url_DomainsAndCache()
|
||||
{
|
||||
var settings = SettingsForTests.GenerateMockUmbracoSettings();
|
||||
var request = Mock.Get(settings.RequestHandler);
|
||||
request.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true);
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); // ignored w/domains
|
||||
SettingsForTests.ConfigureSettings(globalSettings.Object);
|
||||
|
||||
var umbracoContext = GetUmbracoContext("/test", 1111, umbracoSettings: settings, urlProviders: new[]
|
||||
{
|
||||
new DefaultUrlProvider(settings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
|
||||
}, globalSettings:globalSettings.Object);
|
||||
|
||||
SetDomains4();
|
||||
|
||||
string ignore;
|
||||
ignore = umbracoContext.UrlProvider.GetUrl(1001, new Uri("http://domain1.com"), false);
|
||||
ignore = umbracoContext.UrlProvider.GetUrl(10011, new Uri("http://domain1.com"), false);
|
||||
ignore = umbracoContext.UrlProvider.GetUrl(100111, new Uri("http://domain1.com"), false);
|
||||
ignore = umbracoContext.UrlProvider.GetUrl(10012, new Uri("http://domain1.com"), false);
|
||||
ignore = umbracoContext.UrlProvider.GetUrl(100121, new Uri("http://domain1.com"), false);
|
||||
ignore = umbracoContext.UrlProvider.GetUrl(10013, new Uri("http://domain1.com"), false);
|
||||
ignore = umbracoContext.UrlProvider.GetUrl(1002, new Uri("http://domain1.com"), false);
|
||||
ignore = umbracoContext.UrlProvider.GetUrl(1001, new Uri("http://domain2.com"), false);
|
||||
ignore = umbracoContext.UrlProvider.GetUrl(10011, new Uri("http://domain2.com"), false);
|
||||
ignore = umbracoContext.UrlProvider.GetUrl(100111, new Uri("http://domain2.com"), false);
|
||||
ignore = umbracoContext.UrlProvider.GetUrl(1002, new Uri("http://domain2.com"), false);
|
||||
|
||||
var cache = umbracoContext.ContentCache 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(0, 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");
|
||||
|
||||
// use the cache
|
||||
Assert.AreEqual("/", umbracoContext.UrlProvider.GetUrl(1001, new Uri("http://domain1.com"), false));
|
||||
Assert.AreEqual("/en/", umbracoContext.UrlProvider.GetUrl(10011, new Uri("http://domain1.com"), false));
|
||||
Assert.AreEqual("/en/1001-1-1/", umbracoContext.UrlProvider.GetUrl(100111, new Uri("http://domain1.com"), false));
|
||||
Assert.AreEqual("/fr/", umbracoContext.UrlProvider.GetUrl(10012, new Uri("http://domain1.com"), false));
|
||||
Assert.AreEqual("/fr/1001-2-1/", umbracoContext.UrlProvider.GetUrl(100121, new Uri("http://domain1.com"), false));
|
||||
Assert.AreEqual("/1001-3/", umbracoContext.UrlProvider.GetUrl(10013, new Uri("http://domain1.com"), false));
|
||||
Assert.AreEqual("/1002/", umbracoContext.UrlProvider.GetUrl(1002, new Uri("http://domain1.com"), false));
|
||||
|
||||
Assert.AreEqual("http://domain1.com/fr/1001-2-1/", umbracoContext.UrlProvider.GetUrl(100121, new Uri("http://domain2.com"), false));
|
||||
}
|
||||
|
||||
private static 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.IsFalse(ids.ContainsKey(route));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Get_Nice_Url_Relative_Or_Absolute()
|
||||
{
|
||||
var settings = SettingsForTests.GenerateMockUmbracoSettings();
|
||||
var requestMock = Mock.Get(settings.RequestHandler);
|
||||
requestMock.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true);
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); // ignored w/domains
|
||||
|
||||
var umbracoContext = GetUmbracoContext("/test", 1111, umbracoSettings: settings, urlProviders: new[]
|
||||
{
|
||||
new DefaultUrlProvider(settings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
|
||||
}, globalSettings:globalSettings.Object);
|
||||
|
||||
SetDomains4();
|
||||
|
||||
string ignore;
|
||||
ignore = umbracoContext.UrlProvider.GetUrl(1001, new Uri("http://domain1.com"), false);
|
||||
ignore = umbracoContext.UrlProvider.GetUrl(10011, new Uri("http://domain1.com"), false);
|
||||
ignore = umbracoContext.UrlProvider.GetUrl(100111, new Uri("http://domain1.com"), false);
|
||||
ignore = umbracoContext.UrlProvider.GetUrl(10012, new Uri("http://domain1.com"), false);
|
||||
ignore = umbracoContext.UrlProvider.GetUrl(100121, new Uri("http://domain1.com"), false);
|
||||
ignore = umbracoContext.UrlProvider.GetUrl(10013, new Uri("http://domain1.com"), false);
|
||||
ignore = umbracoContext.UrlProvider.GetUrl(1002, new Uri("http://domain1.com"), false);
|
||||
ignore = umbracoContext.UrlProvider.GetUrl(1001, new Uri("http://domain2.com"), false);
|
||||
ignore = umbracoContext.UrlProvider.GetUrl(10011, new Uri("http://domain2.com"), false);
|
||||
ignore = umbracoContext.UrlProvider.GetUrl(100111, new Uri("http://domain2.com"), false);
|
||||
ignore = umbracoContext.UrlProvider.GetUrl(1002, new Uri("http://domain2.com"), false);
|
||||
|
||||
var cache = umbracoContext.ContentCache 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(0, 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");
|
||||
|
||||
// use the cache
|
||||
Assert.AreEqual("/", umbracoContext.UrlProvider.GetUrl(1001, new Uri("http://domain1.com"), false));
|
||||
Assert.AreEqual("/en/", umbracoContext.UrlProvider.GetUrl(10011, new Uri("http://domain1.com"), false));
|
||||
Assert.AreEqual("/en/1001-1-1/", umbracoContext.UrlProvider.GetUrl(100111, new Uri("http://domain1.com"), false));
|
||||
Assert.AreEqual("/fr/", umbracoContext.UrlProvider.GetUrl(10012, new Uri("http://domain1.com"), false));
|
||||
Assert.AreEqual("/fr/1001-2-1/", umbracoContext.UrlProvider.GetUrl(100121, new Uri("http://domain1.com"), false));
|
||||
Assert.AreEqual("/1001-3/", umbracoContext.UrlProvider.GetUrl(10013, new Uri("http://domain1.com"), false));
|
||||
Assert.AreEqual("/1002/", umbracoContext.UrlProvider.GetUrl(1002, new Uri("http://domain1.com"), false));
|
||||
|
||||
Assert.AreEqual("http://domain1.com/fr/1001-2-1/", umbracoContext.UrlProvider.GetUrl(100121, new Uri("http://domain2.com"), false));
|
||||
}
|
||||
|
||||
private static 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.IsFalse(ids.ContainsKey(route));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Get_Nice_Url_Relative_Or_Absolute()
|
||||
{
|
||||
var settings = SettingsForTests.GenerateMockUmbracoSettings();
|
||||
var requestMock = Mock.Get(settings.RequestHandler);
|
||||
requestMock.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true);
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); // ignored w/domains
|
||||
SettingsForTests.ConfigureSettings(globalSettings.Object);
|
||||
|
||||
var umbracoContext = GetUmbracoContext("http://domain1.com/test", 1111, umbracoSettings: settings, urlProviders: new[]
|
||||
{
|
||||
new DefaultUrlProvider(settings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
|
||||
}, globalSettings:globalSettings.Object);
|
||||
|
||||
SetDomains4();
|
||||
|
||||
Assert.AreEqual("/en/1001-1-1/", umbracoContext.UrlProvider.GetUrl(100111));
|
||||
Assert.AreEqual("http://domain3.com/en/1003-1-1/", umbracoContext.UrlProvider.GetUrl(100311));
|
||||
|
||||
requestMock.Setup(x => x.UseDomainPrefixes).Returns(true);
|
||||
|
||||
Assert.AreEqual("http://domain1.com/en/1001-1-1/", umbracoContext.UrlProvider.GetUrl(100111));
|
||||
Assert.AreEqual("http://domain3.com/en/1003-1-1/", umbracoContext.UrlProvider.GetUrl(100311));
|
||||
|
||||
requestMock.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
umbracoContext.UrlProvider.Mode = UrlProviderMode.Absolute;
|
||||
|
||||
Assert.AreEqual("http://domain1.com/en/1001-1-1/", umbracoContext.UrlProvider.GetUrl(100111));
|
||||
Assert.AreEqual("http://domain3.com/en/1003-1-1/", umbracoContext.UrlProvider.GetUrl(100311));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Get_Nice_Url_Alternate()
|
||||
{
|
||||
var settings = SettingsForTests.GenerateMockUmbracoSettings();
|
||||
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true);
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); // ignored w/domains
|
||||
|
||||
var umbracoContext = GetUmbracoContext("http://domain1.com/test", 1111, umbracoSettings: settings, urlProviders: new[]
|
||||
{
|
||||
new DefaultUrlProvider(settings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
|
||||
}, globalSettings:globalSettings.Object);
|
||||
|
||||
SetDomains4();
|
||||
|
||||
Assert.AreEqual("/en/1001-1-1/", umbracoContext.UrlProvider.GetUrl(100111));
|
||||
Assert.AreEqual("http://domain3.com/en/1003-1-1/", umbracoContext.UrlProvider.GetUrl(100311));
|
||||
|
||||
requestMock.Setup(x => x.UseDomainPrefixes).Returns(true);
|
||||
|
||||
Assert.AreEqual("http://domain1.com/en/1001-1-1/", umbracoContext.UrlProvider.GetUrl(100111));
|
||||
Assert.AreEqual("http://domain3.com/en/1003-1-1/", umbracoContext.UrlProvider.GetUrl(100311));
|
||||
|
||||
requestMock.Setup(x => x.UseDomainPrefixes).Returns(false);
|
||||
umbracoContext.UrlProvider.Mode = UrlProviderMode.Absolute;
|
||||
|
||||
Assert.AreEqual("http://domain1.com/en/1001-1-1/", umbracoContext.UrlProvider.GetUrl(100111));
|
||||
Assert.AreEqual("http://domain3.com/en/1003-1-1/", umbracoContext.UrlProvider.GetUrl(100311));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Get_Nice_Url_Alternate()
|
||||
{
|
||||
var settings = SettingsForTests.GenerateMockUmbracoSettings();
|
||||
|
||||
var globalSettings = Mock.Get(TestObjects.GetGlobalSettings()); //this will modify the IGlobalSettings instance stored in the container
|
||||
globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true);
|
||||
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); // ignored w/domains
|
||||
SettingsForTests.ConfigureSettings(globalSettings.Object);
|
||||
|
||||
var umbracoContext = GetUmbracoContext("http://domain1.com/en/test", 1111, umbracoSettings: settings, urlProviders: new[]
|
||||
{
|
||||
new DefaultUrlProvider(settings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
|
||||
}, globalSettings:globalSettings.Object);
|
||||
|
||||
SetDomains5();
|
||||
|
||||
var url = umbracoContext.UrlProvider.GetUrl(100111, true);
|
||||
Assert.AreEqual("http://domain1.com/en/1001-1-1/", url);
|
||||
|
||||
var result = umbracoContext.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 umbracoContext = GetUmbracoContext("http://domain1.com/en/test", 1111, umbracoSettings: settings, urlProviders: new[]
|
||||
{
|
||||
new DefaultUrlProvider(settings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
|
||||
}, globalSettings:globalSettings.Object);
|
||||
|
||||
SetDomains5();
|
||||
|
||||
var url = umbracoContext.UrlProvider.GetUrl(100111, true);
|
||||
Assert.AreEqual("http://domain1.com/en/1001-1-1/", url);
|
||||
|
||||
var result = umbracoContext.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/"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -146,7 +146,12 @@
|
||||
<Compile Include="Persistence\Repositories\SimilarNodeNameTests.cs" />
|
||||
<Compile Include="Persistence\Repositories\UserGroupRepositoryTest.cs" />
|
||||
<Compile Include="Published\ConvertersTests.cs" />
|
||||
<Compile Include="Routing\NiceUrlRoutesTests.cs" />
|
||||
<Compile Include="Routing\ContentFinderByUrlAndTemplateTests.cs" />
|
||||
<Compile Include="Routing\ContentFinderByUrlTests.cs" />
|
||||
<Compile Include="Routing\ContentFinderByUrlWithDomainsTests.cs" />
|
||||
<Compile Include="Routing\UrlProviderTests.cs" />
|
||||
<Compile Include="Routing\UrlRoutesTests.cs" />
|
||||
<Compile Include="Routing\UrlsProviderWithDomainsTests.cs" />
|
||||
<Compile Include="Scheduling\BackgroundTaskRunnerTests2.cs" />
|
||||
<Compile Include="Scoping\EventNameExtractorTests.cs" />
|
||||
<Compile Include="Scoping\PassThroughEventDispatcherTests.cs" />
|
||||
@@ -425,9 +430,7 @@
|
||||
<Compile Include="Composing\LazyCollectionBuilderTests.cs" />
|
||||
<Compile Include="Composing\CollectionBuildersTests.cs" />
|
||||
<Compile Include="Routing\ContentFinderByAliasWithDomainsTests.cs" />
|
||||
<Compile Include="Routing\ContentFinderByNiceUrlWithDomainsTests.cs" />
|
||||
<Compile Include="Routing\DomainsAndCulturesTests.cs" />
|
||||
<Compile Include="Routing\NiceUrlsProviderWithDomainsTests.cs" />
|
||||
<Compile Include="Routing\SiteDomainHelperTests.cs" />
|
||||
<Compile Include="Routing\UrlsWithNestedDomains.cs" />
|
||||
<Compile Include="Services\TestWithSomeContentBase.cs" />
|
||||
@@ -451,10 +454,7 @@
|
||||
<Compile Include="Configurations\GlobalSettingsTests.cs" />
|
||||
<Compile Include="Routing\ContentFinderByAliasTests.cs" />
|
||||
<Compile Include="Routing\ContentFinderByIdTests.cs" />
|
||||
<Compile Include="Routing\ContentFinderByNiceUrlAndTemplateTests.cs" />
|
||||
<Compile Include="Routing\ContentFinderByNiceUrlTests.cs" />
|
||||
<Compile Include="Routing\ContentFinderByPageIdQueryTests.cs" />
|
||||
<Compile Include="Routing\NiceUrlProviderTests.cs" />
|
||||
<Compile Include="Routing\RenderRouteHandlerTests.cs" />
|
||||
<Compile Include="Routing\RouteTestExtensions.cs" />
|
||||
<Compile Include="TestHelpers\Stubs\TestControllerFactory.cs" />
|
||||
|
||||
@@ -343,7 +343,7 @@ namespace Umbraco.Web.Editors
|
||||
/// <returns></returns>
|
||||
public HttpResponseMessage GetNiceUrl(int id)
|
||||
{
|
||||
var url = Umbraco.NiceUrl(id);
|
||||
var url = Umbraco.Url(id);
|
||||
var response = Request.CreateResponse(HttpStatusCode.OK);
|
||||
response.Content = new StringContent(url, Encoding.UTF8, "application/json");
|
||||
return response;
|
||||
|
||||
@@ -73,7 +73,7 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
|
||||
{
|
||||
var content = helper.PublishedContent(udiAttempt.Result);
|
||||
if (content == null) break;
|
||||
a["link"] = helper.NiceUrl(content.Id);
|
||||
a["link"] = helper.Url(content.Id);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ namespace Umbraco.Web
|
||||
if (type == "internal")
|
||||
{
|
||||
var linkId = a.Value<int>("link");
|
||||
var link = umbracoHelper.NiceUrl(linkId);
|
||||
var link = umbracoHelper.Url(linkId);
|
||||
a["link"] = link;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -329,7 +329,7 @@ namespace Umbraco.Web.Search
|
||||
var intId = m.Id.TryConvertTo<int>();
|
||||
if (intId.Success)
|
||||
{
|
||||
m.AdditionalData["Url"] = umbracoHelper.NiceUrl(intId.Result);
|
||||
m.AdditionalData["Url"] = umbracoHelper.Url(intId.Result);
|
||||
}
|
||||
}
|
||||
return mapped;
|
||||
|
||||
@@ -331,19 +331,9 @@ namespace Umbraco.Web
|
||||
|
||||
#endregion
|
||||
|
||||
#region NiceUrls
|
||||
|
||||
/// <summary>
|
||||
/// Returns a string with a friendly url from a node.
|
||||
/// IE.: Instead of having /482 (id) as an url, you can have
|
||||
/// /screenshots/developer/macros (spoken url)
|
||||
/// </summary>
|
||||
/// <param name="nodeId">Identifier for the node that should be returned</param>
|
||||
/// <returns>String with a friendly url from a node</returns>
|
||||
public string NiceUrl(int nodeId)
|
||||
{
|
||||
return Url(nodeId);
|
||||
}
|
||||
#region Urls
|
||||
|
||||
//TODO: We will need an optional culture parameter, by default it will be the current thread culture
|
||||
|
||||
/// <summary>
|
||||
/// Gets the url of a content identified by its identifier.
|
||||
@@ -365,16 +355,8 @@ namespace Umbraco.Web
|
||||
{
|
||||
return UrlProvider.GetUrl(contentId, mode);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This method will always add the domain to the path if the hostnames are set up correctly.
|
||||
/// </summary>
|
||||
/// <param name="nodeId">Identifier for the node that should be returned</param>
|
||||
/// <returns>String with a friendly url with full domain from a node</returns>
|
||||
public string NiceUrlWithDomain(int nodeId)
|
||||
{
|
||||
return UrlAbsolute(nodeId);
|
||||
}
|
||||
|
||||
//TODO: We will need an optional culture parameter, by default it will be the current thread culture
|
||||
|
||||
/// <summary>
|
||||
/// Gets the absolute url of a content identified by its identifier.
|
||||
|
||||
@@ -127,7 +127,7 @@ namespace umbraco
|
||||
/// <returns>String with a friendly url from a node</returns>
|
||||
public static string NiceUrl(int nodeID)
|
||||
{
|
||||
return GetUmbracoHelper().NiceUrl(nodeID);
|
||||
return GetUmbracoHelper().Url(nodeID);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -137,7 +137,7 @@ namespace umbraco
|
||||
/// <returns>String with a friendly url with full domain from a node</returns>
|
||||
public static string NiceUrlWithDomain(int nodeId)
|
||||
{
|
||||
return GetUmbracoHelper().NiceUrlWithDomain(nodeId);
|
||||
return GetUmbracoHelper().UrlAbsolute(nodeId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user