From b02dea98e7e0fd33af695ca9bc17352b67a3b976 Mon Sep 17 00:00:00 2001 From: Ajay Bhargav Baaskaran Date: Thu, 15 Jan 2015 18:47:02 -0800 Subject: [PATCH] Using set instead of add in Created ActionResults --- .../ActionResults/CreatedAtActionResult.cs | 2 +- .../ActionResults/CreatedAtRouteResult.cs | 2 +- .../ActionResults/CreatedResult.cs | 2 +- .../ActionResults/CreatedResultTests.cs | 18 ++++++++++++++++++ 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/Microsoft.AspNet.Mvc.Core/ActionResults/CreatedAtActionResult.cs b/src/Microsoft.AspNet.Mvc.Core/ActionResults/CreatedAtActionResult.cs index 3e968f33e2..df74e54a34 100644 --- a/src/Microsoft.AspNet.Mvc.Core/ActionResults/CreatedAtActionResult.cs +++ b/src/Microsoft.AspNet.Mvc.Core/ActionResults/CreatedAtActionResult.cs @@ -71,7 +71,7 @@ namespace Microsoft.AspNet.Mvc throw new InvalidOperationException(Resources.NoRoutesMatched); } - context.HttpContext.Response.Headers.Add("Location", new string[] { url }); + context.HttpContext.Response.Headers.Set("Location", url); } } } \ No newline at end of file diff --git a/src/Microsoft.AspNet.Mvc.Core/ActionResults/CreatedAtRouteResult.cs b/src/Microsoft.AspNet.Mvc.Core/ActionResults/CreatedAtRouteResult.cs index 9020978d00..d1e1989239 100644 --- a/src/Microsoft.AspNet.Mvc.Core/ActionResults/CreatedAtRouteResult.cs +++ b/src/Microsoft.AspNet.Mvc.Core/ActionResults/CreatedAtRouteResult.cs @@ -69,7 +69,7 @@ namespace Microsoft.AspNet.Mvc throw new InvalidOperationException(Resources.NoRoutesMatched); } - context.HttpContext.Response.Headers.Add("Location", new string[] { url }); + context.HttpContext.Response.Headers.Set("Location", url); } } } \ No newline at end of file diff --git a/src/Microsoft.AspNet.Mvc.Core/ActionResults/CreatedResult.cs b/src/Microsoft.AspNet.Mvc.Core/ActionResults/CreatedResult.cs index 42f14a53d5..6061f97d9d 100644 --- a/src/Microsoft.AspNet.Mvc.Core/ActionResults/CreatedResult.cs +++ b/src/Microsoft.AspNet.Mvc.Core/ActionResults/CreatedResult.cs @@ -31,7 +31,7 @@ namespace Microsoft.AspNet.Mvc /// protected override void OnFormatting([NotNull] ActionContext context) { - context.HttpContext.Response.Headers.Add("Location", new string[] { Location }); + context.HttpContext.Response.Headers.Set("Location", Location); } } } \ No newline at end of file diff --git a/test/Microsoft.AspNet.Mvc.Core.Test/ActionResults/CreatedResultTests.cs b/test/Microsoft.AspNet.Mvc.Core.Test/ActionResults/CreatedResultTests.cs index a6fa5c176b..230744955d 100644 --- a/test/Microsoft.AspNet.Mvc.Core.Test/ActionResults/CreatedResultTests.cs +++ b/test/Microsoft.AspNet.Mvc.Core.Test/ActionResults/CreatedResultTests.cs @@ -45,6 +45,24 @@ namespace Microsoft.AspNet.Mvc Assert.Equal(location, httpContext.Response.Headers["Location"]); } + [Fact] + public async Task CreatedResult_OverwritesLocationHeader() + { + // Arrange + var location = "/test/"; + var httpContext = GetHttpContext(); + var actionContext = GetActionContext(httpContext); + httpContext.Response.Headers.Set("Location", "/different/location/"); + var result = new CreatedResult(location, "testInput"); + + // Act + await result.ExecuteResultAsync(actionContext); + + // Assert + Assert.Equal(201, httpContext.Response.StatusCode); + Assert.Equal(location, httpContext.Response.Headers["Location"]); + } + private static ActionContext GetActionContext(HttpContext httpContext) { var routeData = new RouteData();