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 3885e66b0..11b3c4fb7 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.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) {