Do not return ProblemDetails for < 4xx status codes

Fixes #8504
This commit is contained in:
Pranav K 2018-09-27 16:49:56 -07:00
parent d985f9ec44
commit ccb6579cd7
No known key found for this signature in database
GPG Key ID: 1963DA6D96C3057A
2 changed files with 43 additions and 0 deletions

View File

@ -43,6 +43,13 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
return;
}
// We do not have an upper bound on the allowed status code. This allows this filter to be used
// for 5xx and later status codes.
if (clientError.StatusCode < 400)
{
return;
}
var result = _clientErrorFactory.GetClientError(context, clientError);
if (result == null)
{

View File

@ -68,6 +68,42 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
Assert.Same(Result, context.Result);
}
[Theory]
[InlineData(400)]
[InlineData(409)]
[InlineData(503)]
public void OnResultExecuting_Transforms4XXStatusCodeResult(int statusCode)
{
// Arrange
var actionResult = new StatusCodeResult(statusCode);
var context = GetContext(actionResult);
var filter = GetFilter();
// Act
filter.OnResultExecuting(context);
// Assert
Assert.Same(Result, context.Result);
}
[Theory]
[InlineData(201)]
[InlineData(302)]
[InlineData(399)]
public void OnResultExecuting_DoesNotTransformStatusCodesLessThan400(int statusCode)
{
// Arrange
var actionResult = new StatusCodeResult(statusCode);
var context = GetContext(actionResult);
var filter = GetFilter();
// Act
filter.OnResultExecuting(context);
// Assert
Assert.Same(actionResult, context.Result);
}
private static ClientErrorResultFilter GetFilter()
{
var factory = Mock.Of<IClientErrorFactory>(