diff --git a/src/Umbraco.Core/Configuration/Models/Validation/ConfigurationValidationBase.cs b/src/Umbraco.Core/Configuration/Models/Validation/ConfigurationValidatorBase.cs similarity index 97% rename from src/Umbraco.Core/Configuration/Models/Validation/ConfigurationValidationBase.cs rename to src/Umbraco.Core/Configuration/Models/Validation/ConfigurationValidatorBase.cs index 3b0c9c2db8..4f69b326eb 100644 --- a/src/Umbraco.Core/Configuration/Models/Validation/ConfigurationValidationBase.cs +++ b/src/Umbraco.Core/Configuration/Models/Validation/ConfigurationValidatorBase.cs @@ -4,7 +4,7 @@ using System.Linq; namespace Umbraco.Core.Configuration.Models.Validation { - public abstract class ConfigurationValidationBase + public abstract class ConfigurationValidatorBase { public bool ValidateStringIsOneOfValidValues(string configPath, string value, IEnumerable validValues, out string message) { diff --git a/src/Umbraco.Core/Configuration/Models/Validation/ContentSettingsValidation.cs b/src/Umbraco.Core/Configuration/Models/Validation/ContentSettingsValidator.cs similarity index 90% rename from src/Umbraco.Core/Configuration/Models/Validation/ContentSettingsValidation.cs rename to src/Umbraco.Core/Configuration/Models/Validation/ContentSettingsValidator.cs index 527dcc4737..f48979cd45 100644 --- a/src/Umbraco.Core/Configuration/Models/Validation/ContentSettingsValidation.cs +++ b/src/Umbraco.Core/Configuration/Models/Validation/ContentSettingsValidator.cs @@ -1,12 +1,10 @@ -using System; -using System.Collections.Generic; -using System.Linq; +using System.Collections.Generic; using Microsoft.Extensions.Options; using Umbraco.Core.Macros; namespace Umbraco.Core.Configuration.Models.Validation { - public class ContentSettingsValidation : ConfigurationValidationBase, IValidateOptions + public class ContentSettingsValidator : ConfigurationValidatorBase, IValidateOptions { public ValidateOptionsResult Validate(string name, ContentSettings options) { diff --git a/src/Umbraco.Core/Configuration/Models/Validation/GlobalSettingsValidation.cs b/src/Umbraco.Core/Configuration/Models/Validation/GlobalSettingsValidator.cs similarity index 85% rename from src/Umbraco.Core/Configuration/Models/Validation/GlobalSettingsValidation.cs rename to src/Umbraco.Core/Configuration/Models/Validation/GlobalSettingsValidator.cs index fa99884347..40ecb0bedd 100644 --- a/src/Umbraco.Core/Configuration/Models/Validation/GlobalSettingsValidation.cs +++ b/src/Umbraco.Core/Configuration/Models/Validation/GlobalSettingsValidator.cs @@ -2,7 +2,8 @@ namespace Umbraco.Core.Configuration.Models.Validation { - public class GlobalSettingsValidation : ConfigurationValidationBase, IValidateOptions + public class GlobalSettingsValidator + : ConfigurationValidatorBase, IValidateOptions { public ValidateOptionsResult Validate(string name, GlobalSettings options) { diff --git a/src/Umbraco.Core/Configuration/Models/Validation/HostingSettingsValidation.cs b/src/Umbraco.Core/Configuration/Models/Validation/HostingSettingsValidator.cs similarity index 86% rename from src/Umbraco.Core/Configuration/Models/Validation/HostingSettingsValidation.cs rename to src/Umbraco.Core/Configuration/Models/Validation/HostingSettingsValidator.cs index 11ba6e4a2c..df8e0324c8 100644 --- a/src/Umbraco.Core/Configuration/Models/Validation/HostingSettingsValidation.cs +++ b/src/Umbraco.Core/Configuration/Models/Validation/HostingSettingsValidator.cs @@ -2,7 +2,7 @@ namespace Umbraco.Core.Configuration.Models.Validation { - public class HostingSettingsValidation : ConfigurationValidationBase, IValidateOptions + public class HostingSettingsValidator : ConfigurationValidatorBase, IValidateOptions { public ValidateOptionsResult Validate(string name, HostingSettings options) { diff --git a/src/Umbraco.Core/Configuration/Models/Validation/ModelsBuilderSettingsValidation.cs b/src/Umbraco.Core/Configuration/Models/Validation/ModelsBuilderSettingsValidator.cs similarity index 84% rename from src/Umbraco.Core/Configuration/Models/Validation/ModelsBuilderSettingsValidation.cs rename to src/Umbraco.Core/Configuration/Models/Validation/ModelsBuilderSettingsValidator.cs index 49351499cd..cddb3a745a 100644 --- a/src/Umbraco.Core/Configuration/Models/Validation/ModelsBuilderSettingsValidation.cs +++ b/src/Umbraco.Core/Configuration/Models/Validation/ModelsBuilderSettingsValidator.cs @@ -2,7 +2,7 @@ namespace Umbraco.Core.Configuration.Models.Validation { - public class ModelsBuilderSettingsValidation : ConfigurationValidationBase, IValidateOptions + public class ModelsBuilderSettingsValidator : ConfigurationValidatorBase, IValidateOptions { public ValidateOptionsResult Validate(string name, ModelsBuilderSettings options) { diff --git a/src/Umbraco.Core/Configuration/Models/Validation/RequestHandlerSettingsValidation.cs b/src/Umbraco.Core/Configuration/Models/Validation/RequestHandlerSettingsValidator.cs similarity index 85% rename from src/Umbraco.Core/Configuration/Models/Validation/RequestHandlerSettingsValidation.cs rename to src/Umbraco.Core/Configuration/Models/Validation/RequestHandlerSettingsValidator.cs index 022f0289d8..31509d3ebf 100644 --- a/src/Umbraco.Core/Configuration/Models/Validation/RequestHandlerSettingsValidation.cs +++ b/src/Umbraco.Core/Configuration/Models/Validation/RequestHandlerSettingsValidator.cs @@ -2,7 +2,7 @@ namespace Umbraco.Core.Configuration.Models.Validation { - public class RequestHandlerSettingsValidation : ConfigurationValidationBase, IValidateOptions + public class RequestHandlerSettingsValidator : ConfigurationValidatorBase, IValidateOptions { public ValidateOptionsResult Validate(string name, RequestHandlerSettings options) { diff --git a/src/Umbraco.Tests.Common/Builders/ContentErrorPageBuilder.cs b/src/Umbraco.Tests.Common/Builders/ContentErrorPageBuilder.cs new file mode 100644 index 0000000000..47c4bdfc8c --- /dev/null +++ b/src/Umbraco.Tests.Common/Builders/ContentErrorPageBuilder.cs @@ -0,0 +1,65 @@ +using System; +using Umbraco.Core.Configuration.Models; + +namespace Umbraco.Tests.Common.Builders +{ + public class ContentErrorPageBuilder : ContentErrorPageBuilder + { + public ContentErrorPageBuilder() : base(null) + { + } + } + + public class ContentErrorPageBuilder + : ChildBuilderBase + { + private int? _contentId; + private Guid? _contentKey; + private string _contentXPath; + private string _culture; + + public ContentErrorPageBuilder(TParent parentBuilder) : base(parentBuilder) + { + } + + public ContentErrorPageBuilder WithContentId(int contentId) + { + _contentId = contentId; + return this; + } + + public ContentErrorPageBuilder WithContentKey(Guid contentKey) + { + _contentKey = contentKey; + return this; + } + + public ContentErrorPageBuilder WithContentXPath(string contentXPath) + { + _contentXPath = contentXPath; + return this; + } + + public ContentErrorPageBuilder WithCulture(string culture) + { + _culture = culture; + return this; + } + + public override ContentErrorPage Build() + { + var contentId = _contentId ?? 0; + var contentKey = _contentKey ?? Guid.Empty; + var contentXPath = _contentXPath ?? string.Empty; + var culture = _culture ?? "en-US"; + + return new ContentErrorPage + { + ContentId = contentId, + ContentKey = contentKey, + ContentXPath = contentXPath, + Culture = culture, + }; + } + } +} diff --git a/src/Umbraco.Tests.Common/Builders/ContentImagingSettingsBuilder.cs b/src/Umbraco.Tests.Common/Builders/ContentImagingSettingsBuilder.cs new file mode 100644 index 0000000000..685e60c929 --- /dev/null +++ b/src/Umbraco.Tests.Common/Builders/ContentImagingSettingsBuilder.cs @@ -0,0 +1,41 @@ +using System.Collections.Generic; +using System.Linq; +using Umbraco.Core.Configuration.Models; + +namespace Umbraco.Tests.Common.Builders +{ + public class ContentImagingSettingsBuilder : ContentImagingSettingsBuilder + { + public ContentImagingSettingsBuilder() : base(null) + { + } + } + + public class ContentImagingSettingsBuilder + : ChildBuilderBase + { + + private readonly List>> _imagingAutoFillUploadFieldBuilder = new List>>(); + + public ContentImagingSettingsBuilder(TParent parentBuilder) : base(parentBuilder) + { + } + + public ImagingAutoFillUploadFieldBuilder> AddAutoFillImageProperty() + { + var builder = new ImagingAutoFillUploadFieldBuilder>(this); + _imagingAutoFillUploadFieldBuilder.Add(builder); + return builder; + } + + public override ContentImagingSettings Build() + { + var imagingAutoFillUploadFields = _imagingAutoFillUploadFieldBuilder.Select(x => x.Build()).ToArray(); + + return new ContentImagingSettings + { + AutoFillImageProperties = imagingAutoFillUploadFields, + }; + } + } +} diff --git a/src/Umbraco.Tests.Common/Builders/ContentSettingsBuilder.cs b/src/Umbraco.Tests.Common/Builders/ContentSettingsBuilder.cs index f5fb1fc08f..9e504683d1 100644 --- a/src/Umbraco.Tests.Common/Builders/ContentSettingsBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/ContentSettingsBuilder.cs @@ -1,12 +1,56 @@ +using System.Collections.Generic; +using System.Linq; using Umbraco.Core.Configuration.Models; +using Umbraco.Core.Macros; namespace Umbraco.Tests.Common.Builders { - public class ContentSettingsBuilder : BuilderBase + public class ContentSettingsBuilder : ContentSettingsBuilder { + public ContentSettingsBuilder() : base(null) + { + } + } + + public class ContentSettingsBuilder : ChildBuilderBase + { + private string _macroErrors; + private readonly ContentImagingSettingsBuilder> _contentImagingSettingsBuilder; + private readonly List>> _contentErrorPageBuilders = new List>>(); + + public ContentSettingsBuilder(TParent parentBuilder) : base(parentBuilder) + { + _contentImagingSettingsBuilder = new ContentImagingSettingsBuilder>(this); + _contentErrorPageBuilders = new List>>(); + } + + public ContentImagingSettingsBuilder> AddImaging() => _contentImagingSettingsBuilder; + + public ContentErrorPageBuilder> AddErrorPage() + { + var builder = new ContentErrorPageBuilder>(this); + _contentErrorPageBuilders.Add(builder); + return builder; + } + + public ContentSettingsBuilder WithMacroErrors(string macroErrors) + { + _macroErrors = macroErrors; + return this; + } + public override ContentSettings Build() { - return new ContentSettings(); + var macroErrors = _macroErrors ?? MacroErrorBehaviour.Inline.ToString(); + var contentImagingSettings = _contentImagingSettingsBuilder.Build(); + var contentErrorPages = _contentErrorPageBuilders.Select(x => x.Build()).ToArray(); + + return new ContentSettings + { + MacroErrors = _macroErrors, + Imaging = contentImagingSettings, + Error404Collection = contentErrorPages, + }; } } } diff --git a/src/Umbraco.Tests.Common/Builders/GlobalSettingsBuilder.cs b/src/Umbraco.Tests.Common/Builders/GlobalSettingsBuilder.cs index d39bd71d2e..30d1d3182f 100644 --- a/src/Umbraco.Tests.Common/Builders/GlobalSettingsBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/GlobalSettingsBuilder.cs @@ -199,9 +199,5 @@ namespace Umbraco.Tests.Common.Builders NoNodesViewPath = noNodesViewPath, }; } - private string _iconsPath; - - public string IconsPath{ get; set; } - } } diff --git a/src/Umbraco.Tests.Common/Builders/HostingSettingsBuilder.cs b/src/Umbraco.Tests.Common/Builders/HostingSettingsBuilder.cs index 4a2c19aae0..ac9db21337 100644 --- a/src/Umbraco.Tests.Common/Builders/HostingSettingsBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/HostingSettingsBuilder.cs @@ -27,6 +27,12 @@ namespace Umbraco.Tests.Common.Builders return this; } + public HostingSettingsBuilder WithLocalTempStorageLocation(string localTempStorageLocation) + { + _localTempStorageLocation = localTempStorageLocation; + return this; + } + public override HostingSettings Build() { var debug = _debug ?? false; diff --git a/src/Umbraco.Tests.Common/Builders/ImagingAutoFillUploadFieldBuilder.cs b/src/Umbraco.Tests.Common/Builders/ImagingAutoFillUploadFieldBuilder.cs new file mode 100644 index 0000000000..f6f8383d6a --- /dev/null +++ b/src/Umbraco.Tests.Common/Builders/ImagingAutoFillUploadFieldBuilder.cs @@ -0,0 +1,73 @@ +using Umbraco.Core.Configuration.Models; + +namespace Umbraco.Tests.Common.Builders +{ + public class ImagingAutoFillUploadFieldBuilder : ImagingAutoFillUploadFieldBuilder + { + public ImagingAutoFillUploadFieldBuilder() : base(null) + { + } + } + + public class ImagingAutoFillUploadFieldBuilder + : ChildBuilderBase + { + private string _alias; + private string _widthFieldAlias; + private string _heightFieldAlias; + private string _lengthFieldAlias; + private string _extensionFieldAlias; + + public ImagingAutoFillUploadFieldBuilder(TParent parentBuilder) : base(parentBuilder) + { + } + + public ImagingAutoFillUploadFieldBuilder WithAlias(string alias) + { + _alias = alias; + return this; + } + + public ImagingAutoFillUploadFieldBuilder WithWidthFieldAlias(string widthFieldAlias) + { + _widthFieldAlias = widthFieldAlias; + return this; + } + + public ImagingAutoFillUploadFieldBuilder WithHeightFieldAlias(string heightFieldAlias) + { + _heightFieldAlias = heightFieldAlias; + return this; + } + + public ImagingAutoFillUploadFieldBuilder WithLengthFieldAlias(string lengthFieldAlias) + { + _lengthFieldAlias = lengthFieldAlias; + return this; + } + + public ImagingAutoFillUploadFieldBuilder WithExtensionFieldAlias(string extensionFieldAlias) + { + _extensionFieldAlias = extensionFieldAlias; + return this; + } + + public override ImagingAutoFillUploadField Build() + { + var alias = _alias ?? "testAlias"; + var widthFieldAlias = _widthFieldAlias ?? "testWidthFieldAlias"; + var heightFieldAlias = _heightFieldAlias ?? "testHeightFieldAlias"; + var lengthFieldAlias = _lengthFieldAlias ?? "testLengthFieldAlias"; + var extensionFieldAlias = _extensionFieldAlias ?? "testExtensionFieldAlias"; + + return new ImagingAutoFillUploadField + { + Alias = alias, + WidthFieldAlias = widthFieldAlias, + HeightFieldAlias = heightFieldAlias, + LengthFieldAlias = lengthFieldAlias, + ExtensionFieldAlias = extensionFieldAlias, + }; + } + } +} diff --git a/src/Umbraco.Tests.Common/Builders/ModelsBuilderSettingsBuilder.cs b/src/Umbraco.Tests.Common/Builders/ModelsBuilderSettingsBuilder.cs new file mode 100644 index 0000000000..02ab0a0af4 --- /dev/null +++ b/src/Umbraco.Tests.Common/Builders/ModelsBuilderSettingsBuilder.cs @@ -0,0 +1,26 @@ +using Umbraco.Core.Configuration; +using Umbraco.Core.Configuration.Models; + +namespace Umbraco.Tests.Common.Builders +{ + public class ModelsBuilderSettingsBuilder : BuilderBase + { + private string _modelsMode; + + public ModelsBuilderSettingsBuilder WithModelsMode(string modelsMode) + { + _modelsMode = modelsMode; + return this; + } + + public override ModelsBuilderSettings Build() + { + var modelsMode = _modelsMode ?? ModelsMode.Nothing.ToString(); + + return new ModelsBuilderSettings + { + ModelsMode = modelsMode, + }; + } + } +} diff --git a/src/Umbraco.Tests.Common/Builders/UserBuilder.cs b/src/Umbraco.Tests.Common/Builders/UserBuilder.cs index 83c036c101..2b76206e3f 100644 --- a/src/Umbraco.Tests.Common/Builders/UserBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/UserBuilder.cs @@ -91,8 +91,6 @@ namespace Umbraco.Tests.Common.Builders return this; } - - public UserBuilder WithSessionTimeout(int sessionTimeout) { _sessionTimeout = sessionTimeout; @@ -122,6 +120,13 @@ namespace Umbraco.Tests.Common.Builders return this; } + public UserGroupBuilder> AddUserGroup() + { + var builder = new UserGroupBuilder>(this); + _userGroupBuilders.Add(builder); + return builder; + } + public override User Build() { var id = _id ?? 0; @@ -175,20 +180,9 @@ namespace Umbraco.Tests.Common.Builders result.AddGroup(readOnlyUserGroup.ToReadOnlyGroup()); } - return result; } - public UserGroupBuilder> AddUserGroup() - { - var builder = new UserGroupBuilder>(this); - - _userGroupBuilders.Add(builder); - - return builder; - } - - int? IWithIdBuilder.Id { get => _id; diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/ContentSettingsValidatorTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/ContentSettingsValidatorTests.cs new file mode 100644 index 0000000000..3fa27dc6b3 --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/ContentSettingsValidatorTests.cs @@ -0,0 +1,74 @@ +using NUnit.Framework; +using Umbraco.Core.Configuration.Models; +using Umbraco.Core.Configuration.Models.Validation; +using Umbraco.Core.Macros; +using Umbraco.Tests.Common.Builders; + +namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Validation +{ + [TestFixture] + public class ContentSettingsValidationTests + { + [Test] + public void ReturnsSuccessResponseForValidConfiguration() + { + var validator = new ContentSettingsValidator(); + var options = BuildContentSettings(); + var result = validator.Validate("settings", options); + Assert.True(result.Succeeded); + } + + [Test] + public void ReturnsFailResponseForConfigurationWithInvalidMacroErrorsField() + { + var validator = new ContentSettingsValidator(); + var options = BuildContentSettings(macroErrors: "invalid"); + var result = validator.Validate("settings", options); + Assert.False(result.Succeeded); + } + + [Test] + public void ReturnsFailResponseForConfigurationWithInvalidError404CollectionDueToDuplicateId() + { + var validator = new ContentSettingsValidator(); + var options = BuildContentSettings(contentXPath: "/aaa/bbb"); + var result = validator.Validate("settings", options); + Assert.False(result.Succeeded); + } + + [Test] + public void ReturnsFailResponseForConfigurationWithInvalidError404CollectionDueToEmptyCulture() + { + var validator = new ContentSettingsValidator(); + var options = BuildContentSettings(culture: string.Empty); + var result = validator.Validate("settings", options); + Assert.False(result.Succeeded); + } + + [Test] + public void ReturnsFailResponseForConfigurationWithInvalidAutoFillImagePropertiesCollection() + { + var validator = new ContentSettingsValidator(); + var options = BuildContentSettings(culture: string.Empty); + var result = validator.Validate("settings", options); + Assert.False(result.Succeeded); + } + + private static ContentSettings BuildContentSettings(string macroErrors = "inline", string culture = "en-US", string contentXPath = "", string autoFillImagePropertyAlias = "testAlias") + { + return new ContentSettingsBuilder() + .WithMacroErrors(macroErrors) + .AddErrorPage() + .WithCulture(culture) + .WithContentId(1) + .WithContentXPath(contentXPath) + .Done() + .AddImaging() + .AddAutoFillImageProperty() + .WithAlias(autoFillImagePropertyAlias) + .Done() + .Done() + .Build(); + } + } +} diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/GlobalSettingsValidatorTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/GlobalSettingsValidatorTests.cs new file mode 100644 index 0000000000..18f3d8f1b4 --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/GlobalSettingsValidatorTests.cs @@ -0,0 +1,38 @@ +using NUnit.Framework; +using Umbraco.Core.Configuration.Models; +using Umbraco.Core.Configuration.Models.Validation; +using Umbraco.Tests.Common.Builders; + +namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Validation +{ + [TestFixture] + public class GlobalSettingsValidationTests + { + [Test] + public void ReturnsSuccessResponseForValidConfiguration() + { + var validator = new GlobalSettingsValidator(); + var options = BuildGlobalSettings("test@test.com"); + var result = validator.Validate("settings", options); + Assert.True(result.Succeeded); + } + + [Test] + public void ReturnsFailResponseForConfigurationWithInvalidSmtpFromField() + { + var validator = new GlobalSettingsValidator(); + var options = BuildGlobalSettings("invalid"); + var result = validator.Validate("settings", options); + Assert.False(result.Succeeded); + } + + private static GlobalSettings BuildGlobalSettings(string smtpEmail) + { + return new GlobalSettingsBuilder() + .AddSmtpSettings() + .WithFrom(smtpEmail) + .Done() + .Build(); + } + } +} diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/HostingSettingsValidatorTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/HostingSettingsValidatorTests.cs new file mode 100644 index 0000000000..105356f2b9 --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/HostingSettingsValidatorTests.cs @@ -0,0 +1,28 @@ +using NUnit.Framework; +using Umbraco.Core.Configuration.Models.Validation; +using Umbraco.Tests.Common.Builders; + +namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Validation +{ + [TestFixture] + public class HostingSettingsValidatorTests + { + [Test] + public void ReturnsSuccessResponseForValidConfiguration() + { + var validator = new HostingSettingsValidator(); + var options = new HostingSettingsBuilder().Build(); + var result = validator.Validate("settings", options); + Assert.True(result.Succeeded); + } + + [Test] + public void ReturnsFailResponseForConfigurationWithInvalidLocalTempStorageLocationField() + { + var validator = new HostingSettingsValidator(); + var options = new HostingSettingsBuilder().WithLocalTempStorageLocation("invalid").Build(); + var result = validator.Validate("settings", options); + Assert.False(result.Succeeded); + } + } +} diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/ModelsBuilderSettingsValidatorTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/ModelsBuilderSettingsValidatorTests.cs new file mode 100644 index 0000000000..2fd7b19251 --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/ModelsBuilderSettingsValidatorTests.cs @@ -0,0 +1,28 @@ +using NUnit.Framework; +using Umbraco.Core.Configuration.Models.Validation; +using Umbraco.Tests.Common.Builders; + +namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Validation +{ + [TestFixture] + public class ModelsBuilderSettingsValidatorTests + { + [Test] + public void ReturnsSuccessResponseForValidConfiguration() + { + var validator = new ModelsBuilderSettingsValidator(); + var options = new ModelsBuilderSettingsBuilder().Build(); + var result = validator.Validate("settings", options); + Assert.True(result.Succeeded); + } + + [Test] + public void ReturnsFailResponseForConfigurationWithInvalidModelsModeField() + { + var validator = new ModelsBuilderSettingsValidator(); + var options = new ModelsBuilderSettingsBuilder().WithModelsMode("invalid").Build(); + var result = validator.Validate("settings", options); + Assert.False(result.Succeeded); + } + } +} diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/RequestHandlerSettingsValidatorTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/RequestHandlerSettingsValidatorTests.cs new file mode 100644 index 0000000000..b19ec120d0 --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/RequestHandlerSettingsValidatorTests.cs @@ -0,0 +1,28 @@ +using NUnit.Framework; +using Umbraco.Core.Configuration.Models.Validation; +using Umbraco.Tests.Common.Builders; + +namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Validation +{ + [TestFixture] + public class RequestHandlerSettingsValidatorTests + { + [Test] + public void ReturnsSuccessResponseForValidConfiguration() + { + var validator = new RequestHandlerSettingsValidator(); + var options = new RequestHandlerSettingsBuilder().Build(); + var result = validator.Validate("settings", options); + Assert.True(result.Succeeded); + } + + [Test] + public void ReturnsFailResponseForConfigurationWithInvalidConvertUrlsToAsciiField() + { + var validator = new RequestHandlerSettingsValidator(); + var options = new RequestHandlerSettingsBuilder().WithConvertUrlsToAscii("invalid").Build(); + var result = validator.Validate("settings", options); + Assert.False(result.Succeeded); + } + } +} diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/HostingSettingsBuilderTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/HostingSettingsBuilderTests.cs index 377e143b97..aebe225ac8 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/HostingSettingsBuilderTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/HostingSettingsBuilderTests.cs @@ -24,7 +24,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Tests.Common.Builders // Assert Assert.AreEqual(debugMode, hostingSettings.Debug); - Assert.AreEqual(localTempStorageLocation, hostingSettings.LocalTempStorageLocation); + Assert.AreEqual(localTempStorageLocation, hostingSettings.LocalTempStorageLocationValue); } } } diff --git a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs index 2a618ca39b..83f123b25b 100644 --- a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs @@ -127,11 +127,11 @@ namespace Umbraco.Extensions { if (configuration == null) throw new ArgumentNullException(nameof(configuration)); - services.AddSingleton, ContentSettingsValidation>(); - services.AddSingleton, GlobalSettingsValidation>(); - services.AddSingleton, HostingSettingsValidation>(); - services.AddSingleton, ModelsBuilderSettingsValidation>(); - services.AddSingleton, RequestHandlerSettingsValidation>(); + services.AddSingleton, ContentSettingsValidator>(); + services.AddSingleton, GlobalSettingsValidator>(); + services.AddSingleton, HostingSettingsValidator>(); + services.AddSingleton, ModelsBuilderSettingsValidator>(); + services.AddSingleton, RequestHandlerSettingsValidator>(); services.Configure(configuration.GetSection(Constants.Configuration.ConfigPrefix + "ActiveDirectory")); services.Configure(configuration.GetSection("ConnectionStrings"), o => o.BindNonPublicProperties = true);