diff --git a/.gitignore b/.gitignore index 55dde7714..6f327b8d0 100644 --- a/.gitignore +++ b/.gitignore @@ -188,4 +188,5 @@ src/Orchard.Web/Modules/Orchard.Layouts/node_modules src/Orchard.Web/Modules/Orchard.DynamicForms/node_modules #enable all /lib artifacts -!lib/*/*.* \ No newline at end of file +!lib/*/*.* +*/.vs/* diff --git a/src/Orchard.Tests/Localization/TextTests.cs b/src/Orchard.Tests/Localization/TextTests.cs new file mode 100644 index 000000000..ecefd961e --- /dev/null +++ b/src/Orchard.Tests/Localization/TextTests.cs @@ -0,0 +1,46 @@ +using Autofac; +using Moq; +using NUnit.Framework; +using Orchard.Localization; +using Orchard.Localization.Services; +using Orchard.Mvc; +using Orchard.Tests.Stubs; +using System.Web; + +namespace Orchard.Tests.Localization { + [TestFixture] + public class TextTests { + private IContainer _container; + private IText _text; + + [SetUp] + public void Init() { + var mockLocalizedManager = new Mock(); + mockLocalizedManager + .Setup(x => x.GetLocalizedString(It.IsAny(), It.IsAny(), It.IsAny())) + .Returns("foo {0}"); + + var builder = new ContainerBuilder(); + builder.RegisterInstance(new StubCultureSelector("fr-CA")).As(); + builder.RegisterInstance(new StubWorkContext()).As(); + builder.RegisterType().As(); + builder.RegisterInstance(mockLocalizedManager.Object); + builder.RegisterType().As().WithParameter(new NamedParameter("scope", "scope")); + _container = builder.Build(); + _text = _container.Resolve(); + } + + [Test] + public void TextHtmlEncodeAllArguments() { + Assert.That(_text.Get("foo {0}", "bar").Text, Is.EqualTo("foo bar")); + Assert.That(_text.Get("foo {0}", "").Text, Is.EqualTo("foo <bar>")); + } + + [Test] + public void TextDoesEncodeHtmlEncodedArguments() + { + Assert.That(_text.Get("foo {0}", new HtmlString("bar")).Text, Is.EqualTo("foo bar")); + Assert.That(_text.Get("foo {0}", new HtmlString("")).Text, Is.EqualTo("foo ")); + } + } +} \ No newline at end of file diff --git a/src/Orchard.Tests/Orchard.Framework.Tests.csproj b/src/Orchard.Tests/Orchard.Framework.Tests.csproj index 48ad9a1ea..5424ed562 100644 --- a/src/Orchard.Tests/Orchard.Framework.Tests.csproj +++ b/src/Orchard.Tests/Orchard.Framework.Tests.csproj @@ -259,6 +259,7 @@ + diff --git a/src/Orchard.Tests/Utility/Extensions/StringExtensionsTests.cs b/src/Orchard.Tests/Utility/Extensions/StringExtensionsTests.cs index 66848124a..d266d85f8 100644 --- a/src/Orchard.Tests/Utility/Extensions/StringExtensionsTests.cs +++ b/src/Orchard.Tests/Utility/Extensions/StringExtensionsTests.cs @@ -282,5 +282,21 @@ namespace Orchard.Tests.Utility.Extensions { Assert.That("abc".Translate("d".ToCharArray(), "d".ToCharArray()), Is.StringMatching("abc")); Assert.That("abc".Translate("abc".ToCharArray(), "def".ToCharArray()), Is.StringMatching("def")); } + + [Test] + public void ShouldEncodeToBase64() { + Assert.That("abc".ToBase64(), Is.EqualTo("YWJj")); + } + + [Test] + public void ShouldDecodeFromBase64() { + Assert.That("YWJj".FromBase64(), Is.EqualTo("abc")); + } + + [Test] + public void ShouldRoundtripBase64() { + Assert.That("abc".ToBase64().FromBase64(), Is.EqualTo("abc")); + Assert.That("YWJj".FromBase64().ToBase64(), Is.EqualTo("YWJj")); + } } } diff --git a/src/Orchard.WarmupStarter/Orchard.WarmupStarter.csproj b/src/Orchard.WarmupStarter/Orchard.WarmupStarter.csproj index 04ad59e55..cf25d4ca1 100644 --- a/src/Orchard.WarmupStarter/Orchard.WarmupStarter.csproj +++ b/src/Orchard.WarmupStarter/Orchard.WarmupStarter.csproj @@ -24,6 +24,7 @@ 4 false false + ..\OrchardBasicCorrectness.ruleset pdbonly diff --git a/src/Orchard.Web/Core/Shapes/Views/Message.cshtml b/src/Orchard.Web/Core/Shapes/Views/Message.cshtml index 3bd69fdf3..c4d1b88af 100644 --- a/src/Orchard.Web/Core/Shapes/Views/Message.cshtml +++ b/src/Orchard.Web/Core/Shapes/Views/Message.cshtml @@ -1 +1,6 @@ -
@Html.Raw(Html.Encode(Model.Message).Replace("\n", "
"))
+@* + Model.Message can either be: + - an IHtmlString and won't be re-encoded + - a string and will be encoded +*@ +
@Html.Raw(Html.Encode(Model.Message).Replace("\n", "
"))
diff --git a/src/Orchard.Web/Core/Shapes/Views/User.cshtml b/src/Orchard.Web/Core/Shapes/Views/User.cshtml index 6054c9adf..806cc83c7 100644 --- a/src/Orchard.Web/Core/Shapes/Views/User.cshtml +++ b/src/Orchard.Web/Core/Shapes/Views/User.cshtml @@ -3,7 +3,7 @@
@if (WorkContext.CurrentUser != null) {