From db94a8ed19e626b4e094cc283abe0dfe4f39871f Mon Sep 17 00:00:00 2001 From: herecydev Date: Mon, 16 Nov 2015 19:43:08 +0000 Subject: [PATCH] Removed redundant null checks and tested logging --- src/Microsoft.AspNet.Mvc.Core/FileResult.cs | 2 +- .../FileResultTest.cs | 34 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/Microsoft.AspNet.Mvc.Core/FileResult.cs b/src/Microsoft.AspNet.Mvc.Core/FileResult.cs index d94ba49061..c8bc0422d6 100644 --- a/src/Microsoft.AspNet.Mvc.Core/FileResult.cs +++ b/src/Microsoft.AspNet.Mvc.Core/FileResult.cs @@ -71,7 +71,7 @@ namespace Microsoft.AspNet.Mvc } var loggerFactory = context.HttpContext.RequestServices.GetRequiredService(); - var logger = loggerFactory?.CreateLogger(); + var logger = loggerFactory.CreateLogger(); var response = context.HttpContext.Response; response.ContentType = ContentType.ToString(); diff --git a/test/Microsoft.AspNet.Mvc.Core.Test/FileResultTest.cs b/test/Microsoft.AspNet.Mvc.Core.Test/FileResultTest.cs index 528bef5834..99c246d627 100644 --- a/test/Microsoft.AspNet.Mvc.Core.Test/FileResultTest.cs +++ b/test/Microsoft.AspNet.Mvc.Core.Test/FileResultTest.cs @@ -1,6 +1,7 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System; using System.IO; using System.Net.Mime; using System.Threading.Tasks; @@ -120,6 +121,39 @@ namespace Microsoft.AspNet.Mvc Assert.Equal("attachment; filename=filename.ext; filename*=UTF-8''filename.ext", httpContext.Response.Headers["Content-Disposition"]); } + [Fact] + public async Task ExecuteResultAsync_ThrowsException_IfCannotResolveLoggerFactory() + { + // Arrange + var httpContext = new DefaultHttpContext(); + httpContext.RequestServices = new ServiceCollection().BuildServiceProvider(); + var actionContext = CreateActionContext(httpContext); + var result = new EmptyFileResult("application/my-type"); + + // Act & Assert + await Assert.ThrowsAsync(() => result.ExecuteResultAsync(actionContext)); + } + + [Fact] + public async Task ExecuteResultAsync_LogsInformation_IfCanResolveLoggerFactory() + { + // Arrange + var httpContext = new DefaultHttpContext(); + var services = new ServiceCollection(); + var loggerSink = new TestSink(); + services.AddSingleton(new TestLoggerFactory(loggerSink, true)); + httpContext.RequestServices = services.BuildServiceProvider(); + + var actionContext = CreateActionContext(httpContext); + var result = new EmptyFileResult("application/my-type"); + + // Act + await result.ExecuteResultAsync(actionContext); + + // Assert + Assert.Equal(1, loggerSink.Writes.Count); + } + public static TheoryData ContentDispositionData { get