зеркало из https://github.com/dotnet/aspnetcore.git
Add Problem(ProblemDetails) to allow configuring ProblemDetails.Extensions property
This commit is contained in:
Родитель
376b6b0c86
Коммит
77413ee6c5
|
@ -1850,6 +1850,24 @@ public abstract class ControllerBase
|
|||
public virtual ConflictObjectResult Conflict([ActionResultObjectValue] ModelStateDictionary modelState)
|
||||
=> new ConflictObjectResult(modelState);
|
||||
|
||||
/// <summary>
|
||||
/// Creates an <see cref="ObjectResult"/> that produces a <see cref="ProblemDetails"/> response.
|
||||
/// </summary>
|
||||
/// <param name="problemDetails">The <see cref="ProblemDetails"/> object to produce a response from.</param>
|
||||
/// <returns>The created <see cref="ObjectResult"/> for the response.</returns>
|
||||
[NonAction]
|
||||
public virtual ObjectResult Problem(ProblemDetails problemDetails)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(problemDetails);
|
||||
|
||||
problemDetails.Status ??= 500;
|
||||
|
||||
return new ObjectResult(problemDetails)
|
||||
{
|
||||
StatusCode = problemDetails.Status
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an <see cref="ObjectResult"/> that produces a <see cref="ProblemDetails"/> response.
|
||||
/// </summary>
|
||||
|
|
|
@ -29,4 +29,5 @@ virtual Microsoft.AspNetCore.Mvc.ControllerBase.Created() -> Microsoft.AspNetCor
|
|||
*REMOVED*virtual Microsoft.AspNetCore.Mvc.ControllerBase.Created(System.Uri! uri, object? value) -> Microsoft.AspNetCore.Mvc.CreatedResult!
|
||||
virtual Microsoft.AspNetCore.Mvc.ControllerBase.Created(string? uri, object? value) -> Microsoft.AspNetCore.Mvc.CreatedResult!
|
||||
virtual Microsoft.AspNetCore.Mvc.ControllerBase.Created(System.Uri? uri, object? value) -> Microsoft.AspNetCore.Mvc.CreatedResult!
|
||||
virtual Microsoft.AspNetCore.Mvc.ControllerBase.Problem(Microsoft.AspNetCore.Mvc.ProblemDetails! problemDetails) -> Microsoft.AspNetCore.Mvc.ObjectResult!
|
||||
Microsoft.AspNetCore.Mvc.ProblemDetails.Extensions.set -> void (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions)
|
||||
|
|
|
@ -2415,6 +2415,45 @@ public class ControllerBaseTest
|
|||
Assert.Equal(400, problemDetails.Status);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ProblemDetails_Object_Works()
|
||||
{
|
||||
// Arrange
|
||||
var problemDetails = new ProblemDetails();
|
||||
|
||||
var controller = new TestableController();
|
||||
|
||||
// Act
|
||||
var actionResult = controller.Problem(problemDetails);
|
||||
|
||||
// Assert
|
||||
var badRequestResult = Assert.IsType<ObjectResult>(actionResult);
|
||||
Assert.Same(problemDetails, Assert.IsType<ProblemDetails>(badRequestResult.Value));
|
||||
Assert.Equal(500, actionResult.StatusCode);
|
||||
Assert.Equal(500, problemDetails.Status);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ProblemDetails_Object_UsesPassedInStatusCode()
|
||||
{
|
||||
// Arrange
|
||||
var problemDetails = new ProblemDetails
|
||||
{
|
||||
Status = 503
|
||||
};
|
||||
|
||||
var controller = new TestableController();
|
||||
|
||||
// Act
|
||||
var actionResult = controller.Problem(problemDetails);
|
||||
|
||||
// Assert
|
||||
var badRequestResult = Assert.IsType<ObjectResult>(actionResult);
|
||||
Assert.Same(problemDetails, Assert.IsType<ProblemDetails>(badRequestResult.Value));
|
||||
Assert.Equal(503, actionResult.StatusCode);
|
||||
Assert.Equal(503, problemDetails.Status);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ProblemDetails_Works()
|
||||
{
|
||||
|
|
Загрузка…
Ссылка в новой задаче