From c6e1e7b3e5ee677a13e213ef7c99410988cc5934 Mon Sep 17 00:00:00 2001
From: Bjarke Berg
Date: Fri, 14 Feb 2020 13:04:49 +0100
Subject: [PATCH] Untangled UrlProvider from UmbracoContext
---
src/Umbraco.Abstractions/IUmbracoContext.cs | 5 -
.../Templates/HtmlImageSourceParser.cs | 10 +-
.../Templates/HtmlLocalLinkParser.cs | 12 +-
.../MultiUrlPickerPropertyEditor.cs | 7 +-
.../MultiUrlPickerValueEditor.cs | 10 +-
.../MultiUrlPickerValueConverter.cs | 7 +-
.../Cache/DistributedCacheBinderTests.cs | 6 +-
.../PublishedContentCacheTests.cs | 6 +-
.../PublishedContentSnapshotTestBase.cs | 6 +-
.../PublishedContentTestBase.cs | 6 +-
.../PublishedContent/PublishedContentTests.cs | 6 +-
.../Routing/GetContentUrlsTests.cs | 45 +++++-
.../Routing/MediaUrlProviderTests.cs | 39 +++--
src/Umbraco.Tests/Routing/UrlProviderTests.cs | 116 ++++++++------
.../Routing/UrlsProviderWithDomainsTests.cs | 146 ++++++++++--------
.../Routing/UrlsWithNestedDomains.cs | 34 +++-
.../Scoping/ScopedNuCacheTests.cs | 6 +-
.../Security/BackOfficeCookieManagerTests.cs | 13 +-
.../Templates/HtmlImageSourceParserTests.cs | 19 ++-
.../Templates/HtmlLocalLinkParserTests.cs | 17 +-
src/Umbraco.Tests/TestHelpers/BaseWebTest.cs | 5 +-
.../TestControllerActivatorBase.cs | 8 +-
src/Umbraco.Tests/TestHelpers/TestHelper.cs | 12 +-
.../TestHelpers/TestObjects-Mocks.cs | 9 +-
.../TestHelpers/TestWithDatabaseBase.cs | 8 +-
.../Objects/TestUmbracoContextFactory.cs | 15 +-
.../Testing/TestingTests/MockTests.cs | 15 +-
src/Umbraco.Tests/Testing/UmbracoTestBase.cs | 14 ++
.../AuthenticationControllerTests.cs | 5 +-
.../Web/Controllers/ContentControllerTests.cs | 21 ++-
.../Web/Controllers/UsersControllerTests.cs | 16 +-
...RenderIndexActionSelectorAttributeTests.cs | 24 +--
.../Web/Mvc/SurfaceControllerTests.cs | 24 +--
.../Web/Mvc/UmbracoViewPageTests.cs | 6 +-
.../Web/WebExtensionMethodTests.cs | 18 +--
src/Umbraco.Web/Composing/Current.cs | 1 +
.../Editors/AuthenticationController.cs | 18 ++-
.../BackOfficeNotificationsController.cs | 16 +-
src/Umbraco.Web/Editors/CodeFileController.cs | 6 +-
src/Umbraco.Web/Editors/ContentController.cs | 6 +-
.../Editors/ContentControllerBase.cs | 6 +-
.../Editors/ContentTypeController.cs | 18 ++-
.../Editors/ContentTypeControllerBase.cs | 19 ++-
.../Editors/CurrentUserController.cs | 6 +-
.../Editors/DashboardController.cs | 6 +-
src/Umbraco.Web/Editors/DataTypeController.cs | 18 ++-
.../Editors/DictionaryController.cs | 16 +-
src/Umbraco.Web/Editors/EntityController.cs | 8 +-
src/Umbraco.Web/Editors/LogController.cs | 6 +-
.../Editors/MacroRenderingController.cs | 7 +-
src/Umbraco.Web/Editors/MacrosController.cs | 6 +-
src/Umbraco.Web/Editors/MediaController.cs | 6 +-
.../Editors/MediaTypeController.cs | 18 ++-
src/Umbraco.Web/Editors/MemberController.cs | 6 +-
.../Editors/MemberTypeController.cs | 17 +-
src/Umbraco.Web/Editors/PackageController.cs | 6 +-
.../Editors/PackageInstallController.cs | 6 +-
.../Editors/RelationTypeController.cs | 6 +-
src/Umbraco.Web/Editors/SectionController.cs | 7 +-
src/Umbraco.Web/Editors/TemplateController.cs | 16 +-
.../Editors/TemplateQueryController.cs | 6 +-
src/Umbraco.Web/Editors/TinyMceController.cs | 6 +-
src/Umbraco.Web/Editors/TourController.cs | 6 +-
.../UmbracoAuthorizedJsonController.cs | 16 +-
src/Umbraco.Web/Editors/UsersController.cs | 6 +-
.../Models/Mapping/ContentMapDefinition.cs | 6 +-
.../Mapping/RedirectUrlMapDefinition.cs | 13 +-
.../Mvc/RedirectToUmbracoPageResult.cs | 41 ++---
src/Umbraco.Web/Mvc/SurfaceController.cs | 18 +--
.../Profiling/WebProfilingController.cs | 16 +-
.../RichTextPreValueController.cs | 18 ++-
src/Umbraco.Web/PublishedContentExtensions.cs | 2 +-
src/Umbraco.Web/PublishedElementExtensions.cs | 10 +-
src/Umbraco.Web/Routing/AliasUrlProvider.cs | 9 +-
.../Routing/DefaultMediaUrlProvider.cs | 8 +-
src/Umbraco.Web/Routing/DefaultUrlProvider.cs | 12 +-
src/Umbraco.Web/Routing/IMediaUrlProvider.cs | 3 +-
src/Umbraco.Web/Routing/IUrlProvider.cs | 6 +-
src/Umbraco.Web/Routing/PublishedRouter.cs | 12 +-
src/Umbraco.Web/Routing/UrlProvider.cs | 48 ++----
.../Routing/UrlProviderExtensions.cs | 13 +-
src/Umbraco.Web/Runtime/WebInitialComposer.cs | 1 +
.../Trees/ApplicationTreeController.cs | 5 +-
.../Trees/ContentTreeController.cs | 16 +-
.../Trees/ContentTreeControllerBase.cs | 14 +-
.../Trees/ContentTypeTreeController.cs | 15 +-
.../Trees/DataTypeTreeController.cs | 15 +-
src/Umbraco.Web/Trees/MediaTreeController.cs | 15 +-
.../Trees/MediaTypeTreeController.cs | 15 +-
.../Trees/TemplatesTreeController.cs | 15 +-
src/Umbraco.Web/Trees/TreeController.cs | 15 +-
src/Umbraco.Web/Trees/TreeControllerBase.cs | 15 +-
src/Umbraco.Web/UmbracoContext.cs | 25 +--
src/Umbraco.Web/UmbracoContextFactory.cs | 13 +-
.../WebApi/UmbracoApiController.cs | 5 +-
.../WebApi/UmbracoApiControllerBase.cs | 10 +-
.../WebApi/UmbracoAuthorizedApiController.cs | 5 +-
97 files changed, 934 insertions(+), 507 deletions(-)
diff --git a/src/Umbraco.Abstractions/IUmbracoContext.cs b/src/Umbraco.Abstractions/IUmbracoContext.cs
index b38a031f88..88dd7c2009 100644
--- a/src/Umbraco.Abstractions/IUmbracoContext.cs
+++ b/src/Umbraco.Abstractions/IUmbracoContext.cs
@@ -62,11 +62,6 @@ namespace Umbraco.Web
///
bool IsFrontEndUmbracoRequest { get; }
- ///
- /// Gets the url provider.
- ///
- IPublishedUrlProvider UrlProvider { get; }
-
///
/// Gets/sets the PublishedRequest object
///
diff --git a/src/Umbraco.Abstractions/Templates/HtmlImageSourceParser.cs b/src/Umbraco.Abstractions/Templates/HtmlImageSourceParser.cs
index 74333cf533..79d65e0829 100644
--- a/src/Umbraco.Abstractions/Templates/HtmlImageSourceParser.cs
+++ b/src/Umbraco.Abstractions/Templates/HtmlImageSourceParser.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Text.RegularExpressions;
using Umbraco.Core;
+using Umbraco.Web.Routing;
namespace Umbraco.Web.Templates
{
@@ -13,10 +14,11 @@ namespace Umbraco.Web.Templates
this._getMediaUrl = getMediaUrl;
}
- private readonly IUmbracoContextAccessor _umbracoContextAccessor;
- public HtmlImageSourceParser(IUmbracoContextAccessor umbracoContextAccessor)
+ private readonly IPublishedUrlProvider _publishedUrlProvider;
+
+ public HtmlImageSourceParser(IPublishedUrlProvider publishedUrlProvider)
{
- _umbracoContextAccessor = umbracoContextAccessor;
+ _publishedUrlProvider = publishedUrlProvider;
}
private static readonly Regex ResolveImgPattern = new Regex(@"(
]*src="")([^""\?]*)((?:\?[^""]*)?""[^>]*data-udi="")([^""]*)(""[^>]*>)",
@@ -54,7 +56,7 @@ namespace Umbraco.Web.Templates
public string EnsureImageSources(string text)
{
if(_getMediaUrl == null)
- _getMediaUrl = (guid) => _umbracoContextAccessor.UmbracoContext.UrlProvider.GetMediaUrl(guid);
+ _getMediaUrl = (guid) => _publishedUrlProvider.GetMediaUrl(guid);
return ResolveImgPattern.Replace(text, match =>
{
diff --git a/src/Umbraco.Abstractions/Templates/HtmlLocalLinkParser.cs b/src/Umbraco.Abstractions/Templates/HtmlLocalLinkParser.cs
index fd9177569a..3f62291ff1 100644
--- a/src/Umbraco.Abstractions/Templates/HtmlLocalLinkParser.cs
+++ b/src/Umbraco.Abstractions/Templates/HtmlLocalLinkParser.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Text.RegularExpressions;
using Umbraco.Core;
+using Umbraco.Web.Routing;
namespace Umbraco.Web.Templates
{
@@ -15,10 +16,12 @@ namespace Umbraco.Web.Templates
RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
private readonly IUmbracoContextAccessor _umbracoContextAccessor;
+ private readonly IPublishedUrlProvider _publishedUrlProvider;
- public HtmlLocalLinkParser(IUmbracoContextAccessor umbracoContextAccessor)
+ public HtmlLocalLinkParser(IUmbracoContextAccessor umbracoContextAccessor, IPublishedUrlProvider publishedUrlProvider)
{
_umbracoContextAccessor = umbracoContextAccessor;
+ _publishedUrlProvider = publishedUrlProvider;
}
internal IEnumerable FindUdisFromLocalLinks(string text)
@@ -61,7 +64,6 @@ namespace Umbraco.Web.Templates
if (_umbracoContextAccessor.UmbracoContext == null)
throw new InvalidOperationException("Could not parse internal links, there is no current UmbracoContext");
- var urlProvider = _umbracoContextAccessor.UmbracoContext.UrlProvider;
foreach((int? intId, GuidUdi udi, string tagValue) in FindLocalLinkIds(text))
{
@@ -69,9 +71,9 @@ namespace Umbraco.Web.Templates
{
var newLink = "#";
if (udi.EntityType == Constants.UdiEntityType.Document)
- newLink = urlProvider.GetUrl(udi.Guid);
+ newLink = _publishedUrlProvider.GetUrl(udi.Guid);
else if (udi.EntityType == Constants.UdiEntityType.Media)
- newLink = urlProvider.GetMediaUrl(udi.Guid);
+ newLink = _publishedUrlProvider.GetMediaUrl(udi.Guid);
if (newLink == null)
newLink = "#";
@@ -80,7 +82,7 @@ namespace Umbraco.Web.Templates
}
else if (intId.HasValue)
{
- var newLink = urlProvider.GetUrl(intId.Value);
+ var newLink = _publishedUrlProvider.GetUrl(intId.Value);
text = text.Replace(tagValue, "href=\"" + newLink);
}
}
diff --git a/src/Umbraco.Infrastructure/PropertyEditors/MultiUrlPickerPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/MultiUrlPickerPropertyEditor.cs
index 203003548f..1be4067763 100644
--- a/src/Umbraco.Infrastructure/PropertyEditors/MultiUrlPickerPropertyEditor.cs
+++ b/src/Umbraco.Infrastructure/PropertyEditors/MultiUrlPickerPropertyEditor.cs
@@ -6,6 +6,7 @@ using Umbraco.Core.Logging;
using Umbraco.Core.Services;
using Umbraco.Core.Strings;
using Umbraco.Web.PublishedCache;
+using Umbraco.Web.Routing;
namespace Umbraco.Web.PropertyEditors
{
@@ -23,18 +24,20 @@ namespace Umbraco.Web.PropertyEditors
private readonly IPublishedSnapshotAccessor _publishedSnapshotAccessor;
private readonly IIOHelper _ioHelper;
private readonly IUmbracoContextAccessor _umbracoContextAccessor;
+ private readonly IPublishedUrlProvider _publishedUrlProvider;
- public MultiUrlPickerPropertyEditor(ILogger logger, Lazy entityService, IPublishedSnapshotAccessor publishedSnapshotAccessor, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IIOHelper ioHelper, IShortStringHelper shortStringHelper, IUmbracoContextAccessor umbracoContextAccessor)
+ public MultiUrlPickerPropertyEditor(ILogger logger, Lazy entityService, IPublishedSnapshotAccessor publishedSnapshotAccessor, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IIOHelper ioHelper, IShortStringHelper shortStringHelper, IUmbracoContextAccessor umbracoContextAccessor, IPublishedUrlProvider publishedUrlProvider)
: base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper, EditorType.PropertyValue)
{
_entityService = entityService ?? throw new ArgumentNullException(nameof(entityService));
_publishedSnapshotAccessor = publishedSnapshotAccessor ?? throw new ArgumentNullException(nameof(publishedSnapshotAccessor));
_ioHelper = ioHelper;
_umbracoContextAccessor = umbracoContextAccessor;
+ _publishedUrlProvider = publishedUrlProvider;
}
protected override IConfigurationEditor CreateConfigurationEditor() => new MultiUrlPickerConfigurationEditor(_ioHelper);
- protected override IDataValueEditor CreateValueEditor() => new MultiUrlPickerValueEditor(_entityService.Value, _publishedSnapshotAccessor, Logger, DataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper, Attribute, _umbracoContextAccessor);
+ protected override IDataValueEditor CreateValueEditor() => new MultiUrlPickerValueEditor(_entityService.Value, _publishedSnapshotAccessor, Logger, DataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper, Attribute, _umbracoContextAccessor, _publishedUrlProvider);
}
}
diff --git a/src/Umbraco.Infrastructure/PropertyEditors/MultiUrlPickerValueEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/MultiUrlPickerValueEditor.cs
index f34a6a0139..f3d2255b6b 100644
--- a/src/Umbraco.Infrastructure/PropertyEditors/MultiUrlPickerValueEditor.cs
+++ b/src/Umbraco.Infrastructure/PropertyEditors/MultiUrlPickerValueEditor.cs
@@ -14,6 +14,8 @@ using Umbraco.Core.Strings;
using Umbraco.Web.Models.ContentEditing;
using Umbraco.Web.PublishedCache;
using Umbraco.Core;
+using Umbraco.Web.Routing;
+
namespace Umbraco.Web.PropertyEditors
{
public class MultiUrlPickerValueEditor : DataValueEditor, IDataValueReference
@@ -21,15 +23,17 @@ namespace Umbraco.Web.PropertyEditors
private readonly IEntityService _entityService;
private readonly ILogger _logger;
private readonly IUmbracoContextAccessor _umbracoContextAccessor;
+ private readonly IPublishedUrlProvider _publishedUrlProvider;
private readonly IPublishedSnapshotAccessor _publishedSnapshotAccessor;
- public MultiUrlPickerValueEditor(IEntityService entityService, IPublishedSnapshotAccessor publishedSnapshotAccessor, ILogger logger, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper, DataEditorAttribute attribute, IUmbracoContextAccessor umbracoContextAccessor)
+ public MultiUrlPickerValueEditor(IEntityService entityService, IPublishedSnapshotAccessor publishedSnapshotAccessor, ILogger logger, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper, DataEditorAttribute attribute, IUmbracoContextAccessor umbracoContextAccessor, IPublishedUrlProvider publishedUrlProvider)
: base(dataTypeService, localizationService, localizedTextService, shortStringHelper, attribute)
{
_entityService = entityService ?? throw new ArgumentNullException(nameof(entityService));
_publishedSnapshotAccessor = publishedSnapshotAccessor ?? throw new ArgumentNullException(nameof(publishedSnapshotAccessor));
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
_umbracoContextAccessor = umbracoContextAccessor ?? throw new ArgumentNullException(nameof(umbracoContextAccessor));
+ _publishedUrlProvider = publishedUrlProvider;
}
public override object ToEditor(IProperty property, string culture = null, string segment = null)
@@ -85,7 +89,7 @@ namespace Umbraco.Web.PropertyEditors
icon = documentEntity.ContentTypeIcon;
published = culture == null ? documentEntity.Published : documentEntity.PublishedCultures.Contains(culture);
udi = new GuidUdi(Constants.UdiEntityType.Document, documentEntity.Key);
- url = _publishedSnapshotAccessor.PublishedSnapshot.Content.GetById(entity.Key)?.Url(_umbracoContextAccessor.UmbracoContext.UrlProvider) ?? "#";
+ url = _publishedSnapshotAccessor.PublishedSnapshot.Content.GetById(entity.Key)?.Url(_publishedUrlProvider) ?? "#";
trashed = documentEntity.Trashed;
}
else if(entity is IContentEntitySlim contentEntity)
@@ -93,7 +97,7 @@ namespace Umbraco.Web.PropertyEditors
icon = contentEntity.ContentTypeIcon;
published = !contentEntity.Trashed;
udi = new GuidUdi(Constants.UdiEntityType.Media, contentEntity.Key);
- url = _publishedSnapshotAccessor.PublishedSnapshot.Media.GetById(entity.Key)?.Url(_umbracoContextAccessor.UmbracoContext.UrlProvider) ?? "#";
+ url = _publishedSnapshotAccessor.PublishedSnapshot.Media.GetById(entity.Key)?.Url(_publishedUrlProvider) ?? "#";
trashed = contentEntity.Trashed;
}
else
diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/MultiUrlPickerValueConverter.cs b/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/MultiUrlPickerValueConverter.cs
index c5b7e48057..72beb0106a 100644
--- a/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/MultiUrlPickerValueConverter.cs
+++ b/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/MultiUrlPickerValueConverter.cs
@@ -8,6 +8,7 @@ using Umbraco.Core.PropertyEditors;
using Umbraco.Core.Serialization;
using Umbraco.Web.Models;
using Umbraco.Web.PublishedCache;
+using Umbraco.Web.Routing;
namespace Umbraco.Web.PropertyEditors.ValueConverters
{
@@ -17,13 +18,15 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
private readonly IProfilingLogger _proflog;
private readonly IJsonSerializer _jsonSerializer;
private readonly IUmbracoContextAccessor _umbracoContextAccessor;
+ private readonly IPublishedUrlProvider _publishedUrlProvider;
- public MultiUrlPickerValueConverter(IPublishedSnapshotAccessor publishedSnapshotAccessor, IProfilingLogger proflog, IJsonSerializer jsonSerializer, IUmbracoContextAccessor umbracoContextAccessor)
+ public MultiUrlPickerValueConverter(IPublishedSnapshotAccessor publishedSnapshotAccessor, IProfilingLogger proflog, IJsonSerializer jsonSerializer, IUmbracoContextAccessor umbracoContextAccessor, IPublishedUrlProvider publishedUrlProvider)
{
_publishedSnapshotAccessor = publishedSnapshotAccessor ?? throw new ArgumentNullException(nameof(publishedSnapshotAccessor));
_proflog = proflog ?? throw new ArgumentNullException(nameof(proflog));
_jsonSerializer = jsonSerializer;
_umbracoContextAccessor = umbracoContextAccessor;
+ _publishedUrlProvider = publishedUrlProvider;
}
public override bool IsConverter(IPublishedPropertyType propertyType) => Constants.PropertyEditors.Aliases.MultiUrlPicker.Equals(propertyType.EditorAlias);
@@ -72,7 +75,7 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
{
continue;
}
- url = content.Url(_umbracoContextAccessor.UmbracoContext.UrlProvider);
+ url = content.Url(_publishedUrlProvider);
}
links.Add(
diff --git a/src/Umbraco.Tests/Cache/DistributedCacheBinderTests.cs b/src/Umbraco.Tests/Cache/DistributedCacheBinderTests.cs
index 8edef0faaa..e427961245 100644
--- a/src/Umbraco.Tests/Cache/DistributedCacheBinderTests.cs
+++ b/src/Umbraco.Tests/Cache/DistributedCacheBinderTests.cs
@@ -161,13 +161,11 @@ namespace Umbraco.Tests.Cache
Mock.Of(),
new TestVariationContextAccessor(),
new TestDefaultCultureAccessor(),
- TestObjects.GetUmbracoSettings(),
TestObjects.GetGlobalSettings(),
- new UrlProviderCollection(Enumerable.Empty()),
- new MediaUrlProviderCollection(Enumerable.Empty()),
Mock.Of(),
IOHelper,
- httpContextAccessor);
+ httpContextAccessor,
+ PublishedUrlProvider);
// just assert it does not throw
var refreshers = new DistributedCacheBinder(null, umbracoContextFactory, null);
diff --git a/src/Umbraco.Tests/Cache/PublishedCache/PublishedContentCacheTests.cs b/src/Umbraco.Tests/Cache/PublishedCache/PublishedContentCacheTests.cs
index 0178b416af..dbc4482687 100644
--- a/src/Umbraco.Tests/Cache/PublishedCache/PublishedContentCacheTests.cs
+++ b/src/Umbraco.Tests/Cache/PublishedCache/PublishedContentCacheTests.cs
@@ -80,12 +80,10 @@ namespace Umbraco.Tests.Cache.PublishedCache
httpContextAccessor,
publishedSnapshotService.Object,
new WebSecurity(httpContextAccessor, Mock.Of(), globalSettings, IOHelper),
- umbracoSettings,
- Enumerable.Empty(),
- Enumerable.Empty(),
globalSettings,
new TestVariationContextAccessor(),
- IOHelper);
+ IOHelper,
+ PublishedUrlProvider);
_cache = _umbracoContext.Content;
}
diff --git a/src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs b/src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs
index efc01856fd..fef97156c4 100644
--- a/src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs
+++ b/src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs
@@ -74,12 +74,10 @@ namespace Umbraco.Tests.PublishedContent
httpContextAccessor,
publishedSnapshotService.Object,
new WebSecurity(httpContextAccessor, Current.Services.UserService, globalSettings, IOHelper),
- TestObjects.GetUmbracoSettings(),
- Enumerable.Empty(),
- Enumerable.Empty(),
globalSettings,
new TestVariationContextAccessor(),
- IOHelper);
+ IOHelper,
+ PublishedUrlProvider);
return umbracoContext;
}
diff --git a/src/Umbraco.Tests/PublishedContent/PublishedContentTestBase.cs b/src/Umbraco.Tests/PublishedContent/PublishedContentTestBase.cs
index ee62bbe06f..fc184e8da0 100644
--- a/src/Umbraco.Tests/PublishedContent/PublishedContentTestBase.cs
+++ b/src/Umbraco.Tests/PublishedContent/PublishedContentTestBase.cs
@@ -15,6 +15,7 @@ using Umbraco.Core.Strings;
using Umbraco.Web;
using Umbraco.Web.Templates;
using Umbraco.Web.Models;
+using Umbraco.Web.Routing;
namespace Umbraco.Tests.PublishedContent
{
@@ -43,11 +44,12 @@ namespace Umbraco.Tests.PublishedContent
var converters = Factory.GetInstance();
var umbracoContextAccessor = Mock.Of();
+ var publishedUrlProvider = Mock.Of();
var logger = Mock.Of();
- var imageSourceParser = new HtmlImageSourceParser(umbracoContextAccessor);
+ var imageSourceParser = new HtmlImageSourceParser(publishedUrlProvider);
var pastedImages = new RichTextEditorPastedImages(umbracoContextAccessor, logger, IOHelper, Mock.Of(), Mock.Of(), Mock.Of(), ShortStringHelper);
- var localLinkParser = new HtmlLocalLinkParser(umbracoContextAccessor);
+ var localLinkParser = new HtmlLocalLinkParser(umbracoContextAccessor, publishedUrlProvider);
var dataTypeService = new TestObjects.TestDataTypeService(
new DataType(new RichTextPropertyEditor(
Mock.Of(),
diff --git a/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs b/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs
index 9a0527af2c..ecfcca0e0d 100644
--- a/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs
+++ b/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs
@@ -23,6 +23,7 @@ using Umbraco.Web.Models.PublishedContent;
using Umbraco.Web.PropertyEditors;
using Umbraco.Web.Templates;
using Umbraco.Web.Models;
+using Umbraco.Web.Routing;
using Current = Umbraco.Web.Composing.Current;
namespace Umbraco.Tests.PublishedContent
@@ -49,9 +50,10 @@ namespace Umbraco.Tests.PublishedContent
var mediaFileService = Mock.Of();
var contentTypeBaseServiceProvider = Mock.Of();
var umbracoContextAccessor = Mock.Of();
- var imageSourceParser = new HtmlImageSourceParser(umbracoContextAccessor);
+ var publishedUrlProvider = Mock.Of();
+ var imageSourceParser = new HtmlImageSourceParser(publishedUrlProvider);
var pastedImages = new RichTextEditorPastedImages(umbracoContextAccessor, logger, IOHelper, mediaService, contentTypeBaseServiceProvider, mediaFileService, ShortStringHelper);
- var linkParser = new HtmlLocalLinkParser(umbracoContextAccessor);
+ var linkParser = new HtmlLocalLinkParser(umbracoContextAccessor, publishedUrlProvider);
var localizationService = Mock.Of();
var dataTypeService = new TestObjects.TestDataTypeService(
diff --git a/src/Umbraco.Tests/Routing/GetContentUrlsTests.cs b/src/Umbraco.Tests/Routing/GetContentUrlsTests.cs
index d6bd61dc8a..3c85850460 100644
--- a/src/Umbraco.Tests/Routing/GetContentUrlsTests.cs
+++ b/src/Umbraco.Tests/Routing/GetContentUrlsTests.cs
@@ -1,4 +1,5 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using Moq;
@@ -6,8 +7,12 @@ using NUnit.Framework;
using Umbraco.Core;
using Umbraco.Web.Composing;
using Umbraco.Core.Models;
+using Umbraco.Core.Models.PublishedContent;
using Umbraco.Core.Services;
+using Umbraco.Tests.TestHelpers;
using Umbraco.Tests.TestHelpers.Entities;
+using Umbraco.Tests.Testing.Objects.Accessors;
+using Umbraco.Web;
using Umbraco.Web.Routing;
namespace Umbraco.Tests.Routing
@@ -54,7 +59,8 @@ namespace Umbraco.Tests.Routing
umbContext,
GetLangService("en-US", "fr-FR"), GetTextService(), ServiceContext.ContentService,
VariationContextAccessor,
- Logger).ToList();
+ Logger,
+ PublishedUrlProvider).ToList();
Assert.AreEqual(1, urls.Count);
Assert.AreEqual("content/itemNotPublished", urls[0].Text);
@@ -72,14 +78,25 @@ namespace Umbraco.Tests.Routing
var umbracoSettings = Current.Configs.Settings();
- var umbContext = GetUmbracoContext("http://localhost:8000",
- urlProviders: new []{ new DefaultUrlProvider(umbracoSettings.RequestHandler, Logger, TestObjects.GetGlobalSettings(), new SiteDomainHelper()) });
+ var umbContext = GetUmbracoContext("http://localhost:8000");
+ var umbracoContextAccessor = new TestUmbracoContextAccessor(umbContext);
+ var urlProvider = new DefaultUrlProvider(umbracoSettings.RequestHandler, Logger, TestObjects.GetGlobalSettings(), new SiteDomainHelper(), umbracoContextAccessor);
+ var publishedUrlProvider = new UrlProvider(
+ new Lazy(() => umbracoContextAccessor),
+ TestHelper.WebRoutingSection,
+ new UrlProviderCollection(new []{urlProvider}),
+ new MediaUrlProviderCollection(Enumerable.Empty()),
+ Mock.Of()
+ );
+
var publishedRouter = CreatePublishedRouter(Factory,
contentFinders:new ContentFinderCollection(new[]{new ContentFinderByUrl(Logger) }));
var urls = content.GetContentUrls(publishedRouter,
umbContext,
GetLangService("en-US", "fr-FR"), GetTextService(), ServiceContext.ContentService,
- VariationContextAccessor, Logger).ToList();
+ VariationContextAccessor,
+ Logger,
+ publishedUrlProvider).ToList();
Assert.AreEqual(1, urls.Count);
Assert.AreEqual("/home/", urls[0].Text);
@@ -104,14 +121,26 @@ namespace Umbraco.Tests.Routing
var umbracoSettings = Current.Configs.Settings();
- var umbContext = GetUmbracoContext("http://localhost:8000",
- urlProviders: new[] { new DefaultUrlProvider(umbracoSettings.RequestHandler, Logger, TestObjects.GetGlobalSettings(), new SiteDomainHelper()) });
+
+ var umbContext = GetUmbracoContext("http://localhost:8000");
+ var umbracoContextAccessor = new TestUmbracoContextAccessor(umbContext);
+ var urlProvider = new DefaultUrlProvider(umbracoSettings.RequestHandler, Logger, TestObjects.GetGlobalSettings(), new SiteDomainHelper(), umbracoContextAccessor);
+ var publishedUrlProvider = new UrlProvider(
+ new Lazy(() => umbracoContextAccessor),
+ TestHelper.WebRoutingSection,
+ new UrlProviderCollection(new []{urlProvider}),
+ new MediaUrlProviderCollection(Enumerable.Empty()),
+ Mock.Of()
+ );
+
var publishedRouter = CreatePublishedRouter(Factory,
contentFinders: new ContentFinderCollection(new[] { new ContentFinderByUrl(Logger) }));
var urls = child.GetContentUrls(publishedRouter,
umbContext,
GetLangService("en-US", "fr-FR"), GetTextService(), ServiceContext.ContentService,
- VariationContextAccessor, Logger).ToList();
+ VariationContextAccessor,
+ Logger,
+ publishedUrlProvider).ToList();
Assert.AreEqual(1, urls.Count);
Assert.AreEqual("/home/sub1/", urls[0].Text);
diff --git a/src/Umbraco.Tests/Routing/MediaUrlProviderTests.cs b/src/Umbraco.Tests/Routing/MediaUrlProviderTests.cs
index 78ff71678d..089670ab61 100644
--- a/src/Umbraco.Tests/Routing/MediaUrlProviderTests.cs
+++ b/src/Umbraco.Tests/Routing/MediaUrlProviderTests.cs
@@ -15,6 +15,8 @@ using Umbraco.Core.Services;
using Umbraco.Tests.PublishedContent;
using Umbraco.Tests.TestHelpers;
using Umbraco.Tests.Testing;
+using Umbraco.Tests.Testing.Objects.Accessors;
+using Umbraco.Web;
using Umbraco.Web.PropertyEditors;
using Umbraco.Web.Routing;
@@ -41,7 +43,7 @@ namespace Umbraco.Tests.Routing
new FileUploadPropertyEditor(logger, mediaFileSystemMock, contentSection, dataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper, umbracoSettingsSection),
new ImageCropperPropertyEditor(logger, mediaFileSystemMock, contentSection, dataTypeService, LocalizationService, IOHelper, ShortStringHelper, LocalizedTextService, umbracoSettingsSection),
}));
- _mediaUrlProvider = new DefaultMediaUrlProvider(propertyEditors);
+ _mediaUrlProvider = new DefaultMediaUrlProvider(new Lazy(() => propertyEditors));
}
public override void TearDown()
@@ -56,10 +58,10 @@ namespace Umbraco.Tests.Routing
{
const string expected = "/media/rfeiw584/test.jpg";
- var umbracoContext = GetUmbracoContext("/", mediaUrlProviders: new[] { _mediaUrlProvider });
+ var umbracoContext = GetUmbracoContext("/");
var publishedContent = CreatePublishedContent(Constants.PropertyEditors.Aliases.UploadField, expected, null);
- var resolvedUrl = umbracoContext.UrlProvider.GetMediaUrl(publishedContent, UrlMode.Auto);
+ var resolvedUrl = GetPublishedUrlProvider(umbracoContext).GetMediaUrl(publishedContent, UrlMode.Auto);
Assert.AreEqual(expected, resolvedUrl);
}
@@ -75,10 +77,10 @@ namespace Umbraco.Tests.Routing
Src = expected
});
- var umbracoContext = GetUmbracoContext("/", mediaUrlProviders: new[] { _mediaUrlProvider });
+ var umbracoContext = GetUmbracoContext("/");
var publishedContent = CreatePublishedContent(Constants.PropertyEditors.Aliases.ImageCropper, imageCropperValue, configuration);
- var resolvedUrl = umbracoContext.UrlProvider.GetMediaUrl(publishedContent, UrlMode.Auto);
+ var resolvedUrl = GetPublishedUrlProvider(umbracoContext).GetMediaUrl(publishedContent, UrlMode.Auto);
Assert.AreEqual(expected, resolvedUrl);
}
@@ -89,10 +91,10 @@ namespace Umbraco.Tests.Routing
const string mediaUrl = "/media/rfeiw584/test.jpg";
var expected = $"http://localhost{mediaUrl}";
- var umbracoContext = GetUmbracoContext("http://localhost", mediaUrlProviders: new[] { _mediaUrlProvider });
+ var umbracoContext = GetUmbracoContext("http://localhost");
var publishedContent = CreatePublishedContent(Constants.PropertyEditors.Aliases.UploadField, mediaUrl, null);
- var resolvedUrl = umbracoContext.UrlProvider.GetMediaUrl(publishedContent, UrlMode.Absolute);
+ var resolvedUrl = GetPublishedUrlProvider(umbracoContext).GetMediaUrl(publishedContent, UrlMode.Absolute);
Assert.AreEqual(expected, resolvedUrl);
}
@@ -102,10 +104,10 @@ namespace Umbraco.Tests.Routing
{
const string expected = "http://localhost/media/rfeiw584/test.jpg";
- var umbracoContext = GetUmbracoContext("http://localhost", mediaUrlProviders: new[] { _mediaUrlProvider });
+ var umbracoContext = GetUmbracoContext("http://localhost");
var publishedContent = CreatePublishedContent(Constants.PropertyEditors.Aliases.UploadField, expected, null);
- var resolvedUrl = umbracoContext.UrlProvider.GetMediaUrl(publishedContent, UrlMode.Relative);
+ var resolvedUrl = GetPublishedUrlProvider(umbracoContext).GetMediaUrl(publishedContent, UrlMode.Relative);
Assert.AreEqual(expected, resolvedUrl);
}
@@ -113,10 +115,10 @@ namespace Umbraco.Tests.Routing
[Test]
public void Get_Media_Url_Returns_Empty_String_When_PropertyType_Is_Not_Supported()
{
- var umbracoContext = GetUmbracoContext("/", mediaUrlProviders: new[] { _mediaUrlProvider });
+ var umbracoContext = GetUmbracoContext("/");
var publishedContent = CreatePublishedContent(Constants.PropertyEditors.Aliases.Boolean, "0", null);
- var resolvedUrl = umbracoContext.UrlProvider.GetMediaUrl(publishedContent, UrlMode.Absolute, propertyAlias: "test");
+ var resolvedUrl = GetPublishedUrlProvider(umbracoContext).GetMediaUrl(publishedContent, UrlMode.Absolute, propertyAlias: "test");
Assert.AreEqual(string.Empty, resolvedUrl);
}
@@ -124,7 +126,7 @@ namespace Umbraco.Tests.Routing
[Test]
public void Get_Media_Url_Can_Resolve_Variant_Property_Url()
{
- var umbracoContext = GetUmbracoContext("http://localhost", mediaUrlProviders: new[] { _mediaUrlProvider });
+ var umbracoContext = GetUmbracoContext("http://localhost");
var umbracoFilePropertyType = CreatePropertyType(Constants.PropertyEditors.Aliases.UploadField, null, ContentVariation.Culture);
@@ -143,10 +145,21 @@ namespace Umbraco.Tests.Routing
var contentType = new PublishedContentType(666, "alias", PublishedItemType.Content, Enumerable.Empty(), new [] { umbracoFilePropertyType }, ContentVariation.Culture);
var publishedContent = new SolidPublishedContent(contentType) {Properties = new[] {property}};
- var resolvedUrl = umbracoContext.UrlProvider.GetMediaUrl(publishedContent, UrlMode.Auto, "da");
+ var resolvedUrl = GetPublishedUrlProvider(umbracoContext).GetMediaUrl(publishedContent, UrlMode.Auto, "da");
Assert.AreEqual(daMediaUrl, resolvedUrl);
}
+ private IPublishedUrlProvider GetPublishedUrlProvider(IUmbracoContext umbracoContext)
+ {
+ return new UrlProvider(
+ new Lazy(() => new TestUmbracoContextAccessor(umbracoContext)),
+ TestHelper.WebRoutingSection,
+ new UrlProviderCollection(Enumerable.Empty()),
+ new MediaUrlProviderCollection(new []{_mediaUrlProvider}),
+ Mock.Of()
+ );
+ }
+
private static IPublishedContent CreatePublishedContent(string propertyEditorAlias, string propertyValue, object dataTypeConfiguration)
{
var umbracoFilePropertyType = CreatePropertyType(propertyEditorAlias, dataTypeConfiguration, ContentVariation.Nothing);
diff --git a/src/Umbraco.Tests/Routing/UrlProviderTests.cs b/src/Umbraco.Tests/Routing/UrlProviderTests.cs
index 1cecf74c3f..cdca1e49bf 100644
--- a/src/Umbraco.Tests/Routing/UrlProviderTests.cs
+++ b/src/Umbraco.Tests/Routing/UrlProviderTests.cs
@@ -13,6 +13,8 @@ using Umbraco.Tests.LegacyXmlPublishedCache;
using Umbraco.Tests.PublishedContent;
using Umbraco.Tests.TestHelpers;
using Umbraco.Tests.Testing;
+using Umbraco.Tests.Testing.Objects.Accessors;
+using Umbraco.Web;
using Umbraco.Web.PublishedCache;
using Umbraco.Web.Routing;
@@ -22,6 +24,8 @@ namespace Umbraco.Tests.Routing
[UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerFixture)]
public class UrlProviderTests : BaseWebTest
{
+ private IUmbracoContextAccessor UmbracoContextAccessor { get; } = new TestUmbracoContextAccessor();
+
protected override void Compose()
{
base.Compose();
@@ -46,11 +50,13 @@ namespace Umbraco.Tests.Routing
var umbracoSettings = Current.Configs.Settings();
- var umbracoContext = GetUmbracoContext("/test", 1111, urlProviders: new[]
- {
- new DefaultUrlProvider(umbracoSettings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
- }, globalSettings: globalSettings.Object);
+ var umbracoContext = GetUmbracoContext("/test", 1111, globalSettings: globalSettings.Object);
+ var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext);
+ var urlProvider = new DefaultUrlProvider(umbracoSettings.RequestHandler, Logger, globalSettings.Object,
+ new SiteDomainHelper(), umbracoContextAccessor);
+
+ var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider);
var requestHandlerMock = Mock.Get(umbracoSettings.RequestHandler);
requestHandlerMock.Setup(x => x.AddTrailingSlash).Returns(false);// (cached routes have none)
@@ -67,14 +73,14 @@ namespace Umbraco.Tests.Routing
foreach (var sample in samples)
{
- var result = umbracoContext.UrlProvider.GetUrl(sample.Key);
+ var result = publishedUrlProvider.GetUrl(sample.Key);
Assert.AreEqual(sample.Value, result);
}
var randomSample = new KeyValuePair(1177, "/home/sub1/custom-sub-1");
for (int i = 0; i < 5; i++)
{
- var result = umbracoContext.UrlProvider.GetUrl(randomSample.Key);
+ var result = publishedUrlProvider.GetUrl(randomSample.Key);
Assert.AreEqual(randomSample.Value, result);
}
@@ -93,6 +99,17 @@ namespace Umbraco.Tests.Routing
Assert.AreEqual(0, cachedIds.Count);
}
+ private IPublishedUrlProvider GetPublishedUrlProvider(IUmbracoContext umbracoContext, DefaultUrlProvider urlProvider)
+ {
+ return new UrlProvider(
+ new Lazy(() => new TestUmbracoContextAccessor(umbracoContext)),
+ TestHelper.WebRoutingSection,
+ new UrlProviderCollection(new []{urlProvider}),
+ new MediaUrlProviderCollection(Enumerable.Empty()),
+ Mock.Of()
+ );
+ }
+
// test hideTopLevelNodeFromPath false
[TestCase(1046, "/home/")]
[TestCase(1173, "/home/sub1/")]
@@ -109,13 +126,14 @@ namespace Umbraco.Tests.Routing
var umbracoSettings = Current.Configs.Settings();
- var umbracoContext = GetUmbracoContext("/test", 1111, urlProviders: new[]
- {
- new DefaultUrlProvider(umbracoSettings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
- }, globalSettings: globalSettings.Object);
+ var umbracoContext = GetUmbracoContext("/test", 1111, globalSettings: globalSettings.Object);
+ var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext);
+ var urlProvider = new DefaultUrlProvider(umbracoSettings.RequestHandler, Logger, globalSettings.Object,
+ new SiteDomainHelper(), umbracoContextAccessor);
+ var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider);
- var result = umbracoContext.UrlProvider.GetUrl(nodeId);
+ var result = publishedUrlProvider.GetUrl(nodeId);
Assert.AreEqual(niceUrlMatch, result);
}
@@ -137,13 +155,14 @@ namespace Umbraco.Tests.Routing
var umbracoSettings = Current.Configs.Settings();
- var umbracoContext = GetUmbracoContext("/test", 1111, urlProviders: new[]
- {
- new DefaultUrlProvider(umbracoSettings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
- }, globalSettings: globalSettings.Object);
+ var umbracoContext = GetUmbracoContext("/test", 1111, globalSettings: globalSettings.Object);
+ var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext);
+ var urlProvider = new DefaultUrlProvider(umbracoSettings.RequestHandler, Logger, globalSettings.Object,
+ new SiteDomainHelper(), umbracoContextAccessor);
+ var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider);
- var result = umbracoContext.UrlProvider.GetUrl(nodeId);
+ var result = publishedUrlProvider.GetUrl(nodeId);
Assert.AreEqual(niceUrlMatch, result);
}
@@ -177,15 +196,17 @@ namespace Umbraco.Tests.Routing
snapshotService.Setup(x => x.CreatePublishedSnapshot(It.IsAny()))
.Returns(snapshot);
- var umbracoContext = GetUmbracoContext(currentUri, umbracoSettings: umbracoSettings,
- urlProviders: new[] {
- new DefaultUrlProvider(umbracoSettings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
- },
+
+ var umbracoContext = GetUmbracoContext(currentUri,
globalSettings: globalSettings.Object,
snapshotService: snapshotService.Object);
+ var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext);
+ var urlProvider = new DefaultUrlProvider(umbracoSettings.RequestHandler, Logger, globalSettings.Object,
+ new SiteDomainHelper(), umbracoContextAccessor);
+ var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider);
//even though we are asking for a specific culture URL, there are no domains assigned so all that can be returned is a normal relative url.
- var url = umbracoContext.UrlProvider.GetUrl(1234, culture: "fr-FR");
+ var url = publishedUrlProvider.GetUrl(1234, culture: "fr-FR");
Assert.AreEqual("/home/test-fr/", url);
}
@@ -231,15 +252,17 @@ namespace Umbraco.Tests.Routing
snapshotService.Setup(x => x.CreatePublishedSnapshot(It.IsAny()))
.Returns(snapshot);
- var umbracoContext = GetUmbracoContext(currentUri, umbracoSettings: umbracoSettings,
- urlProviders: new[] {
- new DefaultUrlProvider(umbracoSettings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
- },
+
+ var umbracoContext = GetUmbracoContext(currentUri,
globalSettings: globalSettings.Object,
snapshotService: snapshotService.Object);
+ var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext);
+ var urlProvider = new DefaultUrlProvider(umbracoSettings.RequestHandler, Logger, globalSettings.Object,
+ new SiteDomainHelper(), umbracoContextAccessor);
+ var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider);
- var url = umbracoContext.UrlProvider.GetUrl(1234, culture: "fr-FR");
+ var url = publishedUrlProvider.GetUrl(1234, culture: "fr-FR");
Assert.AreEqual("/home/test-fr/", url);
}
@@ -285,15 +308,16 @@ namespace Umbraco.Tests.Routing
snapshotService.Setup(x => x.CreatePublishedSnapshot(It.IsAny()))
.Returns(snapshot);
- var umbracoContext = GetUmbracoContext(currentUri, umbracoSettings: umbracoSettings,
- urlProviders: new[] {
- new DefaultUrlProvider(umbracoSettings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
- },
+ var umbracoContext = GetUmbracoContext(currentUri,
globalSettings: globalSettings.Object,
snapshotService: snapshotService.Object);
+ var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext);
+ var urlProvider = new DefaultUrlProvider(umbracoSettings.RequestHandler, Logger, globalSettings.Object,
+ new SiteDomainHelper(), umbracoContextAccessor);
- var url = umbracoContext.UrlProvider.GetUrl(1234, culture: "fr-FR");
+ var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider);
+ var url = publishedUrlProvider.GetUrl(1234, culture: "fr-FR");
//the current uri is not the culture specific domain we want, so the result is an absolute path to the culture specific domain
Assert.AreEqual("http://example.fr/home/test-fr/", url);
@@ -307,15 +331,17 @@ namespace Umbraco.Tests.Routing
var umbracoSettings = Current.Configs.Settings();
- 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));
+ var umbracoContext = GetUmbracoContext("http://example.com/test", 1111, globalSettings: globalSettings.Object);
+ var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext);
+ var urlProvider = new DefaultUrlProvider(umbracoSettings.RequestHandler, Logger, globalSettings.Object,
+ new SiteDomainHelper(), umbracoContextAccessor);
+ var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider);
- umbracoContext.UrlProvider.Mode = UrlMode.Absolute;
- Assert.AreEqual("http://example.com/home/sub1/custom-sub-1/", umbracoContext.UrlProvider.GetUrl(1177));
+ Assert.AreEqual("/home/sub1/custom-sub-1/", publishedUrlProvider.GetUrl(1177));
+
+ publishedUrlProvider.Mode = UrlMode.Absolute;
+ Assert.AreEqual("http://example.com/home/sub1/custom-sub-1/", publishedUrlProvider.GetUrl(1177));
}
[Test]
@@ -326,18 +352,18 @@ namespace Umbraco.Tests.Routing
var umbracoSettings = Current.Configs.Settings();
- var umbracoContext = GetUmbracoContext("http://example.com/test", 1111, urlProviders: new[]
- {
- new DefaultUrlProvider(umbracoSettings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
- }, globalSettings: globalSettings.Object);
+ var urlProvider = new DefaultUrlProvider(umbracoSettings.RequestHandler, Logger, globalSettings.Object,
+ new SiteDomainHelper(), UmbracoContextAccessor);
+ var umbracoContext = GetUmbracoContext("http://example.com/test", 1111, globalSettings: globalSettings.Object);
+ var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider);
//mock the Umbraco settings that we need
- Assert.AreEqual("#", umbracoContext.UrlProvider.GetUrl(999999));
+ Assert.AreEqual("#", publishedUrlProvider.GetUrl(999999));
- umbracoContext.UrlProvider.Mode = UrlMode.Absolute;
+ publishedUrlProvider.Mode = UrlMode.Absolute;
- Assert.AreEqual("#", umbracoContext.UrlProvider.GetUrl(999999));
+ Assert.AreEqual("#", publishedUrlProvider.GetUrl(999999));
}
}
}
diff --git a/src/Umbraco.Tests/Routing/UrlsProviderWithDomainsTests.cs b/src/Umbraco.Tests/Routing/UrlsProviderWithDomainsTests.cs
index 0a34fb8041..96d3ebf785 100644
--- a/src/Umbraco.Tests/Routing/UrlsProviderWithDomainsTests.cs
+++ b/src/Umbraco.Tests/Routing/UrlsProviderWithDomainsTests.cs
@@ -4,13 +4,14 @@ using System.Linq;
using Moq;
using NUnit.Framework;
using Umbraco.Core;
-using Umbraco.Core.Composing;
using Umbraco.Core.Configuration;
using Umbraco.Core.Models;
using Umbraco.Core.Models.PublishedContent;
using Umbraco.Core.Services;
using Umbraco.Tests.LegacyXmlPublishedCache;
using Umbraco.Tests.TestHelpers;
+using Umbraco.Tests.Testing.Objects.Accessors;
+using Umbraco.Web;
using Umbraco.Web.Routing;
namespace Umbraco.Tests.Routing
@@ -18,6 +19,7 @@ namespace Umbraco.Tests.Routing
[TestFixture]
public class UrlsProviderWithDomainsTests : UrlRoutingTestBase
{
+ private IUmbracoContextAccessor UmbracoContextAccessor { get; } = new TestUmbracoContextAccessor();
protected override void Compose()
{
base.Compose();
@@ -181,16 +183,17 @@ namespace Umbraco.Tests.Routing
var globalSettings = Mock.Get(Factory.GetInstance()); //this will modify the IGlobalSettings instance stored in the container
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);
+ var umbracoContext = GetUmbracoContext("/test", 1111, globalSettings:globalSettings.Object);
+ var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext);
+ var urlProvider = new DefaultUrlProvider(settings.RequestHandler, Logger, globalSettings.Object,
+ new SiteDomainHelper(), umbracoContextAccessor);
+ var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider);
SetDomains1();
var currentUri = new Uri(currentUrl);
var mode = absolute ? UrlMode.Absolute : UrlMode.Auto;
- var result = umbracoContext.UrlProvider.GetUrl(nodeId, mode, current: currentUri);
+ var result = publishedUrlProvider.GetUrl(nodeId, mode, current: currentUri);
Assert.AreEqual(expected, result);
}
@@ -210,20 +213,21 @@ namespace Umbraco.Tests.Routing
public void Get_Url_SimpleWithSchemeAndPath(int nodeId, string currentUrl, bool absolute, string expected)
{
var settings = SettingsForTests.GenerateMockUmbracoSettings();
-
+
var globalSettings = Mock.Get(Factory.GetInstance()); //this will modify the IGlobalSettings instance stored in the container
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);
+ var umbracoContext = GetUmbracoContext("/test", 1111, globalSettings:globalSettings.Object);
+ var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext);
+ var urlProvider = new DefaultUrlProvider(settings.RequestHandler, Logger, globalSettings.Object,
+ new SiteDomainHelper(), umbracoContextAccessor);
+ var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider);
SetDomains2();
var currentUri = new Uri(currentUrl);
var mode = absolute ? UrlMode.Absolute : UrlMode.Auto;
- var result = umbracoContext.UrlProvider.GetUrl(nodeId, mode, current : currentUri);
+ var result = publishedUrlProvider.GetUrl(nodeId, mode, current : currentUri);
Assert.AreEqual(expected, result);
}
@@ -239,16 +243,17 @@ namespace Umbraco.Tests.Routing
var globalSettings = Mock.Get(Factory.GetInstance()); //this will modify the IGlobalSettings instance stored in the container
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);
+ var umbracoContext = GetUmbracoContext("/test", 1111, globalSettings:globalSettings.Object);
+ var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext);
+ var urlProvider = new DefaultUrlProvider(settings.RequestHandler, Logger, globalSettings.Object,
+ new SiteDomainHelper(), umbracoContextAccessor);
+ var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider);
SetDomains3();
var currentUri = new Uri(currentUrl);
var mode = absolute ? UrlMode.Absolute : UrlMode.Auto;
- var result = umbracoContext.UrlProvider.GetUrl(nodeId, mode, current : currentUri);
+ var result = publishedUrlProvider.GetUrl(nodeId, mode, current : currentUri);
Assert.AreEqual(expected, result);
}
@@ -266,20 +271,21 @@ namespace Umbraco.Tests.Routing
public void Get_Url_NestedDomains(int nodeId, string currentUrl, bool absolute, string expected)
{
var settings = SettingsForTests.GenerateMockUmbracoSettings();
-
+
var globalSettings = Mock.Get(Factory.GetInstance()); //this will modify the IGlobalSettings instance stored in the container
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);
+ var umbracoContext = GetUmbracoContext("/test", 1111, globalSettings:globalSettings.Object);
+ var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext);
+ var urlProvider = new DefaultUrlProvider(settings.RequestHandler, Logger, globalSettings.Object,
+ new SiteDomainHelper(), umbracoContextAccessor);
+ var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider);
SetDomains4();
var currentUri = new Uri(currentUrl);
var mode = absolute ? UrlMode.Absolute : UrlMode.Auto;
- var result = umbracoContext.UrlProvider.GetUrl(nodeId, mode, current : currentUri);
+ var result = publishedUrlProvider.GetUrl(nodeId, mode, current : currentUri);
Assert.AreEqual(expected, result);
}
@@ -287,29 +293,30 @@ namespace Umbraco.Tests.Routing
public void Get_Url_DomainsAndCache()
{
var settings = SettingsForTests.GenerateMockUmbracoSettings();
-
+
var globalSettings = Mock.Get(Factory.GetInstance()); //this will modify the IGlobalSettings instance stored in the container
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);
+ var umbracoContext = GetUmbracoContext("/test", 1111, globalSettings:globalSettings.Object);
+ var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext);
+ var urlProvider = new DefaultUrlProvider(settings.RequestHandler, Logger, globalSettings.Object,
+ new SiteDomainHelper(), umbracoContextAccessor);
+ var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider);
SetDomains4();
string ignore;
- ignore = umbracoContext.UrlProvider.GetUrl(1001, UrlMode.Auto, current: new Uri("http://domain1.com"));
- ignore = umbracoContext.UrlProvider.GetUrl(10011, UrlMode.Auto, current: new Uri("http://domain1.com"));
- ignore = umbracoContext.UrlProvider.GetUrl(100111, UrlMode.Auto, current: new Uri("http://domain1.com"));
- ignore = umbracoContext.UrlProvider.GetUrl(10012, UrlMode.Auto, current: new Uri("http://domain1.com"));
- ignore = umbracoContext.UrlProvider.GetUrl(100121, UrlMode.Auto, current: new Uri("http://domain1.com"));
- ignore = umbracoContext.UrlProvider.GetUrl(10013, UrlMode.Auto, current: new Uri("http://domain1.com"));
- ignore = umbracoContext.UrlProvider.GetUrl(1002, UrlMode.Auto, current: new Uri("http://domain1.com"));
- ignore = umbracoContext.UrlProvider.GetUrl(1001, UrlMode.Auto, current: new Uri("http://domain2.com"));
- ignore = umbracoContext.UrlProvider.GetUrl(10011, UrlMode.Auto, current: new Uri("http://domain2.com"));
- ignore = umbracoContext.UrlProvider.GetUrl(100111, UrlMode.Auto, current: new Uri("http://domain2.com"));
- ignore = umbracoContext.UrlProvider.GetUrl(1002, UrlMode.Auto, current: new Uri("http://domain2.com"));
+ ignore = publishedUrlProvider.GetUrl(1001, UrlMode.Auto, current: new Uri("http://domain1.com"));
+ ignore = publishedUrlProvider.GetUrl(10011, UrlMode.Auto, current: new Uri("http://domain1.com"));
+ ignore = publishedUrlProvider.GetUrl(100111, UrlMode.Auto, current: new Uri("http://domain1.com"));
+ ignore = publishedUrlProvider.GetUrl(10012, UrlMode.Auto, current: new Uri("http://domain1.com"));
+ ignore = publishedUrlProvider.GetUrl(100121, UrlMode.Auto, current: new Uri("http://domain1.com"));
+ ignore = publishedUrlProvider.GetUrl(10013, UrlMode.Auto, current: new Uri("http://domain1.com"));
+ ignore = publishedUrlProvider.GetUrl(1002, UrlMode.Auto, current: new Uri("http://domain1.com"));
+ ignore = publishedUrlProvider.GetUrl(1001, UrlMode.Auto, current: new Uri("http://domain2.com"));
+ ignore = publishedUrlProvider.GetUrl(10011, UrlMode.Auto, current: new Uri("http://domain2.com"));
+ ignore = publishedUrlProvider.GetUrl(100111, UrlMode.Auto, current: new Uri("http://domain2.com"));
+ ignore = publishedUrlProvider.GetUrl(1002, UrlMode.Auto, current: new Uri("http://domain2.com"));
var cache = umbracoContext.Content as PublishedContentCache;
if (cache == null) throw new Exception("Unsupported IPublishedContentCache, only the Xml one is supported.");
@@ -328,15 +335,15 @@ namespace Umbraco.Tests.Routing
CheckRoute(cachedRoutes, cachedIds, 1002, "/1002");
// use the cache
- Assert.AreEqual("/", umbracoContext.UrlProvider.GetUrl(1001, UrlMode.Auto, current: new Uri("http://domain1.com")));
- Assert.AreEqual("/en/", umbracoContext.UrlProvider.GetUrl(10011, UrlMode.Auto, current: new Uri("http://domain1.com")));
- Assert.AreEqual("/en/1001-1-1/", umbracoContext.UrlProvider.GetUrl(100111, UrlMode.Auto, current: new Uri("http://domain1.com")));
- Assert.AreEqual("/fr/", umbracoContext.UrlProvider.GetUrl(10012, UrlMode.Auto, current: new Uri("http://domain1.com")));
- Assert.AreEqual("/fr/1001-2-1/", umbracoContext.UrlProvider.GetUrl(100121, UrlMode.Auto, current: new Uri("http://domain1.com")));
- Assert.AreEqual("/1001-3/", umbracoContext.UrlProvider.GetUrl(10013, UrlMode.Auto, current: new Uri("http://domain1.com")));
- Assert.AreEqual("/1002/", umbracoContext.UrlProvider.GetUrl(1002, UrlMode.Auto, current: new Uri("http://domain1.com")));
+ Assert.AreEqual("/", publishedUrlProvider.GetUrl(1001, UrlMode.Auto, current: new Uri("http://domain1.com")));
+ Assert.AreEqual("/en/", publishedUrlProvider.GetUrl(10011, UrlMode.Auto, current: new Uri("http://domain1.com")));
+ Assert.AreEqual("/en/1001-1-1/", publishedUrlProvider.GetUrl(100111, UrlMode.Auto, current: new Uri("http://domain1.com")));
+ Assert.AreEqual("/fr/", publishedUrlProvider.GetUrl(10012, UrlMode.Auto, current: new Uri("http://domain1.com")));
+ Assert.AreEqual("/fr/1001-2-1/", publishedUrlProvider.GetUrl(100121, UrlMode.Auto, current: new Uri("http://domain1.com")));
+ Assert.AreEqual("/1001-3/", publishedUrlProvider.GetUrl(10013, UrlMode.Auto, current: new Uri("http://domain1.com")));
+ Assert.AreEqual("/1002/", publishedUrlProvider.GetUrl(1002, UrlMode.Auto, current: new Uri("http://domain1.com")));
- Assert.AreEqual("http://domain1.com/fr/1001-2-1/", umbracoContext.UrlProvider.GetUrl(100121, UrlMode.Auto, current: new Uri("http://domain2.com")));
+ Assert.AreEqual("http://domain1.com/fr/1001-2-1/", publishedUrlProvider.GetUrl(100121, UrlMode.Auto, current: new Uri("http://domain2.com")));
}
private static void CheckRoute(IDictionary routes, IDictionary ids, int id, string route)
@@ -350,24 +357,25 @@ namespace Umbraco.Tests.Routing
public void Get_Url_Relative_Or_Absolute()
{
var settings = SettingsForTests.GenerateMockUmbracoSettings();
-
+
var globalSettings = Mock.Get(Factory.GetInstance()); //this will modify the IGlobalSettings instance stored in the container
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);
+ var umbracoContext = GetUmbracoContext("http://domain1.com/test", 1111, globalSettings:globalSettings.Object);
+ var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext);
+ var urlProvider = new DefaultUrlProvider(settings.RequestHandler, Logger, globalSettings.Object,
+ new SiteDomainHelper(), umbracoContextAccessor);
+ var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider);
SetDomains4();
- Assert.AreEqual("/en/1001-1-1/", umbracoContext.UrlProvider.GetUrl(100111));
- Assert.AreEqual("http://domain3.com/en/1003-1-1/", umbracoContext.UrlProvider.GetUrl(100311));
+ Assert.AreEqual("/en/1001-1-1/", publishedUrlProvider.GetUrl(100111));
+ Assert.AreEqual("http://domain3.com/en/1003-1-1/", publishedUrlProvider.GetUrl(100311));
- umbracoContext.UrlProvider.Mode = UrlMode.Absolute;
+ publishedUrlProvider.Mode = UrlMode.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));
+ Assert.AreEqual("http://domain1.com/en/1001-1-1/", publishedUrlProvider.GetUrl(100111));
+ Assert.AreEqual("http://domain3.com/en/1003-1-1/", publishedUrlProvider.GetUrl(100311));
}
[Test]
@@ -378,17 +386,18 @@ namespace Umbraco.Tests.Routing
var globalSettings = Mock.Get(Factory.GetInstance()); //this will modify the IGlobalSettings instance stored in the container
globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); // ignored w/domains
- 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);
+ var umbracoContext = GetUmbracoContext("http://domain1.com/en/test", 1111, globalSettings:globalSettings.Object);
+ var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext);
+ var urlProvider = new DefaultUrlProvider(settings.RequestHandler, Logger, globalSettings.Object,
+ new SiteDomainHelper(), umbracoContextAccessor);
+ var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider);
SetDomains5();
- var url = umbracoContext.UrlProvider.GetUrl(100111, UrlMode.Absolute);
+ var url = publishedUrlProvider.GetUrl(100111, UrlMode.Absolute);
Assert.AreEqual("http://domain1.com/en/1001-1-1/", url);
- var result = umbracoContext.UrlProvider.GetOtherUrls(100111).ToArray();
+ var result = publishedUrlProvider.GetOtherUrls(100111).ToArray();
foreach (var x in result) Console.WriteLine(x);
@@ -396,5 +405,16 @@ namespace Umbraco.Tests.Routing
Assert.AreEqual(result[0].Text, "http://domain1b.com/en/1001-1-1/");
Assert.AreEqual(result[1].Text, "http://domain1a.com/en/1001-1-1/");
}
+
+ private IPublishedUrlProvider GetPublishedUrlProvider(IUmbracoContext umbracoContext, DefaultUrlProvider urlProvider)
+ {
+ return new UrlProvider(
+ new Lazy(() => new TestUmbracoContextAccessor(umbracoContext)),
+ TestHelper.WebRoutingSection,
+ new UrlProviderCollection(new []{urlProvider}),
+ new MediaUrlProviderCollection(Enumerable.Empty()),
+ Mock.Of()
+ );
+ }
}
}
diff --git a/src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs b/src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs
index 6587b2e4f6..40e9ac1c01 100644
--- a/src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs
+++ b/src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs
@@ -1,8 +1,8 @@
using System;
+using System.Linq;
using Moq;
using NUnit.Framework;
using Umbraco.Core;
-using Umbraco.Core.Composing;
using Umbraco.Core.Configuration;
using Umbraco.Core.Models;
using Umbraco.Core.Models.PublishedContent;
@@ -10,6 +10,8 @@ using Umbraco.Tests.TestHelpers;
using Umbraco.Web.Routing;
using Umbraco.Core.Services;
using Umbraco.Tests.LegacyXmlPublishedCache;
+using Umbraco.Tests.Testing.Objects.Accessors;
+using Umbraco.Web;
namespace Umbraco.Tests.Routing
{
@@ -41,11 +43,13 @@ namespace Umbraco.Tests.Routing
const string url = "http://domain1.com/1001-1/1001-1-1";
// get the nice url for 100111
- var umbracoContext = GetUmbracoContext(url, 9999, umbracoSettings: settings, urlProviders: new []
- {
- new DefaultUrlProvider(settings.RequestHandler, Logger, globalSettings.Object, new SiteDomainHelper())
- }, globalSettings:globalSettings.Object);
- Assert.AreEqual("http://domain2.com/1001-1-1/", umbracoContext.UrlProvider.GetUrl(100111, UrlMode.Absolute));
+ var umbracoContext = GetUmbracoContext(url, 9999, globalSettings:globalSettings.Object);
+ var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext);
+ var urlProvider = new DefaultUrlProvider(settings.RequestHandler, Logger, globalSettings.Object,
+ new SiteDomainHelper(), umbracoContextAccessor);
+ var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider);
+
+ Assert.AreEqual("http://domain2.com/1001-1-1/", publishedUrlProvider.GetUrl(100111, UrlMode.Absolute));
// check that the proper route has been cached
var cache = umbracoContext.Content as PublishedContentCache;
@@ -72,10 +76,15 @@ namespace Umbraco.Tests.Routing
//Assert.AreEqual("1001/1001-1/1001-1-1", cachedRoutes[100111]); // yes
// what's the nice url now?
- Assert.AreEqual("http://domain2.com/1001-1-1/", umbracoContext.UrlProvider.GetUrl(100111)); // good
+ Assert.AreEqual("http://domain2.com/1001-1-1/", publishedUrlProvider.GetUrl(100111)); // good
//Assert.AreEqual("http://domain1.com/1001-1/1001-1-1", routingContext.NiceUrlProvider.GetNiceUrl(100111, true)); // bad
}
+ private IPublishedUrlProvider GetPublishedUrlProvider(IUmbracoContext umbracoContext, object urlProvider)
+ {
+ throw new NotImplementedException();
+ }
+
void SetDomains1()
{
SetupDomainServiceMock(new[]
@@ -86,6 +95,17 @@ namespace Umbraco.Tests.Routing
}
+ private IPublishedUrlProvider GetPublishedUrlProvider(IUmbracoContext umbracoContext, DefaultUrlProvider urlProvider)
+ {
+ return new UrlProvider(
+ new Lazy(() => new TestUmbracoContextAccessor(umbracoContext)),
+ TestHelper.WebRoutingSection,
+ new UrlProviderCollection(new []{urlProvider}),
+ new MediaUrlProviderCollection(Enumerable.Empty()),
+ Mock.Of()
+ );
+ }
+
protected override string GetXmlContent(int templateId)
{
return @"
diff --git a/src/Umbraco.Tests/Scoping/ScopedNuCacheTests.cs b/src/Umbraco.Tests/Scoping/ScopedNuCacheTests.cs
index ac76b2ac2b..0bdeb1c3a9 100644
--- a/src/Umbraco.Tests/Scoping/ScopedNuCacheTests.cs
+++ b/src/Umbraco.Tests/Scoping/ScopedNuCacheTests.cs
@@ -123,12 +123,10 @@ namespace Umbraco.Tests.Scoping
httpContextAccessor,
service,
new WebSecurity(httpContextAccessor, Current.Services.UserService, globalSettings, IOHelper),
- umbracoSettings ?? SettingsForTests.GetDefaultUmbracoSettings(),
- urlProviders ?? Enumerable.Empty(),
- Enumerable.Empty(),
globalSettings,
new TestVariationContextAccessor(),
- IOHelper);
+ IOHelper,
+ PublishedUrlProvider);
if (setSingleton)
Umbraco.Web.Composing.Current.UmbracoContextAccessor.UmbracoContext = umbracoContext;
diff --git a/src/Umbraco.Tests/Security/BackOfficeCookieManagerTests.cs b/src/Umbraco.Tests/Security/BackOfficeCookieManagerTests.cs
index bd0443585c..81b62473a3 100644
--- a/src/Umbraco.Tests/Security/BackOfficeCookieManagerTests.cs
+++ b/src/Umbraco.Tests/Security/BackOfficeCookieManagerTests.cs
@@ -34,9 +34,10 @@ namespace Umbraco.Tests.Security
var umbracoContext = new UmbracoContext(
httpContextAccessor,
Mock.Of(),
- new WebSecurity(httpContextAccessor, Current.Services.UserService, globalSettings, IOHelper),
- TestObjects.GetUmbracoSettings(), new List(), Enumerable.Empty(), globalSettings,
- new TestVariationContextAccessor(), IOHelper);
+ new WebSecurity(httpContextAccessor, Current.Services.UserService, globalSettings, IOHelper), globalSettings,
+ new TestVariationContextAccessor(),
+ IOHelper,
+ PublishedUrlProvider);
var runtime = Mock.Of(x => x.Level == RuntimeLevel.Install);
var mgr = new BackOfficeCookieManager(
@@ -56,8 +57,10 @@ namespace Umbraco.Tests.Security
httpContextAccessor,
Mock.Of(),
new WebSecurity(httpContextAccessor, Current.Services.UserService, globalSettings, IOHelper),
- TestObjects.GetUmbracoSettings(), new List(), Enumerable.Empty(), globalSettings,
- new TestVariationContextAccessor(), IOHelper);
+ globalSettings,
+ new TestVariationContextAccessor(),
+ IOHelper,
+ PublishedUrlProvider);
var runtime = Mock.Of(x => x.Level == RuntimeLevel.Run);
var mgr = new BackOfficeCookieManager(Mock.Of(accessor => accessor.UmbracoContext == umbCtx), runtime, TestObjects.GetGlobalSettings(), IOHelper, AppCaches.RequestCache);
diff --git a/src/Umbraco.Tests/Templates/HtmlImageSourceParserTests.cs b/src/Umbraco.Tests/Templates/HtmlImageSourceParserTests.cs
index 23dde26069..68d92268da 100644
--- a/src/Umbraco.Tests/Templates/HtmlImageSourceParserTests.cs
+++ b/src/Umbraco.Tests/Templates/HtmlImageSourceParserTests.cs
@@ -13,6 +13,7 @@ using System.Linq;
using Umbraco.Core.Models;
using Umbraco.Core;
using System.Diagnostics;
+using Umbraco.Tests.TestHelpers;
namespace Umbraco.Tests.Templates
{
@@ -28,8 +29,7 @@ namespace Umbraco.Tests.Templates

";
- var umbracoContextAccessor = new TestUmbracoContextAccessor();
- var imageSourceParser = new HtmlImageSourceParser(umbracoContextAccessor);
+ var imageSourceParser = new HtmlImageSourceParser(Mock.Of());
var result = imageSourceParser.FindUdisFromDataAttributes(input).ToList();
Assert.AreEqual(2, result.Count);
@@ -40,8 +40,7 @@ namespace Umbraco.Tests.Templates
[Test]
public void Remove_Image_Sources()
{
- var umbracoContextAccessor = new TestUmbracoContextAccessor();
- var imageSourceParser = new HtmlImageSourceParser(umbracoContextAccessor);
+ var imageSourceParser = new HtmlImageSourceParser(Mock.Of());
var result = imageSourceParser.RemoveImageSources(@"
@@ -69,21 +68,27 @@ namespace Umbraco.Tests.Templates
var media = new Mock
();
media.Setup(x => x.ContentType).Returns(mediaType);
var mediaUrlProvider = new Mock();
- mediaUrlProvider.Setup(x => x.GetMediaUrl(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
+ mediaUrlProvider.Setup(x => x.GetMediaUrl(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
.Returns(UrlInfo.Url("/media/1001/my-image.jpg"));
var umbracoContextAccessor = new TestUmbracoContextAccessor();
var umbracoContextFactory = TestUmbracoContextFactory.Create(
- mediaUrlProvider: mediaUrlProvider.Object,
umbracoContextAccessor: umbracoContextAccessor);
+
+ var publishedUrlProvider = new UrlProvider(new Lazy(() => umbracoContextAccessor),
+ TestHelper.WebRoutingSection,
+ new UrlProviderCollection(Enumerable.Empty()),
+ new MediaUrlProviderCollection(new []{mediaUrlProvider.Object}),
+ Mock.Of()
+ );
using (var reference = umbracoContextFactory.EnsureUmbracoContext())
{
var mediaCache = Mock.Get(reference.UmbracoContext.Media);
mediaCache.Setup(x => x.GetById(It.IsAny())).Returns(media.Object);
- var imageSourceParser = new HtmlImageSourceParser(umbracoContextAccessor);
+ var imageSourceParser = new HtmlImageSourceParser(publishedUrlProvider);
var result = imageSourceParser.EnsureImageSources(@"
diff --git a/src/Umbraco.Tests/Templates/HtmlLocalLinkParserTests.cs b/src/Umbraco.Tests/Templates/HtmlLocalLinkParserTests.cs
index f5e32711bc..15e6ee9da8 100644
--- a/src/Umbraco.Tests/Templates/HtmlLocalLinkParserTests.cs
+++ b/src/Umbraco.Tests/Templates/HtmlLocalLinkParserTests.cs
@@ -6,6 +6,7 @@ using System.Web;
using Umbraco.Core;
using Umbraco.Core.Models;
using Umbraco.Core.Models.PublishedContent;
+using Umbraco.Tests.TestHelpers;
using Umbraco.Tests.Testing.Objects;
using Umbraco.Tests.Testing.Objects.Accessors;
using Umbraco.Web;
@@ -30,7 +31,7 @@ namespace Umbraco.Tests.Templates
";
var umbracoContextAccessor = new TestUmbracoContextAccessor();
- var parser = new HtmlLocalLinkParser(umbracoContextAccessor);
+ var parser = new HtmlLocalLinkParser(umbracoContextAccessor, Mock.Of
());
var result = parser.FindUdisFromLocalLinks(input).ToList();
@@ -52,7 +53,7 @@ namespace Umbraco.Tests.Templates
//setup a mock url provider which we'll use for testing
var contentUrlProvider = new Mock();
contentUrlProvider
- .Setup(x => x.GetUrl(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
+ .Setup(x => x.GetUrl( It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
.Returns(UrlInfo.Url("/my-test-url"));
var contentType = new PublishedContentType(666, "alias", PublishedItemType.Content, Enumerable.Empty(), Enumerable.Empty(), ContentVariation.Nothing);
var publishedContent = new Mock();
@@ -63,16 +64,20 @@ namespace Umbraco.Tests.Templates
var media = new Mock();
media.Setup(x => x.ContentType).Returns(mediaType);
var mediaUrlProvider = new Mock();
- mediaUrlProvider.Setup(x => x.GetMediaUrl(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
+ mediaUrlProvider.Setup(x => x.GetMediaUrl(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
.Returns(UrlInfo.Url("/media/1001/my-image.jpg"));
var umbracoContextAccessor = new TestUmbracoContextAccessor();
var umbracoContextFactory = TestUmbracoContextFactory.Create(
- urlProvider: contentUrlProvider.Object,
- mediaUrlProvider: mediaUrlProvider.Object,
umbracoContextAccessor: umbracoContextAccessor);
+ var publishedUrlProvider = new UrlProvider(new Lazy(() => umbracoContextAccessor),
+ TestHelper.WebRoutingSection,
+ new UrlProviderCollection(new []{contentUrlProvider.Object}),
+ new MediaUrlProviderCollection(new []{mediaUrlProvider.Object}),
+ Mock.Of()
+ );
using (var reference = umbracoContextFactory.EnsureUmbracoContext())
{
var contentCache = Mock.Get(reference.UmbracoContext.Content);
@@ -83,7 +88,7 @@ namespace Umbraco.Tests.Templates
mediaCache.Setup(x => x.GetById(It.IsAny())).Returns(media.Object);
mediaCache.Setup(x => x.GetById(It.IsAny())).Returns(media.Object);
- var linkParser = new HtmlLocalLinkParser(umbracoContextAccessor);
+ var linkParser = new HtmlLocalLinkParser(umbracoContextAccessor, publishedUrlProvider);
var output = linkParser.EnsureInternalLinks(input);
diff --git a/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs b/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs
index 06879c1647..e8b4a993c4 100644
--- a/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs
+++ b/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs
@@ -100,8 +100,9 @@ namespace Umbraco.Tests.TestHelpers
container?.TryGetInstance() ?? ServiceContext.CreatePartial(),
new ProfilingLogger(Mock.Of(), Mock.Of()),
container?.TryGetInstance() ?? Current.Factory.GetInstance(),
- Mock.Of(),
- Mock.Of());
+ Mock.Of(),
+ Mock.Of()
+ );
}
}
}
diff --git a/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestControllerActivatorBase.cs b/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestControllerActivatorBase.cs
index 442f50aa3a..5cb57d82c0 100644
--- a/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestControllerActivatorBase.cs
+++ b/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestControllerActivatorBase.cs
@@ -141,18 +141,16 @@ namespace Umbraco.Tests.TestHelpers.ControllerTesting
var umbCtx = new UmbracoContext(httpContextAccessor,
publishedSnapshotService.Object,
webSecurity.Object,
- Mock.Of(section => section.WebRouting == Mock.Of(routingSection => routingSection.UrlProviderMode == "Auto")),
- Enumerable.Empty(),
- Enumerable.Empty(),
globalSettings,
new TestVariationContextAccessor(),
- TestHelper.IOHelper);
+ TestHelper.IOHelper,
+ Mock.Of());
//replace it
umbracoContextAccessor.UmbracoContext = umbCtx;
var urlHelper = new Mock();
- urlHelper.Setup(provider => provider.GetUrl(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
+ urlHelper.Setup(provider => provider.GetUrl(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
.Returns(UrlInfo.Url("/hello/world/1234"));
var membershipHelper = new MembershipHelper(httpContext, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), AppCaches.Disabled, Mock.Of(), new MockShortStringHelper(), Mock.Of());
diff --git a/src/Umbraco.Tests/TestHelpers/TestHelper.cs b/src/Umbraco.Tests/TestHelpers/TestHelper.cs
index 5fa87fe661..5dc8ba2a11 100644
--- a/src/Umbraco.Tests/TestHelpers/TestHelper.cs
+++ b/src/Umbraco.Tests/TestHelpers/TestHelper.cs
@@ -32,6 +32,7 @@ using Umbraco.Net;
using Umbraco.Tests.Testing.Objects.Accessors;
using Umbraco.Web;
using Umbraco.Web.Hosting;
+using Umbraco.Web.Routing;
using File = System.IO.File;
namespace Umbraco.Tests.TestHelpers
@@ -101,6 +102,8 @@ namespace Umbraco.Tests.TestHelpers
public static IIOHelper IOHelper { get; } = new IOHelper(GetHostingEnvironment());
public static IMainDom MainDom { get; } = new MainDom(Mock.Of(), GetHostingEnvironment(), new MainDomSemaphoreLock(Mock.Of(), GetHostingEnvironment()));
+ public static IWebRoutingSection WebRoutingSection => SettingsForTests.GetDefaultUmbracoSettings().WebRouting;
+
///
/// Maps the given making it rooted on . must start with ~/
///
@@ -353,7 +356,7 @@ namespace Umbraco.Tests.TestHelpers
httpContextMock.Setup(x => x.DisposeOnPipelineCompleted(It.IsAny()))
.Returns(Mock.Of());
-
+
httpContextBase = httpContextMock.Object;
}
@@ -363,5 +366,12 @@ namespace Umbraco.Tests.TestHelpers
return mock.Object;
}
+
+ public static IPublishedUrlProvider GetPublishedUrlProvider()
+ {
+ var mock = new Mock();
+
+ return mock.Object;
+ }
}
}
diff --git a/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs b/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs
index 776a0f94a4..e6846d0ec0 100644
--- a/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs
+++ b/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs
@@ -119,10 +119,7 @@ namespace Umbraco.Tests.TestHelpers
publishedSnapshotServiceMock.Setup(x => x.CreatePublishedSnapshot(It.IsAny())).Returns(publishedSnapshot);
var publishedSnapshotService = publishedSnapshotServiceMock.Object;
- var umbracoSettings = GetUmbracoSettings();
var globalSettings = GetGlobalSettings();
- var urlProviders = new UrlProviderCollection(Enumerable.Empty());
- var mediaUrlProviders = new MediaUrlProviderCollection(Enumerable.Empty());
if (accessor == null) accessor = new TestUmbracoContextAccessor();
@@ -133,13 +130,11 @@ namespace Umbraco.Tests.TestHelpers
publishedSnapshotService,
new TestVariationContextAccessor(),
new TestDefaultCultureAccessor(),
- umbracoSettings,
globalSettings,
- urlProviders,
- mediaUrlProviders,
Mock.Of(),
TestHelper.IOHelper,
- httpContextAccessor);
+ httpContextAccessor,
+ Mock.Of());
return umbracoContextFactory.EnsureUmbracoContext().UmbracoContext;
}
diff --git a/src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs b/src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs
index 450128c29f..f427cb83c2 100644
--- a/src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs
+++ b/src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs
@@ -354,7 +354,7 @@ namespace Umbraco.Tests.TestHelpers
}
}
- protected IUmbracoContext GetUmbracoContext(string url, int templateId = 1234, RouteData routeData = null, bool setSingleton = false, IUmbracoSettingsSection umbracoSettings = null, IEnumerable urlProviders = null, IEnumerable mediaUrlProviders = null, IGlobalSettings globalSettings = null, IPublishedSnapshotService snapshotService = null)
+ protected IUmbracoContext GetUmbracoContext(string url, int templateId = 1234, RouteData routeData = null, bool setSingleton = false, IGlobalSettings globalSettings = null, IPublishedSnapshotService snapshotService = null)
{
// ensure we have a PublishedCachesService
var service = snapshotService ?? PublishedSnapshotService as XmlPublishedSnapshotService;
@@ -379,12 +379,10 @@ namespace Umbraco.Tests.TestHelpers
service,
new WebSecurity(httpContextAccessor, Factory.GetInstance(),
Factory.GetInstance(), IOHelper),
- umbracoSettings ?? Factory.GetInstance(),
- urlProviders ?? Enumerable.Empty(),
- mediaUrlProviders ?? Enumerable.Empty(),
globalSettings ?? Factory.GetInstance(),
new TestVariationContextAccessor(),
- IOHelper);
+ IOHelper,
+ PublishedUrlProvider);
if (setSingleton)
Umbraco.Web.Composing.Current.UmbracoContextAccessor.UmbracoContext = umbracoContext;
diff --git a/src/Umbraco.Tests/Testing/Objects/TestUmbracoContextFactory.cs b/src/Umbraco.Tests/Testing/Objects/TestUmbracoContextFactory.cs
index 816409b1cc..1fd24a0e5c 100644
--- a/src/Umbraco.Tests/Testing/Objects/TestUmbracoContextFactory.cs
+++ b/src/Umbraco.Tests/Testing/Objects/TestUmbracoContextFactory.cs
@@ -16,16 +16,15 @@ namespace Umbraco.Tests.Testing.Objects
///
public class TestUmbracoContextFactory
{
- public static IUmbracoContextFactory Create(IGlobalSettings globalSettings = null, IUrlProvider urlProvider = null,
- IMediaUrlProvider mediaUrlProvider = null,
+ public static IUmbracoContextFactory Create(IGlobalSettings globalSettings = null,
IUmbracoContextAccessor umbracoContextAccessor = null,
- IHttpContextAccessor httpContextAccessor = null)
+ IHttpContextAccessor httpContextAccessor = null,
+ IPublishedUrlProvider publishedUrlProvider = null)
{
if (globalSettings == null) globalSettings = SettingsForTests.GenerateMockGlobalSettings();
- if (urlProvider == null) urlProvider = Mock.Of();
- if (mediaUrlProvider == null) mediaUrlProvider = Mock.Of();
if (umbracoContextAccessor == null) umbracoContextAccessor = new TestUmbracoContextAccessor();
if (httpContextAccessor == null) httpContextAccessor = TestHelper.GetHttpContextAccessor();
+ if (publishedUrlProvider == null) publishedUrlProvider = TestHelper.GetPublishedUrlProvider();
var contentCache = new Mock();
var mediaCache = new Mock();
@@ -42,13 +41,11 @@ namespace Umbraco.Tests.Testing.Objects
snapshotService.Object,
new TestVariationContextAccessor(),
new TestDefaultCultureAccessor(),
- Mock.Of(section => section.WebRouting == Mock.Of(routingSection => routingSection.UrlProviderMode == "Auto")),
globalSettings,
- new UrlProviderCollection(new[] { urlProvider }),
- new MediaUrlProviderCollection(new[] { mediaUrlProvider }),
Mock.Of(),
TestHelper.IOHelper,
- httpContextAccessor);
+ httpContextAccessor,
+ publishedUrlProvider);
return umbracoContextFactory;
}
diff --git a/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs b/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs
index 33a5fca070..fdea605419 100644
--- a/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs
+++ b/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs
@@ -79,12 +79,18 @@ namespace Umbraco.Tests.Testing.TestingTests
{
var umbracoContext = TestObjects.GetUmbracoContextMock();
+
var urlProviderMock = new Mock();
- urlProviderMock.Setup(provider => provider.GetUrl(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
+ urlProviderMock.Setup(provider => provider.GetUrl(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
.Returns(UrlInfo.Url("/hello/world/1234"));
var urlProvider = urlProviderMock.Object;
- var theUrlProvider = new UrlProvider(umbracoContext, new [] { urlProvider }, Enumerable.Empty(), umbracoContext.VariationContextAccessor);
+ var theUrlProvider = new UrlProvider(
+ new Lazy(() => new TestUmbracoContextAccessor(umbracoContext)),
+ TestHelper.WebRoutingSection,
+ new UrlProviderCollection(new [] { urlProvider }),
+ new MediaUrlProviderCollection( Enumerable.Empty())
+ , umbracoContext.VariationContextAccessor);
var contentType = new PublishedContentType(666, "alias", PublishedItemType.Content, Enumerable.Empty(), Enumerable.Empty(), ContentVariation.Nothing);
var publishedContent = Mock.Of();
@@ -104,7 +110,7 @@ namespace Umbraco.Tests.Testing.TestingTests
var umbracoHelper = new UmbracoHelper(Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), membershipHelper);
var umbracoMapper = new UmbracoMapper(new MapDefinitionCollection(new[] { Mock.Of() }));
- var umbracoApiController = new FakeUmbracoApiController(Mock.Of(), Mock.Of(), Mock.Of(), ServiceContext.CreatePartial(), AppCaches.NoCache, logger, Mock.Of(), umbracoHelper, umbracoMapper);
+ var umbracoApiController = new FakeUmbracoApiController(Mock.Of(), Mock.Of(), Mock.Of(), ServiceContext.CreatePartial(), AppCaches.NoCache, logger, Mock.Of(), umbracoHelper, umbracoMapper, Mock.Of());
Assert.Pass();
}
@@ -112,6 +118,7 @@ namespace Umbraco.Tests.Testing.TestingTests
internal class FakeUmbracoApiController : UmbracoApiController
{
- public FakeUmbracoApiController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper, UmbracoMapper umbracoMapper) : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper, umbracoMapper) { }
+ public FakeUmbracoApiController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper, UmbracoMapper umbracoMapper, IPublishedUrlProvider publishedUrlProvider)
+ : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper, umbracoMapper, publishedUrlProvider) { }
}
}
diff --git a/src/Umbraco.Tests/Testing/UmbracoTestBase.cs b/src/Umbraco.Tests/Testing/UmbracoTestBase.cs
index 481beb37f3..ba18d136f3 100644
--- a/src/Umbraco.Tests/Testing/UmbracoTestBase.cs
+++ b/src/Umbraco.Tests/Testing/UmbracoTestBase.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Globalization;
using System.IO;
+using System.Linq;
using System.Reflection;
using System.Web.Routing;
using System.Xml.Linq;
@@ -114,6 +115,7 @@ namespace Umbraco.Tests.Testing
protected IJsonSerializer JsonNetSerializer { get; } = new JsonNetSerializer();
protected IIOHelper IOHelper { get; private set; }
+ protected IPublishedUrlProvider PublishedUrlProvider => Factory.GetInstance();
protected IDataTypeService DataTypeService => Factory.GetInstance();
protected IPasswordHasher PasswordHasher => Factory.GetInstance();
protected Lazy PropertyEditorCollection => new Lazy(() => Factory.GetInstance());
@@ -298,6 +300,18 @@ namespace Umbraco.Tests.Testing
Composition.RegisterUnique();
Composition.RegisterUnique();
Composition.RegisterUnique();
+ Composition.RegisterUnique(factory =>
+ new UrlProvider(
+ new Lazy(() => factory.GetInstance()),
+ TestObjects.GetUmbracoSettings().WebRouting,
+ new UrlProviderCollection(Enumerable.Empty()),
+ new MediaUrlProviderCollection(Enumerable.Empty()),
+ factory.GetInstance()
+
+ ));
+
+
+
}
protected virtual void ComposeMisc()
diff --git a/src/Umbraco.Tests/Web/Controllers/AuthenticationControllerTests.cs b/src/Umbraco.Tests/Web/Controllers/AuthenticationControllerTests.cs
index 7753b0495f..2c75b9070d 100644
--- a/src/Umbraco.Tests/Web/Controllers/AuthenticationControllerTests.cs
+++ b/src/Umbraco.Tests/Web/Controllers/AuthenticationControllerTests.cs
@@ -34,6 +34,7 @@ using Umbraco.Web.Models.ContentEditing;
using IUser = Umbraco.Core.Models.Membership.IUser;
using Umbraco.Core.Configuration.UmbracoSettings;
using Umbraco.Core.IO;
+using Umbraco.Web.Routing;
namespace Umbraco.Tests.Web.Controllers
{
@@ -89,7 +90,9 @@ namespace Umbraco.Tests.Web.Controllers
helper,
Factory.GetInstance(),
Factory.GetInstance(),
- Factory.GetInstance());
+ Factory.GetInstance(),
+ Factory.GetInstance()
+ );
return usersController;
}
diff --git a/src/Umbraco.Tests/Web/Controllers/ContentControllerTests.cs b/src/Umbraco.Tests/Web/Controllers/ContentControllerTests.cs
index 75960a93cf..778819c742 100644
--- a/src/Umbraco.Tests/Web/Controllers/ContentControllerTests.cs
+++ b/src/Umbraco.Tests/Web/Controllers/ContentControllerTests.cs
@@ -35,6 +35,7 @@ using Umbraco.Web.WebApi;
using Umbraco.Web.Composing;
using Task = System.Threading.Tasks.Task;
using Umbraco.Core.Mapping;
+using Umbraco.Web.Routing;
namespace Umbraco.Tests.Web.Controllers
{
@@ -270,7 +271,8 @@ namespace Umbraco.Tests.Web.Controllers
Factory.GetInstance(),
helper,
ShortStringHelper,
- Factory.GetInstance());
+ Factory.GetInstance(),
+ Factory.GetInstance());
return controller;
}
@@ -306,7 +308,8 @@ namespace Umbraco.Tests.Web.Controllers
Factory.GetInstance(),
helper,
ShortStringHelper,
- Factory.GetInstance());
+ Factory.GetInstance(),
+ Factory.GetInstance());
return controller;
}
@@ -350,7 +353,8 @@ namespace Umbraco.Tests.Web.Controllers
Factory.GetInstance(),
helper,
ShortStringHelper,
- Factory.GetInstance());
+ Factory.GetInstance(),
+ Factory.GetInstance());
return controller;
}
@@ -399,7 +403,8 @@ namespace Umbraco.Tests.Web.Controllers
Factory.GetInstance(),
helper,
ShortStringHelper,
- Factory.GetInstance());
+ Factory.GetInstance(),
+ Factory.GetInstance());
return controller;
}
@@ -440,7 +445,9 @@ namespace Umbraco.Tests.Web.Controllers
Factory.GetInstance(),
helper,
ShortStringHelper,
- Factory.GetInstance());
+ Factory.GetInstance(),
+ Factory.GetInstance()
+ );
return controller;
}
@@ -487,7 +494,9 @@ namespace Umbraco.Tests.Web.Controllers
Factory.GetInstance(),
helper,
ShortStringHelper,
- Factory.GetInstance());
+ Factory.GetInstance(),
+ Factory.GetInstance()
+ );
return controller;
}
diff --git a/src/Umbraco.Tests/Web/Controllers/UsersControllerTests.cs b/src/Umbraco.Tests/Web/Controllers/UsersControllerTests.cs
index 0dec6560b8..decbd59183 100644
--- a/src/Umbraco.Tests/Web/Controllers/UsersControllerTests.cs
+++ b/src/Umbraco.Tests/Web/Controllers/UsersControllerTests.cs
@@ -36,6 +36,7 @@ using Umbraco.Web.Models.ContentEditing;
using IUser = Umbraco.Core.Models.Membership.IUser;
using Umbraco.Core.Mapping;
using Umbraco.Core.Configuration.UmbracoSettings;
+using Umbraco.Web.Routing;
namespace Umbraco.Tests.Web.Controllers
{
@@ -91,7 +92,9 @@ namespace Umbraco.Tests.Web.Controllers
Factory.GetInstance(),
Factory.GetInstance(),
Factory.GetInstance(),
- Factory.GetInstance()
+ Factory.GetInstance(),
+ Factory.GetInstance()
+
);
return usersController;
}
@@ -162,8 +165,9 @@ namespace Umbraco.Tests.Web.Controllers
Factory.GetInstance(),
Factory.GetInstance(),
Factory.GetInstance(),
- Factory.GetInstance()
- );
+ Factory.GetInstance(),
+ Factory.GetInstance()
+ );
return usersController;
}
@@ -204,7 +208,8 @@ namespace Umbraco.Tests.Web.Controllers
Factory.GetInstance(),
Factory.GetInstance(),
Factory.GetInstance(),
- Factory.GetInstance()
+ Factory.GetInstance(),
+ Factory.GetInstance()
);
return usersController;
}
@@ -281,7 +286,8 @@ namespace Umbraco.Tests.Web.Controllers
Factory.GetInstance(),
Factory.GetInstance(),
Factory.GetInstance(),
- Factory.GetInstance()
+ Factory.GetInstance(),
+ Factory.GetInstance()
);
return usersController;
}
diff --git a/src/Umbraco.Tests/Web/Mvc/RenderIndexActionSelectorAttributeTests.cs b/src/Umbraco.Tests/Web/Mvc/RenderIndexActionSelectorAttributeTests.cs
index ef6136939a..c9587d4c4a 100644
--- a/src/Umbraco.Tests/Web/Mvc/RenderIndexActionSelectorAttributeTests.cs
+++ b/src/Umbraco.Tests/Web/Mvc/RenderIndexActionSelectorAttributeTests.cs
@@ -70,13 +70,11 @@ namespace Umbraco.Tests.Web.Mvc
Mock.Of(),
new TestVariationContextAccessor(),
new TestDefaultCultureAccessor(),
- TestObjects.GetUmbracoSettings(),
globalSettings,
- new UrlProviderCollection(Enumerable.Empty()),
- new MediaUrlProviderCollection(Enumerable.Empty()),
Mock.Of(),
TestHelper.IOHelper,
- httpContextAccessor);
+ httpContextAccessor,
+ Mock.Of());
var umbracoContextReference = umbracoContextFactory.EnsureUmbracoContext();
var umbCtx = umbracoContextReference.UmbracoContext;
@@ -103,13 +101,11 @@ namespace Umbraco.Tests.Web.Mvc
Mock.Of(),
new TestVariationContextAccessor(),
new TestDefaultCultureAccessor(),
- TestObjects.GetUmbracoSettings(),
globalSettings,
- new UrlProviderCollection(Enumerable.Empty()),
- new MediaUrlProviderCollection(Enumerable.Empty()),
Mock.Of(),
TestHelper.IOHelper,
- httpContextAccessor);
+ httpContextAccessor,
+ Mock.Of());
var umbracoContextReference = umbracoContextFactory.EnsureUmbracoContext();
var umbCtx = umbracoContextReference.UmbracoContext;
@@ -136,13 +132,11 @@ namespace Umbraco.Tests.Web.Mvc
Mock.Of(),
new TestVariationContextAccessor(),
new TestDefaultCultureAccessor(),
- TestObjects.GetUmbracoSettings(),
globalSettings,
- new UrlProviderCollection(Enumerable.Empty()),
- new MediaUrlProviderCollection(Enumerable.Empty()),
Mock.Of(),
TestHelper.IOHelper,
- httpContextAccessor);
+ httpContextAccessor,
+ Mock.Of());
var umbracoContextReference = umbracoContextFactory.EnsureUmbracoContext();
var umbCtx = umbracoContextReference.UmbracoContext;
@@ -169,13 +163,11 @@ namespace Umbraco.Tests.Web.Mvc
Mock.Of(),
new TestVariationContextAccessor(),
new TestDefaultCultureAccessor(),
- TestObjects.GetUmbracoSettings(),
globalSettings,
- new UrlProviderCollection(Enumerable.Empty()),
- new MediaUrlProviderCollection(Enumerable.Empty()),
Mock.Of(),
TestHelper.IOHelper,
- httpContextAccessor);
+ httpContextAccessor,
+ Mock.Of());
var umbracoContextReference = umbracoContextFactory.EnsureUmbracoContext();
var umbCtx = umbracoContextReference.UmbracoContext;
diff --git a/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs b/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs
index b0393999e8..334488bde1 100644
--- a/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs
+++ b/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs
@@ -46,13 +46,11 @@ namespace Umbraco.Tests.Web.Mvc
Mock.Of(),
new TestVariationContextAccessor(),
new TestDefaultCultureAccessor(),
- TestObjects.GetUmbracoSettings(),
globalSettings,
- new UrlProviderCollection(Enumerable.Empty()),
- new MediaUrlProviderCollection(Enumerable.Empty()),
Mock.Of(),
IOHelper,
- httpContextAccessor);
+ httpContextAccessor,
+ PublishedUrlProvider);
var umbracoContextReference = umbracoContextFactory.EnsureUmbracoContext();
var umbracoContext = umbracoContextReference.UmbracoContext;
@@ -77,13 +75,11 @@ namespace Umbraco.Tests.Web.Mvc
Mock.Of(),
new TestVariationContextAccessor(),
new TestDefaultCultureAccessor(),
- TestObjects.GetUmbracoSettings(),
globalSettings,
- new UrlProviderCollection(Enumerable.Empty()),
- new MediaUrlProviderCollection(Enumerable.Empty()),
Mock.Of(),
IOHelper,
- httpContextAccessor);
+ httpContextAccessor,
+ PublishedUrlProvider);
var umbracoContextReference = umbracoContextFactory.EnsureUmbracoContext();
var umbCtx = umbracoContextReference.UmbracoContext;
@@ -111,13 +107,11 @@ namespace Umbraco.Tests.Web.Mvc
publishedSnapshotService.Object,
new TestVariationContextAccessor(),
new TestDefaultCultureAccessor(),
- Mock.Of(section => section.WebRouting == Mock.Of(routingSection => routingSection.UrlProviderMode == "Auto")),
globalSettings,
- new UrlProviderCollection(Enumerable.Empty()),
- new MediaUrlProviderCollection(Enumerable.Empty()),
Mock.Of(),
IOHelper,
- httpContextAccessor);
+ httpContextAccessor,
+ PublishedUrlProvider);
var umbracoContextReference = umbracoContextFactory.EnsureUmbracoContext();
var umbracoContext = umbracoContextReference.UmbracoContext;
@@ -152,13 +146,11 @@ namespace Umbraco.Tests.Web.Mvc
Mock.Of(),
new TestVariationContextAccessor(),
new TestDefaultCultureAccessor(),
- Mock.Of(section => section.WebRouting == webRoutingSettings),
globalSettings,
- new UrlProviderCollection(Enumerable.Empty()),
- new MediaUrlProviderCollection(Enumerable.Empty()),
Mock.Of(),
IOHelper,
- httpContextAccessor);
+ httpContextAccessor,
+ PublishedUrlProvider);
var umbracoContextReference = umbracoContextFactory.EnsureUmbracoContext();
var umbracoContext = umbracoContextReference.UmbracoContext;
diff --git a/src/Umbraco.Tests/Web/Mvc/UmbracoViewPageTests.cs b/src/Umbraco.Tests/Web/Mvc/UmbracoViewPageTests.cs
index eaa892ac45..040fae8294 100644
--- a/src/Umbraco.Tests/Web/Mvc/UmbracoViewPageTests.cs
+++ b/src/Umbraco.Tests/Web/Mvc/UmbracoViewPageTests.cs
@@ -442,12 +442,10 @@ namespace Umbraco.Tests.Web.Mvc
httpContextAccessor,
_service,
new WebSecurity(httpContextAccessor, Current.Services.UserService, globalSettings, IOHelper),
- TestObjects.GetUmbracoSettings(),
- Enumerable.Empty(),
- Enumerable.Empty(),
globalSettings,
new TestVariationContextAccessor(),
- IOHelper);
+ IOHelper,
+ PublishedUrlProvider);
//if (setSingleton)
//{
diff --git a/src/Umbraco.Tests/Web/WebExtensionMethodTests.cs b/src/Umbraco.Tests/Web/WebExtensionMethodTests.cs
index fb04ee49bb..5e81de5c83 100644
--- a/src/Umbraco.Tests/Web/WebExtensionMethodTests.cs
+++ b/src/Umbraco.Tests/Web/WebExtensionMethodTests.cs
@@ -33,12 +33,10 @@ namespace Umbraco.Tests.Web
httpContextAccessor,
Mock.Of(),
new WebSecurity(httpContextAccessor, Current.Services.UserService, TestObjects.GetGlobalSettings(), IOHelper),
- TestObjects.GetUmbracoSettings(),
- new List(),
- Enumerable.Empty(),
TestObjects.GetGlobalSettings(),
new TestVariationContextAccessor(),
- IOHelper);
+ IOHelper,
+ PublishedUrlProvider);
var r1 = new RouteData();
r1.DataTokens.Add(Core.Constants.Web.UmbracoContextDataToken, umbCtx);
@@ -55,12 +53,10 @@ namespace Umbraco.Tests.Web
httpContextAccessor,
Mock.Of(),
new WebSecurity(httpContextAccessor, Current.Services.UserService, TestObjects.GetGlobalSettings(), IOHelper),
- TestObjects.GetUmbracoSettings(),
- new List(),
- Enumerable.Empty