Skip to content

Commit 1230a1a

Browse files
authored
Using WriteJsonAsync<object?> operation for ProblemHttpResult (#41670)
* Using non-generic Write operation for ProblemHttpResult * Update unit tests * Removing ThrowIfNull * PR Feedback
1 parent cab4c6e commit 1230a1a

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

src/Http/Http.Results/src/ProblemHttpResult.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public Task ExecuteAsync(HttpContext httpContext)
5353
httpContext.Response.StatusCode = code;
5454
}
5555

56-
return HttpResultsHelper.WriteResultAsJsonAsync(
56+
return HttpResultsHelper.WriteResultAsJsonAsync<object?>(
5757
httpContext,
5858
logger,
5959
value: ProblemDetails,

src/Http/Http.Results/test/ProblemResultTests.cs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,38 @@ public async Task ExecuteAsync_UsesDefaults_ForValidationProblemDetails()
6969
Assert.Equal(StatusCodes.Status400BadRequest, responseDetails.Status);
7070
}
7171

72+
[Fact]
73+
public async Task ExecuteAsync_IncludeErrors_ForValidationProblemDetails()
74+
{
75+
// Arrange
76+
var details = new HttpValidationProblemDetails(new Dictionary<string, string[]>
77+
{
78+
{ "testError", new string[] { "message" } }
79+
});
80+
81+
var result = new ProblemHttpResult(details);
82+
var stream = new MemoryStream();
83+
var httpContext = new DefaultHttpContext()
84+
{
85+
RequestServices = CreateServices(),
86+
Response =
87+
{
88+
Body = stream,
89+
},
90+
};
91+
92+
// Act
93+
await result.ExecuteAsync(httpContext);
94+
95+
// Assert
96+
Assert.Equal(StatusCodes.Status400BadRequest, httpContext.Response.StatusCode);
97+
stream.Position = 0;
98+
var responseDetails = JsonSerializer.Deserialize<HttpValidationProblemDetails>(stream);
99+
Assert.Equal(StatusCodes.Status400BadRequest, responseDetails.Status);
100+
var error = Assert.Single(responseDetails.Errors);
101+
Assert.Equal("testError", error.Key);
102+
}
103+
72104
[Fact]
73105
public async Task ExecuteAsync_GetsStatusCodeFromProblemDetails()
74106
{

0 commit comments

Comments
 (0)