diff --git a/src/Http/Http.Results/src/ProblemHttpResult.cs b/src/Http/Http.Results/src/ProblemHttpResult.cs index bd7e72ff87aa..9fdf1f2c1d10 100644 --- a/src/Http/Http.Results/src/ProblemHttpResult.cs +++ b/src/Http/Http.Results/src/ProblemHttpResult.cs @@ -53,7 +53,7 @@ public Task ExecuteAsync(HttpContext httpContext) httpContext.Response.StatusCode = code; } - return HttpResultsHelper.WriteResultAsJsonAsync( + return HttpResultsHelper.WriteResultAsJsonAsync( httpContext, logger, value: ProblemDetails, diff --git a/src/Http/Http.Results/test/ProblemResultTests.cs b/src/Http/Http.Results/test/ProblemResultTests.cs index 4e6c38a5670d..688bd1ecf7b0 100644 --- a/src/Http/Http.Results/test/ProblemResultTests.cs +++ b/src/Http/Http.Results/test/ProblemResultTests.cs @@ -69,6 +69,38 @@ public async Task ExecuteAsync_UsesDefaults_ForValidationProblemDetails() Assert.Equal(StatusCodes.Status400BadRequest, responseDetails.Status); } + [Fact] + public async Task ExecuteAsync_IncludeErrors_ForValidationProblemDetails() + { + // Arrange + var details = new HttpValidationProblemDetails(new Dictionary + { + { "testError", new string[] { "message" } } + }); + + var result = new ProblemHttpResult(details); + var stream = new MemoryStream(); + var httpContext = new DefaultHttpContext() + { + RequestServices = CreateServices(), + Response = + { + Body = stream, + }, + }; + + // Act + await result.ExecuteAsync(httpContext); + + // Assert + Assert.Equal(StatusCodes.Status400BadRequest, httpContext.Response.StatusCode); + stream.Position = 0; + var responseDetails = JsonSerializer.Deserialize(stream); + Assert.Equal(StatusCodes.Status400BadRequest, responseDetails.Status); + var error = Assert.Single(responseDetails.Errors); + Assert.Equal("testError", error.Key); + } + [Fact] public async Task ExecuteAsync_GetsStatusCodeFromProblemDetails() {