diff --git a/src/Umbraco.Core/Configuration/UmbracoSettings/ContentImagingElement.cs b/src/Umbraco.Core/Configuration/UmbracoSettings/ContentImagingElement.cs index 6b8542ec24..d07bfb3eda 100644 --- a/src/Umbraco.Core/Configuration/UmbracoSettings/ContentImagingElement.cs +++ b/src/Umbraco.Core/Configuration/UmbracoSettings/ContentImagingElement.cs @@ -13,10 +13,15 @@ namespace Umbraco.Core.Configuration.UmbracoSettings return new OptionalCommaDelimitedConfigurationElement( (CommaDelimitedConfigurationElement)this["imageFileTypes"], //set the default - new[] { "jpeg", "jpg", "gif", "bmp", "png", "tiff", "tif" }); + GetDefaultImageFileTypes()); } } + internal static string[] GetDefaultImageFileTypes() + { + return new[] {"jpeg", "jpg", "gif", "bmp", "png", "tiff", "tif"}; + } + [ConfigurationProperty("allowedAttributes")] internal CommaDelimitedConfigurationElement ImageTagAllowedAttributes { @@ -61,5 +66,16 @@ namespace Umbraco.Core.Configuration.UmbracoSettings } } + internal static ImagingAutoFillPropertiesCollection GetDefaultImageAutoFillProperties() + { + return new ImagingAutoFillPropertiesCollection + { + new ImagingAutoFillUploadFieldElement + { + Alias = "umbracoFile" + } + }; + } + } } \ No newline at end of file diff --git a/src/Umbraco.Core/Configuration/UmbracoSettings/RequestHandlerElement.cs b/src/Umbraco.Core/Configuration/UmbracoSettings/RequestHandlerElement.cs index cef84b71c3..3f57839e5a 100644 --- a/src/Umbraco.Core/Configuration/UmbracoSettings/RequestHandlerElement.cs +++ b/src/Umbraco.Core/Configuration/UmbracoSettings/RequestHandlerElement.cs @@ -47,7 +47,21 @@ namespace Umbraco.Core.Configuration.UmbracoSettings var urls = this[prop] as ConfigurationElement; if (urls != null && urls.ElementInformation.IsPresent == false) { - var dictionary = new Dictionary() + _defaultUrlReplacing = new UrlReplacingElement() + { + CharCollection = GetDefaultCharReplacements() + }; + + return _defaultUrlReplacing; + } + + return (UrlReplacingElement)this["urlReplacing"]; + } + } + + internal static CharCollection GetDefaultCharReplacements() + { + var dictionary = new Dictionary() { {' ',"-"}, {'\"',""}, @@ -77,28 +91,19 @@ namespace Umbraco.Core.Configuration.UmbracoSettings {'>',""} }; - //const string chars = @" ,"",',%,.,;,/,\,:,#,+,*,&,?,æ,ø,å,ä,ö,ü,ß,Ä,Ö,|,<,>"; + //const string chars = @" ,"",',%,.,;,/,\,:,#,+,*,&,?,æ,ø,å,ä,ö,ü,ß,Ä,Ö,|,<,>"; - var collection = new CharCollection(); - foreach (var c in dictionary) - { - collection.Add(new CharElement - { - Char = c.Key.ToString(CultureInfo.InvariantCulture), - Replacement = c.Value.ToString(CultureInfo.InvariantCulture) - }); - } - - _defaultUrlReplacing = new UrlReplacingElement() - { - CharCollection = collection - }; - - return _defaultUrlReplacing; - } - - return (UrlReplacingElement)this["urlReplacing"]; + var collection = new CharCollection(); + foreach (var c in dictionary) + { + collection.Add(new CharElement + { + Char = c.Key.ToString(CultureInfo.InvariantCulture), + Replacement = c.Value.ToString(CultureInfo.InvariantCulture) + }); } + + return collection; } bool IRequestHandlerSection.UseDomainPrefixes diff --git a/src/Umbraco.Core/Models/ContentExtensions.cs b/src/Umbraco.Core/Models/ContentExtensions.cs index e337493aff..00b44e74ac 100644 --- a/src/Umbraco.Core/Models/ContentExtensions.cs +++ b/src/Umbraco.Core/Models/ContentExtensions.cs @@ -425,7 +425,7 @@ namespace Umbraco.Core.Models if (UmbracoConfiguration.Current.UmbracoSettings.Content.ImageAutoFillProperties != null) { uploadFieldConfigNode = UmbracoConfiguration.Current.UmbracoSettings.Content.ImageAutoFillProperties - .Single(x => x.Alias == propertyTypeAlias); + .FirstOrDefault(x => x.Alias == propertyTypeAlias); } diff --git a/src/Umbraco.Core/Strings/LegacyShortStringHelper.cs b/src/Umbraco.Core/Strings/LegacyShortStringHelper.cs index 5af243f234..9d8f03427e 100644 --- a/src/Umbraco.Core/Strings/LegacyShortStringHelper.cs +++ b/src/Umbraco.Core/Strings/LegacyShortStringHelper.cs @@ -470,7 +470,7 @@ function isValidAlias(alias) {{ var newUrl = url.ToLowerInvariant(); foreach (var n in UmbracoConfiguration.Current.UmbracoSettings.RequestHandler.CharCollection) { - if (n.Char.IsNullOrWhiteSpace() == false) + if (n.Char != "") newUrl = newUrl.Replace(n.Char, n.Replacement); } diff --git a/src/Umbraco.Tests/App.config b/src/Umbraco.Tests/App.config index e4df374cd3..68af84d0d7 100644 --- a/src/Umbraco.Tests/App.config +++ b/src/Umbraco.Tests/App.config @@ -1,9 +1,58 @@ -
- + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -20,49 +69,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Umbraco.Tests/CodeFirst/StronglyTypedMapperTest.cs b/src/Umbraco.Tests/CodeFirst/StronglyTypedMapperTest.cs index 26054a6fdf..740215016b 100644 --- a/src/Umbraco.Tests/CodeFirst/StronglyTypedMapperTest.cs +++ b/src/Umbraco.Tests/CodeFirst/StronglyTypedMapperTest.cs @@ -7,6 +7,7 @@ using Umbraco.Tests.CodeFirst.TestModels; using Umbraco.Tests.PublishedContent; using Umbraco.Tests.TestHelpers; using Umbraco.Web; +using Rhino.Mocks; namespace Umbraco.Tests.CodeFirst { @@ -57,10 +58,8 @@ namespace Umbraco.Tests.CodeFirst #region Test setup public override void Initialize() - { - TestHelper.EnsureUmbracoSettingsConfig(); - - base.Initialize(); + { + base.Initialize(); } public override void TearDown() diff --git a/src/Umbraco.Tests/Configurations/FileSystemProviderTests.cs b/src/Umbraco.Tests/Configurations/FileSystemProviderTests.cs index e0bf108e6f..ae48b26eb1 100644 --- a/src/Umbraco.Tests/Configurations/FileSystemProviderTests.cs +++ b/src/Umbraco.Tests/Configurations/FileSystemProviderTests.cs @@ -11,7 +11,7 @@ namespace Umbraco.Tests.Configurations [Test] public void Can_Get_Media_Provider() { - var config = (FileSystemProvidersSection)ConfigurationManager.GetSection("FileSystemProviders"); + var config = (FileSystemProvidersSection)ConfigurationManager.GetSection("umbracoConfiguration/FileSystemProviders"); var providerConfig = config.Providers["media"]; Assert.That(providerConfig, Is.Not.Null); diff --git a/src/Umbraco.Tests/Configurations/UmbracoSettings/UmbracoSettingsTests.cs b/src/Umbraco.Tests/Configurations/UmbracoSettings/UmbracoSettingsTests.cs index cadc01746d..11e792a4db 100644 --- a/src/Umbraco.Tests/Configurations/UmbracoSettings/UmbracoSettingsTests.cs +++ b/src/Umbraco.Tests/Configurations/UmbracoSettings/UmbracoSettingsTests.cs @@ -29,7 +29,6 @@ namespace Umbraco.Tests.Configurations.UmbracoSettings } else { - //Section = configuration.GetSection("umbracoConfiguration/settings") as UmbracoSettingsSection; SettingsSection = UmbracoConfiguration.For(configuration); } diff --git a/src/Umbraco.Tests/CoreStrings/CmsHelperCasingTests.cs b/src/Umbraco.Tests/CoreStrings/CmsHelperCasingTests.cs index 477a9a5b05..2462f55a5d 100644 --- a/src/Umbraco.Tests/CoreStrings/CmsHelperCasingTests.cs +++ b/src/Umbraco.Tests/CoreStrings/CmsHelperCasingTests.cs @@ -3,15 +3,26 @@ using System.Collections.Generic; using System.Linq; using System.Text; using NUnit.Framework; +using Rhino.Mocks; using Umbraco.Core; using Umbraco.Core.Strings; using Umbraco.Core.ObjectResolution; +using Umbraco.Tests.TestHelpers; namespace Umbraco.Tests.CoreStrings { [TestFixture] public class CmsHelperCasingTests { + [SetUp] + public void Setup() + { + //set default config + var config = SettingsForTests.GetDefault(); + SettingsForTests.ConfigureSettings(config); + + } + [TestCase("thisIsTheEnd", "This Is The End")] [TestCase("th", "Th")] [TestCase("t", "t")] diff --git a/src/Umbraco.Tests/CoreStrings/LegacyShortStringHelperTests.cs b/src/Umbraco.Tests/CoreStrings/LegacyShortStringHelperTests.cs index e26a8a9d07..ea614a7d6a 100644 --- a/src/Umbraco.Tests/CoreStrings/LegacyShortStringHelperTests.cs +++ b/src/Umbraco.Tests/CoreStrings/LegacyShortStringHelperTests.cs @@ -18,14 +18,14 @@ namespace Umbraco.Tests.CoreStrings [SetUp] public void Setup() { - TestHelper.EnsureUmbracoSettingsConfig(); + var config = SettingsForTests.GetDefault(); + SettingsForTests.ConfigureSettings(config); _helper = new LegacyShortStringHelper(); } [TearDown] public void TearDown() { - TestHelper.CleanUmbracoSettingsConfig(); } diff --git a/src/Umbraco.Tests/IO/FileSystemProviderManagerTests.cs b/src/Umbraco.Tests/IO/FileSystemProviderManagerTests.cs index 48d5819ebb..56b487a82e 100644 --- a/src/Umbraco.Tests/IO/FileSystemProviderManagerTests.cs +++ b/src/Umbraco.Tests/IO/FileSystemProviderManagerTests.cs @@ -5,12 +5,21 @@ using System.Linq; using System.Text; using NUnit.Framework; using Umbraco.Core.IO; +using Umbraco.Tests.TestHelpers; namespace Umbraco.Tests.IO { [TestFixture] public class FileSystemProviderManagerTests { + [SetUp] + public void Setup() + { + //init the config singleton + var config = SettingsForTests.GetDefault(); + SettingsForTests.ConfigureSettings(config); + } + [Test] public void Can_Get_Base_File_System() { @@ -33,7 +42,6 @@ namespace Umbraco.Tests.IO Assert.Throws(() => FileSystemProviderManager.Current.GetFileSystemProvider()); } - #region /// /// Used in unit tests, for a typed file system we need to inherit from FileSystemWrapper and they MUST have a ctor @@ -46,6 +54,5 @@ namespace Umbraco.Tests.IO } } - #endregion } } diff --git a/src/Umbraco.Tests/Models/ContentTests.cs b/src/Umbraco.Tests/Models/ContentTests.cs index 321f106a5e..14f3029830 100644 --- a/src/Umbraco.Tests/Models/ContentTests.cs +++ b/src/Umbraco.Tests/Models/ContentTests.cs @@ -17,13 +17,14 @@ namespace Umbraco.Tests.Models [SetUp] public void Init() { - TestHelper.EnsureUmbracoSettingsConfig(); + var config = SettingsForTests.GetDefault(); + SettingsForTests.ConfigureSettings(config); } [TearDown] public void Dispose() { - TestHelper.CleanUmbracoSettingsConfig(); + } [TestCase("-1,-20,12,34,56", false)] diff --git a/src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs b/src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs index f42175c403..e010d9d936 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs @@ -32,14 +32,14 @@ namespace Umbraco.Tests.TestHelpers TestHelper.EnsureUmbracoSettingsConfig(); //mock the Umbraco settings that we need - //var settings = MockRepository.GenerateStub(); - var settings = SettingsForTests.GetDefault(); - settings.Stub(x => x.Content.UseLegacyXmlSchema).Return(false); - settings.Stub(x => x.Content.ForceSafeAliases).Return(true); - settings.Stub(x => x.Content.UmbracoLibraryCacheDuration).Return(1800); - SettingsForTests.ConfigureSettings(settings); + var settings = SettingsForTests.GetMockSettings(); + //sets the global singleton to use the mocked format + SettingsForTests.ConfigureSettings(settings); + //set our local variable for tests to use (preferably) + UmbracoSettings = settings; + //Create the legacy prop-eds mapping LegacyPropertyEditorIdToAliasConverter.CreateMappingsForCoreEditors(); @@ -77,6 +77,8 @@ namespace Umbraco.Tests.TestHelpers }); } + protected virtual IUmbracoSettingsSection UmbracoSettings { get; private set; } + /// /// By default this returns false which means the plugin manager will not be reset so it doesn't need to re-scan /// all of the assemblies. Inheritors can override this if plugin manager resetting is required, generally needs diff --git a/src/Umbraco.Tests/TestHelpers/SettingsForTests.cs b/src/Umbraco.Tests/TestHelpers/SettingsForTests.cs index 6f81b4a606..a841292762 100644 --- a/src/Umbraco.Tests/TestHelpers/SettingsForTests.cs +++ b/src/Umbraco.Tests/TestHelpers/SettingsForTests.cs @@ -24,83 +24,59 @@ namespace Umbraco.Tests.TestHelpers UmbracoConfiguration.Current.UmbracoSettings = settings; } - ///// - ///// Returns generated settings which can be stubbed to return whatever values necessary - ///// - ///// - //public static IUmbracoSettings GetMockSettings() - //{ - // var settings = MockRepository.GenerateMock(); + /// + /// Returns generated settings which can be stubbed to return whatever values necessary + /// + /// + public static IUmbracoSettingsSection GetMockSettings() + { + var settings = MockRepository.GenerateStub(); - // var content = MockRepository.GenerateMock(); - // var security = MockRepository.GenerateMock(); - // var requestHandler = MockRepository.GenerateMock(); - // var templates = MockRepository.GenerateMock(); - // var dev = MockRepository.GenerateMock(); - // var viewStateMover = MockRepository.GenerateMock(); - // var logging = MockRepository.GenerateMock(); - // var tasks = MockRepository.GenerateMock(); - // var distCall = MockRepository.GenerateMock(); - // var repos = MockRepository.GenerateMock(); - // var providers = MockRepository.GenerateMock(); - // var help = MockRepository.GenerateMock(); - // var routing = MockRepository.GenerateMock(); - // var scripting = MockRepository.GenerateMock(); + var content = MockRepository.GenerateStub(); + var security = MockRepository.GenerateStub(); + var requestHandler = MockRepository.GenerateStub(); + var templates = MockRepository.GenerateStub(); + var dev = MockRepository.GenerateStub(); + var viewStateMover = MockRepository.GenerateStub(); + var logging = MockRepository.GenerateStub(); + var tasks = MockRepository.GenerateStub(); + var distCall = MockRepository.GenerateStub(); + var repos = MockRepository.GenerateStub(); + var providers = MockRepository.GenerateStub(); + var help = MockRepository.GenerateStub(); + var routing = MockRepository.GenerateStub(); + var scripting = MockRepository.GenerateStub(); - // settings.Stub(x => x.Content).Return(content); - // settings.Stub(x => x.Security).Return(security); - // settings.Stub(x => x.RequestHandler).Return(requestHandler); - // settings.Stub(x => x.Templates).Return(templates); - // settings.Stub(x => x.Developer).Return(dev); - // settings.Stub(x => x.ViewstateMoverModule).Return(viewStateMover); - // settings.Stub(x => x.Logging).Return(logging); - // settings.Stub(x => x.ScheduledTasks).Return(tasks); - // settings.Stub(x => x.DistributedCall).Return(distCall); - // settings.Stub(x => x.PackageRepositories).Return(repos); - // settings.Stub(x => x.Providers).Return(providers); - // settings.Stub(x => x.Help).Return(help); - // settings.Stub(x => x.WebRouting).Return(routing); - // settings.Stub(x => x.Scripting).Return(scripting); + settings.Stub(x => x.Content).Return(content); + settings.Stub(x => x.Security).Return(security); + settings.Stub(x => x.RequestHandler).Return(requestHandler); + settings.Stub(x => x.Templates).Return(templates); + settings.Stub(x => x.Developer).Return(dev); + settings.Stub(x => x.ViewStateMoverModule).Return(viewStateMover); + settings.Stub(x => x.Logging).Return(logging); + settings.Stub(x => x.ScheduledTasks).Return(tasks); + settings.Stub(x => x.DistributedCall).Return(distCall); + settings.Stub(x => x.PackageRepositories).Return(repos); + settings.Stub(x => x.Providers).Return(providers); + settings.Stub(x => x.Help).Return(help); + settings.Stub(x => x.WebRouting).Return(routing); + settings.Stub(x => x.Scripting).Return(scripting); - // return settings; - //} + //Now configure some defaults - the defaults in the config section classes do NOT pertain to the mocked data!! + settings.Content.Stub(x => x.UseLegacyXmlSchema).Return(false); + settings.Content.Stub(x => x.ForceSafeAliases).Return(true); + settings.Content.Stub(x => x.ImageAutoFillProperties).Return(ContentImagingElement.GetDefaultImageAutoFillProperties()); + settings.Content.Stub(x => x.ImageFileTypes).Return(ContentImagingElement.GetDefaultImageFileTypes()); + settings.RequestHandler.Stub(x => x.AddTrailingSlash).Return(true); + settings.RequestHandler.Stub(x => x.UseDomainPrefixes).Return(false); + settings.RequestHandler.Stub(x => x.CharCollection).Return(RequestHandlerElement.GetDefaultCharReplacements()); + settings.Content.Stub(x => x.UmbracoLibraryCacheDuration).Return(1800); + settings.WebRouting.Stub(x => x.UrlProviderMode).Return("Auto"); + - //public static int UmbracoLibraryCacheDuration - //{ - // get { return LegacyUmbracoSettings.UmbracoLibraryCacheDuration; } - // set { LegacyUmbracoSettings.UmbracoLibraryCacheDuration = value; } - //} - - //public static bool UseLegacyXmlSchema - //{ - // get { return LegacyUmbracoSettings.UseLegacyXmlSchema; } - // set { LegacyUmbracoSettings.UseLegacyXmlSchema = value; } - //} - - //public static bool AddTrailingSlash - //{ - // get { return LegacyUmbracoSettings.AddTrailingSlash; } - // set { LegacyUmbracoSettings.AddTrailingSlash = value; } - //} - - //public static bool UseDomainPrefixes - //{ - // get { return LegacyUmbracoSettings.UseDomainPrefixes; } - // set { LegacyUmbracoSettings.UseDomainPrefixes = value; } - //} - - //public static string SettingsFilePath - //{ - // get { return LegacyUmbracoSettings.SettingsFilePath; } - // set { LegacyUmbracoSettings.SettingsFilePath = value; } - //} - - //public static bool ForceSafeAliases - //{ - // get { return LegacyUmbracoSettings.ForceSafeAliases; } - // set { LegacyUmbracoSettings.ForceSafeAliases = value; } - //} + return settings; + } // from appSettings diff --git a/src/Umbraco.Web/Routing/UrlProvider.cs b/src/Umbraco.Web/Routing/UrlProvider.cs index 50c62497ca..9235248d54 100644 --- a/src/Umbraco.Web/Routing/UrlProvider.cs +++ b/src/Umbraco.Web/Routing/UrlProvider.cs @@ -28,11 +28,6 @@ namespace Umbraco.Web.Routing var provider = UrlProviderMode.Auto; Mode = provider; - //if (Enum.TryParse(UmbracoConfiguration.For(), out provider)) - //{ - - //} - if (Enum.TryParse(UmbracoConfiguration.Current.UmbracoSettings.WebRouting.UrlProviderMode, out provider)) { Mode = provider; diff --git a/src/Umbraco.Web/Trees/TreeNode.cs b/src/Umbraco.Web/Trees/TreeNode.cs index 769bef4719..fd62dff815 100644 --- a/src/Umbraco.Web/Trees/TreeNode.cs +++ b/src/Umbraco.Web/Trees/TreeNode.cs @@ -53,6 +53,7 @@ namespace Umbraco.Web.Trees [DataMember(Name = "name")] public string Title { get; set; } + //TODO: This doesn't seem to be used by anything! /// /// Gets or sets the node path. /// diff --git a/src/umbraco.businesslogic/UmbracoSettings.cs b/src/umbraco.businesslogic/UmbracoSettings.cs index 11803dc1d8..5f067477ac 100644 --- a/src/umbraco.businesslogic/UmbracoSettings.cs +++ b/src/umbraco.businesslogic/UmbracoSettings.cs @@ -619,12 +619,11 @@ namespace umbraco private static string _path; /// - /// Gets/sets the settings file path, the setter can be used in unit tests + /// Gets the settings file path /// internal static string SettingsFilePath { get { return _path ?? (_path = GlobalSettings.FullpathToRoot + Path.DirectorySeparatorChar + "config" + Path.DirectorySeparatorChar); } - set { _path = value; } } internal const string Filename = "umbracoSettings.config";