diff --git a/src/Umbraco.Core/Configuration/Models/Validation/ContentSettingsValidator.cs b/src/Umbraco.Core/Configuration/Models/Validation/ContentSettingsValidator.cs index f48979cd45..05835f5357 100644 --- a/src/Umbraco.Core/Configuration/Models/Validation/ContentSettingsValidator.cs +++ b/src/Umbraco.Core/Configuration/Models/Validation/ContentSettingsValidator.cs @@ -29,17 +29,17 @@ namespace Umbraco.Core.Configuration.Models.Validation private bool ValidateMacroErrors(string value, out string message) { - return ValidateStringIsOneOfEnumValues("Content:MacroErrors", value, typeof(MacroErrorBehaviour), out message); + return ValidateStringIsOneOfEnumValues($"{Constants.Configuration.ConfigContent}:{nameof(ContentSettings.MacroErrors)}", value, typeof(MacroErrorBehaviour), out message); } private bool ValidateError404Collection(IEnumerable values, out string message) { - return ValidateCollection("Content:Error404Collection", values, "Culture and one and only one of ContentId, ContentKey and ContentXPath must be specified for each entry", out message); + return ValidateCollection($"{Constants.Configuration.ConfigContent}:{nameof(ContentSettings.Error404Collection)}", values, "Culture and one and only one of ContentId, ContentKey and ContentXPath must be specified for each entry", out message); } private bool ValidateAutoFillImageProperties(IEnumerable values, out string message) { - return ValidateCollection("Content:Imaging:AutoFillImageProperties", values, "Alias, WidthFieldAlias, HeightFieldAlias, LengthFieldAlias and ExtensionFieldAlias must be specified for each entry", out message); + return ValidateCollection($"{Constants.Configuration.ConfigContent}:{nameof(ContentSettings.Imaging)}:{nameof(ContentSettings.Imaging.AutoFillImageProperties)}", values, "Alias, WidthFieldAlias, HeightFieldAlias, LengthFieldAlias and ExtensionFieldAlias must be specified for each entry", out message); } } } diff --git a/src/Umbraco.Core/Configuration/Models/Validation/GlobalSettingsValidator.cs b/src/Umbraco.Core/Configuration/Models/Validation/GlobalSettingsValidator.cs index d760512555..b178126821 100644 --- a/src/Umbraco.Core/Configuration/Models/Validation/GlobalSettingsValidator.cs +++ b/src/Umbraco.Core/Configuration/Models/Validation/GlobalSettingsValidator.cs @@ -18,7 +18,7 @@ namespace Umbraco.Core.Configuration.Models.Validation private bool ValidateSmtpSetting(SmtpSettings value, out string message) { - return ValidateOptionalEntry("Global:Smtp", value, "A valid From email address is required", out message) && + return ValidateOptionalEntry($"{Constants.Configuration.ConfigGlobal}:{nameof(GlobalSettings.Smtp)}", value, "A valid From email address is required", out message) && (value == null || ValidateStringIsOneOfEnumValues("Global:Smtp:DeliveryMethod", value.DeliveryMethod, typeof(SmtpDeliveryMethod), out message)); } } diff --git a/src/Umbraco.Core/Configuration/Models/Validation/HostingSettingsValidator.cs b/src/Umbraco.Core/Configuration/Models/Validation/HostingSettingsValidator.cs index df8e0324c8..b035a5318b 100644 --- a/src/Umbraco.Core/Configuration/Models/Validation/HostingSettingsValidator.cs +++ b/src/Umbraco.Core/Configuration/Models/Validation/HostingSettingsValidator.cs @@ -16,7 +16,7 @@ namespace Umbraco.Core.Configuration.Models.Validation private bool ValidateLocalTempStorageLocation(string value, out string message) { - return ValidateStringIsOneOfEnumValues("Hosting:LocalTempStorageLocation", value, typeof(LocalTempStorage), out message); + return ValidateStringIsOneOfEnumValues($"{Constants.Configuration.ConfigHosting}:{nameof(HostingSettings.LocalTempStorageLocation)}", value, typeof(LocalTempStorage), out message); } } } diff --git a/src/Umbraco.Core/Configuration/Models/Validation/ModelsBuilderSettingsValidator.cs b/src/Umbraco.Core/Configuration/Models/Validation/ModelsBuilderSettingsValidator.cs index cddb3a745a..aeae0e97ca 100644 --- a/src/Umbraco.Core/Configuration/Models/Validation/ModelsBuilderSettingsValidator.cs +++ b/src/Umbraco.Core/Configuration/Models/Validation/ModelsBuilderSettingsValidator.cs @@ -16,7 +16,7 @@ namespace Umbraco.Core.Configuration.Models.Validation private bool ValidateModelsMode(string value, out string message) { - return ValidateStringIsOneOfEnumValues("ModelsBuilder:ModelsMode", value, typeof(ModelsMode), out message); + return ValidateStringIsOneOfEnumValues($"{Constants.Configuration.ConfigModelsBuilder}:{nameof(ModelsBuilderSettings.ModelsMode)}", value, typeof(ModelsMode), out message); } } } diff --git a/src/Umbraco.Core/Configuration/Models/Validation/RequestHandlerSettingsValidator.cs b/src/Umbraco.Core/Configuration/Models/Validation/RequestHandlerSettingsValidator.cs index 31509d3ebf..305fe812f8 100644 --- a/src/Umbraco.Core/Configuration/Models/Validation/RequestHandlerSettingsValidator.cs +++ b/src/Umbraco.Core/Configuration/Models/Validation/RequestHandlerSettingsValidator.cs @@ -17,7 +17,7 @@ namespace Umbraco.Core.Configuration.Models.Validation private bool ValidateConvertUrlsToAscii(string value, out string message) { var validValues = new[] { "try", "true", "false" }; - return ValidateStringIsOneOfValidValues("RequestHandler:ConvertUrlsToAscii", value, validValues, out message); + return ValidateStringIsOneOfValidValues($"{Constants.Configuration.ConfigRequestHandler}:{nameof(RequestHandlerSettings.ConvertUrlsToAscii)}", value, validValues, out message); } } } diff --git a/src/Umbraco.Core/Constants-Configuration.cs b/src/Umbraco.Core/Constants-Configuration.cs index a9b2bab0fb..c06ec8f1ec 100644 --- a/src/Umbraco.Core/Constants-Configuration.cs +++ b/src/Umbraco.Core/Constants-Configuration.cs @@ -11,9 +11,30 @@ /// ":" is used as marker for nested objects in json. E.g. "Umbraco:CMS:" = {"Umbraco":{"CMS":{....}} /// public const string ConfigPrefix = "Umbraco:CMS:"; - public const string ConfigSecurityPrefix = ConfigPrefix+"Security:"; - public const string ConfigRuntimeMinification = ConfigPrefix+"RuntimeMinification"; - public const string ConfigRuntimeMinificationVersion = ConfigRuntimeMinification+":Version"; + public const string ConfigActiveDirectory = ConfigPrefix + "ActiveDirectory"; + public const string ConfigContent = ConfigPrefix + "Content"; + public const string ConfigCoreDebug = ConfigPrefix + "Core:Debug"; + public const string ConfigExceptionFilter = ConfigPrefix + "ExceptionFilter"; + public const string ConfigGlobal = ConfigPrefix + "Global"; + public const string ConfigHealthChecks = ConfigPrefix + "HealthChecks"; + public const string ConfigHosting = ConfigPrefix + "Hosting"; + public const string ConfigImaging = ConfigPrefix + "Imaging"; + public const string ConfigExamine = ConfigPrefix + "Examine"; + public const string ConfigKeepAlive = ConfigPrefix + "KeepAlive"; + public const string ConfigLogging = ConfigPrefix + "Logging"; + public const string ConfigMemberPassword = ConfigPrefix + "Security:MemberPassword"; + public const string ConfigModelsBuilder = ConfigPrefix + "ModelsBuilder"; + public const string ConfigNuCache = ConfigPrefix + "NuCache"; + public const string ConfigRequestHandler = ConfigPrefix + "RequestHandler"; + public const string ConfigRuntime = ConfigPrefix + "Runtime"; + public const string ConfigSecurity = ConfigPrefix + "Security"; + public const string ConfigTours = ConfigPrefix + "Tours"; + public const string ConfigTypeFinder = ConfigPrefix + "TypeFinder"; + public const string ConfigWebRouting = ConfigPrefix + "WebRouting"; + public const string ConfigUserPassword = ConfigPrefix + "Security:UserPassword"; + + public const string ConfigRuntimeMinification = ConfigPrefix + "RuntimeMinification"; + public const string ConfigRuntimeMinificationVersion = ConfigRuntimeMinification + ":Version"; } } } 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 index 6d8fd8754f..adf2b540e5 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/ContentSettingsValidatorTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/ContentSettingsValidatorTests.cs @@ -1,7 +1,6 @@ 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 diff --git a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs index cba7c4fcb2..d357916791 100644 --- a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs @@ -133,28 +133,28 @@ namespace Umbraco.Extensions services.AddSingleton, ModelsBuilderSettingsValidator>(); services.AddSingleton, RequestHandlerSettingsValidator>(); - services.Configure(configuration.GetSection(Constants.Configuration.ConfigPrefix + "ActiveDirectory")); + services.Configure(configuration.GetSection(Constants.Configuration.ConfigActiveDirectory)); services.Configure(configuration.GetSection("ConnectionStrings"), o => o.BindNonPublicProperties = true); - services.Configure(configuration.GetSection(Constants.Configuration.ConfigPrefix + "Content"), o => o.BindNonPublicProperties = true); - services.Configure(configuration.GetSection(Constants.Configuration.ConfigPrefix + "Core:Debug")); - services.Configure(configuration.GetSection(Constants.Configuration.ConfigPrefix + "ExceptionFilter")); - services.Configure(configuration.GetSection(Constants.Configuration.ConfigPrefix + "Global"), o => o.BindNonPublicProperties = true); - services.Configure(configuration.GetSection(Constants.Configuration.ConfigPrefix + "HealthChecks")); - services.Configure(configuration.GetSection(Constants.Configuration.ConfigPrefix + "Hosting"), o => o.BindNonPublicProperties = true); - services.Configure(configuration.GetSection(Constants.Configuration.ConfigPrefix + "Imaging")); - services.Configure(configuration.GetSection(Constants.Configuration.ConfigPrefix + "Examine")); - services.Configure(configuration.GetSection(Constants.Configuration.ConfigPrefix + "KeepAlive")); - services.Configure(configuration.GetSection(Constants.Configuration.ConfigPrefix + "Logging")); - services.Configure(configuration.GetSection(Constants.Configuration.ConfigSecurityPrefix + "MemberPassword")); - services.Configure(configuration.GetSection(Constants.Configuration.ConfigPrefix + "ModelsBuilder"), o => o.BindNonPublicProperties = true); - services.Configure(configuration.GetSection(Constants.Configuration.ConfigPrefix + "NuCache")); - services.Configure(configuration.GetSection(Constants.Configuration.ConfigPrefix + "RequestHandler")); - services.Configure(configuration.GetSection(Constants.Configuration.ConfigPrefix + "Runtime")); - services.Configure(configuration.GetSection(Constants.Configuration.ConfigPrefix + "Security")); - services.Configure(configuration.GetSection(Constants.Configuration.ConfigPrefix + "Tours")); - services.Configure(configuration.GetSection(Constants.Configuration.ConfigPrefix + "TypeFinder")); - services.Configure(configuration.GetSection(Constants.Configuration.ConfigSecurityPrefix + "UserPassword")); - services.Configure(configuration.GetSection(Constants.Configuration.ConfigPrefix + "WebRouting")); + services.Configure(configuration.GetSection(Constants.Configuration.ConfigContent), o => o.BindNonPublicProperties = true); + services.Configure(configuration.GetSection(Constants.Configuration.ConfigCoreDebug)); + services.Configure(configuration.GetSection(Constants.Configuration.ConfigExceptionFilter)); + services.Configure(configuration.GetSection(Constants.Configuration.ConfigGlobal), o => o.BindNonPublicProperties = true); + services.Configure(configuration.GetSection(Constants.Configuration.ConfigHealthChecks)); + services.Configure(configuration.GetSection(Constants.Configuration.ConfigHosting), o => o.BindNonPublicProperties = true); + services.Configure(configuration.GetSection(Constants.Configuration.ConfigImaging)); + services.Configure(configuration.GetSection(Constants.Configuration.ConfigExamine)); + services.Configure(configuration.GetSection(Constants.Configuration.ConfigKeepAlive)); + services.Configure(configuration.GetSection(Constants.Configuration.ConfigLogging)); + services.Configure(configuration.GetSection(Constants.Configuration.ConfigMemberPassword)); + services.Configure(configuration.GetSection(Constants.Configuration.ConfigModelsBuilder), o => o.BindNonPublicProperties = true); + services.Configure(configuration.GetSection(Constants.Configuration.ConfigNuCache)); + services.Configure(configuration.GetSection(Constants.Configuration.ConfigRequestHandler)); + services.Configure(configuration.GetSection(Constants.Configuration.ConfigRuntime)); + services.Configure(configuration.GetSection(Constants.Configuration.ConfigSecurity)); + services.Configure(configuration.GetSection(Constants.Configuration.ConfigTours)); + services.Configure(configuration.GetSection(Constants.Configuration.ConfigTypeFinder)); + services.Configure(configuration.GetSection(Constants.Configuration.ConfigUserPassword)); + services.Configure(configuration.GetSection(Constants.Configuration.ConfigWebRouting)); return services; }