diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/EmbeddedResources/LanguageXmlTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/EmbeddedResources/LanguageXmlTests.cs new file mode 100644 index 0000000000..9b83c72804 --- /dev/null +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/EmbeddedResources/LanguageXmlTests.cs @@ -0,0 +1,36 @@ +using System.IO; +using System.Linq; +using System.Xml; +using Microsoft.Extensions.FileProviders; +using NUnit.Framework; +using Umbraco.Cms.Core.Composing; + +namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.EmbeddedResources +{ + [TestFixture] + public class LanguageXmlTests + { + [Test] + public void Can_Load_Language_Xml_Files() + { + var readFilesCount = 0; + var xmlDocument = new XmlDocument(); + + var languageProvider = new EmbeddedFileProvider(typeof(IAssemblyProvider).Assembly, "Umbraco.Cms.Core.EmbeddedResources.Lang"); + var files = languageProvider.GetDirectoryContents(string.Empty) + .Where(x => !x.IsDirectory && x.Name.EndsWith(".xml")); + + foreach (var languageFile in files) + { + using var stream = new StreamReader(languageFile.CreateReadStream()); + + // Load will throw an exception if the XML isn't valid. + xmlDocument.Load(stream); + readFilesCount++; + } + + // Ensure that at least one file was read. + Assert.AreNotEqual(0, readFilesCount); + } + } +} diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Web.Common/FileNameTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Web.Common/FileNameTests.cs index d9237d903e..226f59a61f 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Web.Common/FileNameTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Web.Common/FileNameTests.cs @@ -8,10 +8,12 @@ using System.Threading.Tasks; using AutoFixture.NUnit3; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.ViewFeatures; +using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.Options; using Moq; using NUnit.Framework; using Umbraco.Cms.Core; +using Umbraco.Cms.Core.Composing; using Umbraco.Cms.Core.Configuration.Models; using Umbraco.Cms.Core.Hosting; using Umbraco.Cms.Core.Services; @@ -94,6 +96,22 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Web.Common Assert.True(views.Contains(fileName), $"Expected {fileName} to exist, but it didn't"); } - + + [Test] + public void LanguageFilesAreLowerCase() + { + var languageProvider = new EmbeddedFileProvider(typeof(IAssemblyProvider).Assembly, "Umbraco.Cms.Core.EmbeddedResources.Lang"); + var files = languageProvider.GetDirectoryContents(string.Empty) + .Where(x => !x.IsDirectory && x.Name.EndsWith(".xml")) + .Select(x => x.Name); + + foreach (var fileName in files) + { + Assert.AreEqual( + fileName.ToLower(), + fileName, + $"Language files must be all lowercase but {fileName} is not lowercase."); + } + } } }