diff --git a/src/Umbraco.Core/Configuration/Models/SmtpSettings.cs b/src/Umbraco.Core/Configuration/Models/SmtpSettings.cs index 8dac35dbee..c68b0f5a97 100644 --- a/src/Umbraco.Core/Configuration/Models/SmtpSettings.cs +++ b/src/Umbraco.Core/Configuration/Models/SmtpSettings.cs @@ -1,4 +1,5 @@ -using System.ComponentModel.DataAnnotations; +using System; +using System.ComponentModel.DataAnnotations; using System.Net.Mail; using Umbraco.Core.Configuration.Models.Validation; @@ -16,7 +17,18 @@ namespace Umbraco.Core.Configuration.Models public string PickupDirectoryLocation { get; set; } - public SmtpDeliveryMethod DeliveryMethod { get; set; } + // See notes on ContentSettings.MacroErrors + internal string DeliveryMethod { get; set; } + + public SmtpDeliveryMethod DeliveryMethodValue + { + get + { + return Enum.TryParse(DeliveryMethod, true, out var value) + ? value + : SmtpDeliveryMethod.Network; + } + } public string Username { get; set; } diff --git a/src/Umbraco.Core/Configuration/Models/Validation/GlobalSettingsValidator.cs b/src/Umbraco.Core/Configuration/Models/Validation/GlobalSettingsValidator.cs index 40ecb0bedd..3599c1af4d 100644 --- a/src/Umbraco.Core/Configuration/Models/Validation/GlobalSettingsValidator.cs +++ b/src/Umbraco.Core/Configuration/Models/Validation/GlobalSettingsValidator.cs @@ -1,4 +1,5 @@ -using Microsoft.Extensions.Options; +using System.Net.Mail; +using Microsoft.Extensions.Options; namespace Umbraco.Core.Configuration.Models.Validation { @@ -17,7 +18,8 @@ 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("Global:Smtp", value, "A valid From email address is required", out message) && + ValidateStringIsOneOfEnumValues("Global:Smtp:DeliveryMethod", value.DeliveryMethod, typeof(SmtpDeliveryMethod), out message); } } } diff --git a/src/Umbraco.Infrastructure/Users/EmailSender.cs b/src/Umbraco.Infrastructure/Users/EmailSender.cs index c45a9af0d3..0aa7d12181 100644 --- a/src/Umbraco.Infrastructure/Users/EmailSender.cs +++ b/src/Umbraco.Infrastructure/Users/EmailSender.cs @@ -89,7 +89,7 @@ namespace Umbraco.Core } var mailMessage = ConstructEmailMessage(message); - if (_globalSettings.Smtp.DeliveryMethod == SmtpDeliveryMethod.Network) + if (_globalSettings.Smtp.DeliveryMethodValue == SmtpDeliveryMethod.Network) { await client.SendAsync(mailMessage); } diff --git a/src/Umbraco.Tests.Common/Builders/ConfigurationModelBuilders/NuCacheSettingsBuilder.cs b/src/Umbraco.Tests.Common/Builders/ConfigurationModelBuilders/NuCacheSettingsBuilder.cs index 35d5c66e4a..53e40c47fa 100644 --- a/src/Umbraco.Tests.Common/Builders/ConfigurationModelBuilders/NuCacheSettingsBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/ConfigurationModelBuilders/NuCacheSettingsBuilder.cs @@ -4,9 +4,22 @@ namespace Umbraco.Tests.Common.Builders { public class NuCacheSettingsBuilder : BuilderBase { + private int? _bTreeBlockSize; + + public NuCacheSettingsBuilder WithBTreeBlockSize(int bTreeBlockSize) + { + _bTreeBlockSize = bTreeBlockSize; + return this; + } + public override NuCacheSettings Build() { - return new NuCacheSettings(); + var bTreeBlockSize = _bTreeBlockSize ?? 4096; + + return new NuCacheSettings + { + BTreeBlockSize = bTreeBlockSize + }; } } } diff --git a/src/Umbraco.Tests.Common/Builders/ConfigurationModelBuilders/SmtpSettingsBuilder.cs b/src/Umbraco.Tests.Common/Builders/ConfigurationModelBuilders/SmtpSettingsBuilder.cs index f979197e4c..34ffcd316e 100644 --- a/src/Umbraco.Tests.Common/Builders/ConfigurationModelBuilders/SmtpSettingsBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/ConfigurationModelBuilders/SmtpSettingsBuilder.cs @@ -17,7 +17,7 @@ namespace Umbraco.Tests.Common.Builders private string _host; private int? _port; private string _pickupDirectoryLocation; - private SmtpDeliveryMethod? _deliveryMethod; + private string _deliveryMethod; private string _username; private string _password; @@ -43,7 +43,7 @@ namespace Umbraco.Tests.Common.Builders return this; } - public SmtpSettingsBuilder WithPost(int port) + public SmtpSettingsBuilder WithPort(int port) { _port = port; return this; @@ -61,19 +61,25 @@ namespace Umbraco.Tests.Common.Builders return this; } - public SmtpSettingsBuilder WithDeliveryMethod(SmtpDeliveryMethod deliveryMethod) + public SmtpSettingsBuilder WithDeliveryMethod(string deliveryMethod) { _deliveryMethod = deliveryMethod; return this; } + public SmtpSettingsBuilder WithDeliveryMethod(SmtpDeliveryMethod deliveryMethod) + { + _deliveryMethod = deliveryMethod.ToString(); + return this; + } + public override SmtpSettings Build() { var from = _from ?? null; var host = _host ?? null; var port = _port ?? 25; var pickupDirectoryLocation = _pickupDirectoryLocation ?? null; - var deliveryMethod = _deliveryMethod ?? SmtpDeliveryMethod.Network; + var deliveryMethod = _deliveryMethod ?? SmtpDeliveryMethod.Network.ToString(); var username = _username ?? null; var password = _password ?? null; 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 3fa27dc6b3..6d8fd8754f 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 @@ -10,7 +10,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Validation public class ContentSettingsValidationTests { [Test] - public void ReturnsSuccessResponseForValidConfiguration() + public void Returns_Success_ForValid_Configuration() { var validator = new ContentSettingsValidator(); var options = BuildContentSettings(); @@ -19,7 +19,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Validation } [Test] - public void ReturnsFailResponseForConfigurationWithInvalidMacroErrorsField() + public void Returns_Fail_For_Configuration_With_Invalid_MacroErrors_Field() { var validator = new ContentSettingsValidator(); var options = BuildContentSettings(macroErrors: "invalid"); @@ -28,7 +28,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Validation } [Test] - public void ReturnsFailResponseForConfigurationWithInvalidError404CollectionDueToDuplicateId() + public void Returns_Fail_For_Configuration_With_Invalid_Error404Collection_Due_To_Duplicate_Id() { var validator = new ContentSettingsValidator(); var options = BuildContentSettings(contentXPath: "/aaa/bbb"); @@ -37,7 +37,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Validation } [Test] - public void ReturnsFailResponseForConfigurationWithInvalidError404CollectionDueToEmptyCulture() + public void Returns_Fail_For_Configuration_With_Invalid_Error404Collection_Due_To_Empty_Culture() { var validator = new ContentSettingsValidator(); var options = BuildContentSettings(culture: string.Empty); @@ -46,7 +46,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Validation } [Test] - public void ReturnsFailResponseForConfigurationWithInvalidAutoFillImagePropertiesCollection() + public void Returns_Fail_For_Configuration_With_Invalid_AutoFillImageProperties_Collection() { var validator = new ContentSettingsValidator(); var options = BuildContentSettings(culture: string.Empty); 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 index 18f3d8f1b4..b055c626c7 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/GlobalSettingsValidatorTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/GlobalSettingsValidatorTests.cs @@ -9,28 +9,38 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Validation public class GlobalSettingsValidationTests { [Test] - public void ReturnsSuccessResponseForValidConfiguration() + public void Returns_Success_ForValid_Configuration() { var validator = new GlobalSettingsValidator(); - var options = BuildGlobalSettings("test@test.com"); + var options = BuildGlobalSettings(); var result = validator.Validate("settings", options); Assert.True(result.Succeeded); } [Test] - public void ReturnsFailResponseForConfigurationWithInvalidSmtpFromField() + public void Returns_Fail_For_Configuration_With_Invalid_SmtpFrom_Field() { var validator = new GlobalSettingsValidator(); - var options = BuildGlobalSettings("invalid"); + var options = BuildGlobalSettings(smtpEmail: "invalid"); var result = validator.Validate("settings", options); Assert.False(result.Succeeded); } - private static GlobalSettings BuildGlobalSettings(string smtpEmail) + [Test] + public void Returns_Fail_For_Configuration_With_Invalid_SmtpDeliveryMethod_Field() + { + var validator = new GlobalSettingsValidator(); + var options = BuildGlobalSettings(smtpDeliveryMethod: "invalid"); + var result = validator.Validate("settings", options); + Assert.False(result.Succeeded); + } + + private static GlobalSettings BuildGlobalSettings(string smtpEmail = "test@test.com", string smtpDeliveryMethod = "Network") { return new GlobalSettingsBuilder() .AddSmtpSettings() .WithFrom(smtpEmail) + .WithDeliveryMethod(smtpDeliveryMethod) .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 index 105356f2b9..eec97947f9 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/HostingSettingsValidatorTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/HostingSettingsValidatorTests.cs @@ -8,7 +8,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Validation public class HostingSettingsValidatorTests { [Test] - public void ReturnsSuccessResponseForValidConfiguration() + public void Returns_Success_ForValid_Configuration() { var validator = new HostingSettingsValidator(); var options = new HostingSettingsBuilder().Build(); @@ -17,7 +17,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Validation } [Test] - public void ReturnsFailResponseForConfigurationWithInvalidLocalTempStorageLocationField() + public void Returns_Fail_For_Configuration_With_Invalid_LocalTempStorage_Field() { var validator = new HostingSettingsValidator(); var options = new HostingSettingsBuilder().WithLocalTempStorageLocation("invalid").Build(); 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 index 2fd7b19251..9388dedcb2 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/ModelsBuilderSettingsValidatorTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/ModelsBuilderSettingsValidatorTests.cs @@ -8,7 +8,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Validation public class ModelsBuilderSettingsValidatorTests { [Test] - public void ReturnsSuccessResponseForValidConfiguration() + public void Returns_Success_ForValid_Configuration() { var validator = new ModelsBuilderSettingsValidator(); var options = new ModelsBuilderSettingsBuilder().Build(); @@ -17,7 +17,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Validation } [Test] - public void ReturnsFailResponseForConfigurationWithInvalidModelsModeField() + public void Returns_Fail_For_Configuration_With_Invalid_ModelsMode_Field() { var validator = new ModelsBuilderSettingsValidator(); var options = new ModelsBuilderSettingsBuilder().WithModelsMode("invalid").Build(); 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 index b19ec120d0..4548d95ccf 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/RequestHandlerSettingsValidatorTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/RequestHandlerSettingsValidatorTests.cs @@ -8,7 +8,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Validation public class RequestHandlerSettingsValidatorTests { [Test] - public void ReturnsSuccessResponseForValidConfiguration() + public void Returns_Success_ForValid_Configuration() { var validator = new RequestHandlerSettingsValidator(); var options = new RequestHandlerSettingsBuilder().Build(); @@ -17,7 +17,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Validation } [Test] - public void ReturnsFailResponseForConfigurationWithInvalidConvertUrlsToAsciiField() + public void Returns_Fail_For_Configuration_With_Invalid_ConvertUrlsToAscii_Field() { var validator = new RequestHandlerSettingsValidator(); var options = new RequestHandlerSettingsBuilder().WithConvertUrlsToAscii("invalid").Build(); diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/ConfigurationModelBuilders/ContentSettingsBuilderTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/ConfigurationModelBuilders/ContentSettingsBuilderTests.cs new file mode 100644 index 0000000000..a9c6dac1e7 --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/ConfigurationModelBuilders/ContentSettingsBuilderTests.cs @@ -0,0 +1,65 @@ +using System; +using System.Linq; +using NUnit.Framework; +using Umbraco.Tests.Common.Builders; + +namespace Umbraco.Tests.UnitTests.Umbraco.Tests.Common.Builders +{ + [TestFixture] + public class ContentSettingsBuilderTests + { + [Test] + public void Is_Built_Correctly() + { + // Arrange + const string autoFillImagePropertyAlias = "x"; + const string autoFillImagePropertyWidthFieldAlias = "w"; + const string autoFillImagePropertyHeightFieldAlias = "h"; + const string autoFillImagePropertyLengthFieldAlias = "l"; + const string autoFillImagePropertyExtensionFieldAlias = "e"; + const int errorPageContentId = 100; + var errorPageContentKey = Guid.NewGuid(); + const string errorPageContentXPath = "/aaa/bbb"; + const string errorPageCulture = "en-GB"; + + var builder = new ContentSettingsBuilder(); + + // Act + var contentSettings = builder + .AddImaging() + .AddAutoFillImageProperty() + .WithAlias(autoFillImagePropertyAlias) + .WithWidthFieldAlias(autoFillImagePropertyWidthFieldAlias) + .WithHeightFieldAlias(autoFillImagePropertyHeightFieldAlias) + .WithLengthFieldAlias(autoFillImagePropertyLengthFieldAlias) + .WithExtensionFieldAlias(autoFillImagePropertyExtensionFieldAlias) + .Done() + .Done() + .AddErrorPage() + .WithContentId(errorPageContentId) + .WithContentKey(errorPageContentKey) + .WithContentXPath(errorPageContentXPath) + .WithCulture(errorPageCulture) + .Done() + .Build(); + + // Assert + Assert.AreEqual(1, contentSettings.Imaging.AutoFillImageProperties.Count()); + + var autoFillImageProperty = contentSettings.Imaging.AutoFillImageProperties.First(); + Assert.AreEqual(autoFillImagePropertyAlias, autoFillImageProperty.Alias); + Assert.AreEqual(autoFillImagePropertyWidthFieldAlias, autoFillImageProperty.WidthFieldAlias); + Assert.AreEqual(autoFillImagePropertyHeightFieldAlias, autoFillImageProperty.HeightFieldAlias); + Assert.AreEqual(autoFillImagePropertyLengthFieldAlias, autoFillImageProperty.LengthFieldAlias); + Assert.AreEqual(autoFillImagePropertyExtensionFieldAlias, autoFillImageProperty.ExtensionFieldAlias); + + Assert.AreEqual(1, contentSettings.Error404Collection.Count()); + + var errorPage = contentSettings.Error404Collection.First(); + Assert.AreEqual(errorPageContentId, errorPage.ContentId); + Assert.AreEqual(errorPageContentKey, errorPage.ContentKey); + Assert.AreEqual(errorPageContentXPath, errorPage.ContentXPath); + Assert.AreEqual(errorPageCulture, errorPage.Culture); + } + } +} diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/ConfigurationModelBuilders/GlobalSettingsBuilderTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/ConfigurationModelBuilders/GlobalSettingsBuilderTests.cs new file mode 100644 index 0000000000..350572153f --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/ConfigurationModelBuilders/GlobalSettingsBuilderTests.cs @@ -0,0 +1,104 @@ +using System.Net.Mail; +using NUnit.Framework; +using Umbraco.Tests.Common.Builders; + +namespace Umbraco.Tests.UnitTests.Umbraco.Tests.Common.Builders +{ + [TestFixture] + public class GlobalSettingsBuilderTests + { + [Test] + public void Is_Built_Correctly() + { + // Arrange + const string configurationStatus = "9.0.1"; + const string databaseFactoryServerVersion = "testServerVersion"; + const string defaultUiLanguage = "en-GB"; + const bool disableElectionForSingleServer = true; + const bool hideTopLevelNodeFromPath = true; + const bool installEmptyDatabase = true; + const bool installMissingDatabase = true; + const string umbracoPath = "~/testumbraco"; + const string registerType = "testRegisterType"; + const string reservedPaths = "/custom"; + const string reservedUrls = "~/custom,"; + const int timeOutInMinutes = 20; + const string umbracoCssPath = "~/testcss"; + const string umbracoMediaPath = "~/testmedia"; + const string umbracoScriptsPath = "~/testscripts"; + const string mainDomLock = "testMainDomLock"; + const string noNodesViewPath = "~/config/splashes/MyNoNodes.cshtml"; + const bool useHttps = true; + const int versionCheckPeriod = 1; + const string smtpFrom = "test@test.com"; + const string smtpHost = "test.com"; + const int smtpPort = 225; + const SmtpDeliveryMethod smtpDeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory; + const string smtpPickupDirectoryLocation = "c:\\test"; + const string smtpUsername = "testuser"; + const string smtpPassword = "testpass"; + + var builder = new GlobalSettingsBuilder(); + + // Act + var globalSettings = builder + .WithConfigurationStatus(configurationStatus) + .WithDatabaseFactoryServerVersion(databaseFactoryServerVersion) + .WithDefaultUiLanguage(defaultUiLanguage) + .WithDisableElectionForSingleServer(disableElectionForSingleServer) + .WithHideTopLevelNodeFromPath(hideTopLevelNodeFromPath) + .WithInstallEmptyDatabase(installEmptyDatabase) + .WithInstallMissingDatabase(installMissingDatabase) + .WithUmbracoPath(umbracoPath) + .WithRegisterType(registerType) + .WithReservedPaths(reservedPaths) + .WithReservedUrls(reservedUrls) + .WithTimeOutInMinutes(timeOutInMinutes) + .WithUmbracoCssPath(umbracoCssPath) + .WithUmbracoMediaPath(umbracoMediaPath) + .WithUmbracoScriptsPath(umbracoScriptsPath) + .WithMainDomLock(mainDomLock) + .WithNoNodesViewPath(noNodesViewPath) + .WithUseHttps(useHttps) + .WithVersionCheckPeriod(versionCheckPeriod) + .AddSmtpSettings() + .WithFrom(smtpFrom) + .WithHost(smtpHost) + .WithPort(smtpPort) + .WithDeliveryMethod(smtpDeliveryMethod.ToString()) + .WithPickupDirectoryLocation(smtpPickupDirectoryLocation) + .WithUsername(smtpUsername) + .WithPassword(smtpPassword) + .Done() + .Build(); + + // Assert + Assert.AreEqual(configurationStatus, globalSettings.ConfigurationStatus); + Assert.AreEqual(databaseFactoryServerVersion, globalSettings.DatabaseFactoryServerVersion); + Assert.AreEqual(defaultUiLanguage, globalSettings.DefaultUILanguage); + Assert.AreEqual(disableElectionForSingleServer, globalSettings.DisableElectionForSingleServer); + Assert.AreEqual(hideTopLevelNodeFromPath, globalSettings.HideTopLevelNodeFromPath); + Assert.AreEqual(installEmptyDatabase, globalSettings.InstallEmptyDatabase); + Assert.AreEqual(installMissingDatabase, globalSettings.InstallMissingDatabase); + Assert.AreEqual(umbracoPath, globalSettings.UmbracoPath); + Assert.AreEqual(registerType, globalSettings.RegisterType); + Assert.AreEqual(reservedPaths, globalSettings.ReservedPaths); + Assert.AreEqual(reservedUrls, globalSettings.ReservedUrls); + Assert.AreEqual(timeOutInMinutes, globalSettings.TimeOutInMinutes); + Assert.AreEqual(umbracoCssPath, globalSettings.UmbracoCssPath); + Assert.AreEqual(umbracoMediaPath, globalSettings.UmbracoMediaPath); + Assert.AreEqual(umbracoScriptsPath, globalSettings.UmbracoScriptsPath); + Assert.AreEqual(mainDomLock, globalSettings.MainDomLock); + Assert.AreEqual(noNodesViewPath, globalSettings.NoNodesViewPath); + Assert.AreEqual(useHttps, globalSettings.UseHttps); + Assert.AreEqual(versionCheckPeriod, globalSettings.VersionCheckPeriod); + Assert.AreEqual(smtpFrom, globalSettings.Smtp.From); + Assert.AreEqual(smtpHost, globalSettings.Smtp.Host); + Assert.AreEqual(smtpPort, globalSettings.Smtp.Port); + Assert.AreEqual(smtpDeliveryMethod, globalSettings.Smtp.DeliveryMethodValue); + Assert.AreEqual(smtpPickupDirectoryLocation, globalSettings.Smtp.PickupDirectoryLocation); + Assert.AreEqual(smtpUsername, globalSettings.Smtp.Username); + Assert.AreEqual(smtpPassword, globalSettings.Smtp.Password); + } + } +} diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/ConfigurationModelBuilders/ModelsBuilderSettingsBuilderTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/ConfigurationModelBuilders/ModelsBuilderSettingsBuilderTests.cs new file mode 100644 index 0000000000..d3a388bbb6 --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/ConfigurationModelBuilders/ModelsBuilderSettingsBuilderTests.cs @@ -0,0 +1,27 @@ +using NUnit.Framework; +using Umbraco.Core.Configuration; +using Umbraco.Tests.Common.Builders; + +namespace Umbraco.Tests.UnitTests.Umbraco.Tests.Common.Builders +{ + [TestFixture] + public class ModelsBuilderSettingsBuilderTests + { + [Test] + public void Is_Built_Correctly() + { + // Arrange + const string modelsMode = "PureLive"; + + var builder = new ModelsBuilderSettingsBuilder(); + + // Act + var modelsBuilderSettings = builder + .WithModelsMode(modelsMode) + .Build(); + + // Assert + Assert.AreEqual(ModelsMode.PureLive, modelsBuilderSettings.ModelsModeValue); + } + } +} diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/ConfigurationModelBuilders/NuCacheSettingsBuilderTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/ConfigurationModelBuilders/NuCacheSettingsBuilderTests.cs new file mode 100644 index 0000000000..258a845f70 --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/ConfigurationModelBuilders/NuCacheSettingsBuilderTests.cs @@ -0,0 +1,26 @@ +using NUnit.Framework; +using Umbraco.Tests.Common.Builders; + +namespace Umbraco.Tests.UnitTests.Umbraco.Tests.Common.Builders +{ + [TestFixture] + public class NuCacheSettingsBuilderTests + { + [Test] + public void Is_Built_Correctly() + { + // Arrange + const int bTreeBlockSize = 2048; + + var builder = new NuCacheSettingsBuilder(); + + // Act + var nuCacheSettings = builder + .WithBTreeBlockSize(bTreeBlockSize) + .Build(); + + // Assert + Assert.AreEqual(bTreeBlockSize, nuCacheSettings.BTreeBlockSize); + } + } +} diff --git a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs index 83f123b25b..cba7c4fcb2 100644 --- a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs @@ -138,7 +138,7 @@ namespace Umbraco.Extensions 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")); + 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"));