Use default encoders all the time

Fixes #234
This commit is contained in:
Pranav K 2015-12-29 16:49:06 -08:00
parent 298b8baa98
commit 7e47449f85
3 changed files with 4 additions and 70 deletions

View File

@ -12,7 +12,6 @@ using System.Text;
using System.Text.Encodings.Web;
using System.Threading.Tasks;
using Microsoft.AspNet.Http;
using Microsoft.Extensions.WebEncoders;
namespace Microsoft.AspNet.Diagnostics.Views
{
@ -44,17 +43,17 @@ namespace Microsoft.AspNet.Diagnostics.Views
/// <summary>
/// Html encoder used to encode content.
/// </summary>
protected HtmlEncoder HtmlEncoder { get; set; }
protected HtmlEncoder HtmlEncoder { get; set; } = HtmlEncoder.Default;
/// <summary>
/// Url encoder used to encode content.
/// </summary>
protected UrlEncoder UrlEncoder { get; set; }
protected UrlEncoder UrlEncoder { get; set; } = UrlEncoder.Default;
/// <summary>
/// JavaScript encoder used to encode content.
/// </summary>
protected JavaScriptEncoder JavaScriptEncoder { get; set; }
protected JavaScriptEncoder JavaScriptEncoder { get; set; } = JavaScriptEncoder.Default;
/// <summary>
/// Execute an individual request
@ -66,9 +65,6 @@ namespace Microsoft.AspNet.Diagnostics.Views
Request = Context.Request;
Response = Context.Response;
Output = new StreamWriter(Response.Body, Encoding.UTF8, 4096, leaveOpen: true);
HtmlEncoder = context.RequestServices.GetHtmlEncoder();
UrlEncoder = context.RequestServices.GetUrlEncoder();
JavaScriptEncoder = context.RequestServices.GetJavaScriptEncoder();
await ExecuteAsync();
Output.Dispose();
}

View File

@ -17,15 +17,10 @@
"Microsoft.Extensions.Logging.Abstractions": "1.0.0-*",
"Microsoft.Extensions.Options": "1.0.0-*",
"Microsoft.Extensions.PlatformAbstractions": "1.0.0-*",
"Microsoft.Extensions.WebEncoders": "1.0.0-*",
"System.Diagnostics.DiagnosticSource": "4.0.0-*"
},
"frameworks": {
"net451": {
"frameworkAssemblies": {
"System.Runtime": ""
}
},
"net451": { },
"dotnet5.4": {
"dependencies": {
"System.Reflection.Extensions": "4.0.1-*"

View File

@ -5,12 +5,9 @@ using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Text.Encodings.Web;
using System.Threading.Tasks;
using Microsoft.AspNet.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.PlatformAbstractions;
using Microsoft.Extensions.WebEncoders.Testing;
using Moq;
using Xunit;
@ -159,59 +156,5 @@ namespace Microsoft.AspNet.Diagnostics.Tests
Assert.Contains("<td>Path2</td>", response);
}
}
[Fact]
public async void Invoke_WithMatchingPath_ReturnsInfoPage_UsingCustomHtmlEncoder()
{
// Arrange
var libraryManagerMock = new Mock<ILibraryManager>(MockBehavior.Strict);
libraryManagerMock.Setup(l => l.GetLibraries()).Returns(new[] {
new Library("LibInfo1", "1.0.0-beta1", "Path1", string.Empty, Enumerable.Empty<string>(), Enumerable.Empty<AssemblyName>()),
});
var runtimeEnvironmentMock = new Mock<IRuntimeEnvironment>(MockBehavior.Strict);
runtimeEnvironmentMock.Setup(r => r.OperatingSystem).Returns("Windows");
runtimeEnvironmentMock.Setup(r => r.RuntimeArchitecture).Returns("x64");
runtimeEnvironmentMock.Setup(r => r.RuntimeType).Returns("clr");
runtimeEnvironmentMock.Setup(r => r.RuntimeVersion).Returns("1.0.0");
RequestDelegate next = _ =>
{
return Task.FromResult<object>(null);
};
var middleware = new RuntimeInfoMiddleware(
next,
new RuntimeInfoPageOptions(),
libraryManagerMock.Object,
runtimeEnvironmentMock.Object);
var buffer = new byte[4096];
using (var responseStream = new MemoryStream(buffer))
{
var contextMock = new Mock<HttpContext>(MockBehavior.Strict);
contextMock
.SetupGet(c => c.Request.Path)
.Returns(new PathString("/runtimeinfo"));
contextMock
.SetupGet(c => c.Response.Body)
.Returns(responseStream);
contextMock
.SetupGet(c => c.RequestServices)
.Returns(new ServiceCollection()
.AddSingleton<HtmlEncoder>(new HtmlTestEncoder())
.BuildServiceProvider());
// Act
await middleware.Invoke(contextMock.Object);
// Assert
string response = Encoding.UTF8.GetString(buffer);
Assert.True(response.Contains("<td>HtmlEncode[[LibInfo1]]</td>"));
Assert.True(response.Contains("<td>HtmlEncode[[1.0.0-beta1]]</td>"));
Assert.True(response.Contains("<td>HtmlEncode[[Path1]]</td>"));
}
}
}
}