diff options
Diffstat (limited to 'src/Http/Http.Results/test/ObjectResultTests.cs')
-rw-r--r-- | src/Http/Http.Results/test/ObjectResultTests.cs | 295 |
1 files changed, 147 insertions, 148 deletions
diff --git a/src/Http/Http.Results/test/ObjectResultTests.cs b/src/Http/Http.Results/test/ObjectResultTests.cs index 849708dc33..59160a9dcb 100644 --- a/src/Http/Http.Results/test/ObjectResultTests.cs +++ b/src/Http/Http.Results/test/ObjectResultTests.cs @@ -10,195 +10,194 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Xunit; -namespace Microsoft.AspNetCore.Http.Result +namespace Microsoft.AspNetCore.Http.Result; + +public class ObjectResultTests { - public class ObjectResultTests + [Fact] + public async Task ObjectResult_ExecuteAsync_WithNullValue_Works() { - [Fact] - public async Task ObjectResult_ExecuteAsync_WithNullValue_Works() + // Arrange + var result = new ObjectResult(value: null, 411); + + var httpContext = new DefaultHttpContext() { - // Arrange - var result = new ObjectResult(value: null, 411); + RequestServices = CreateServices(), + }; - var httpContext = new DefaultHttpContext() - { - RequestServices = CreateServices(), - }; + // Act + await result.ExecuteAsync(httpContext); - // Act - await result.ExecuteAsync(httpContext); + // Assert + Assert.Equal(411, httpContext.Response.StatusCode); + } - // Assert - Assert.Equal(411, httpContext.Response.StatusCode); - } + [Fact] + public async Task ObjectResult_ExecuteAsync_SetsStatusCode() + { + // Arrange + var result = new ObjectResult("Hello", 407); - [Fact] - public async Task ObjectResult_ExecuteAsync_SetsStatusCode() + var httpContext = new DefaultHttpContext() { - // Arrange - var result = new ObjectResult("Hello", 407); + RequestServices = CreateServices(), + }; - var httpContext = new DefaultHttpContext() - { - RequestServices = CreateServices(), - }; + // Act + await result.ExecuteAsync(httpContext); - // Act - await result.ExecuteAsync(httpContext); - - // Assert - Assert.Equal(407, httpContext.Response.StatusCode); - } + // Assert + Assert.Equal(407, httpContext.Response.StatusCode); + } - [Fact] - public async Task ObjectResult_ExecuteAsync_JsonSerializesBody() + [Fact] + public async Task ObjectResult_ExecuteAsync_JsonSerializesBody() + { + // Arrange + var result = new ObjectResult("Hello", 407); + var stream = new MemoryStream(); + var httpContext = new DefaultHttpContext() { - // Arrange - var result = new ObjectResult("Hello", 407); - var stream = new MemoryStream(); - var httpContext = new DefaultHttpContext() - { - RequestServices = CreateServices(), - Response = + RequestServices = CreateServices(), + Response = { Body = stream, }, - }; + }; - // Act - await result.ExecuteAsync(httpContext); + // Act + await result.ExecuteAsync(httpContext); - // Assert - Assert.Equal("\"Hello\"", Encoding.UTF8.GetString(stream.ToArray())); - } + // Assert + Assert.Equal("\"Hello\"", Encoding.UTF8.GetString(stream.ToArray())); + } + + [Fact] + public async Task ExecuteAsync_UsesDefaults_ForProblemDetails() + { + // Arrange + var details = new ProblemDetails(); - [Fact] - public async Task ExecuteAsync_UsesDefaults_ForProblemDetails() + var result = new ObjectResult(details); + var stream = new MemoryStream(); + var httpContext = new DefaultHttpContext() { - // Arrange - var details = new ProblemDetails(); - - var result = new ObjectResult(details); - var stream = new MemoryStream(); - var httpContext = new DefaultHttpContext() - { - RequestServices = CreateServices(), - Response = + RequestServices = CreateServices(), + Response = { Body = stream, }, - }; - - // Act - await result.ExecuteAsync(httpContext); - - // Assert - Assert.Equal(StatusCodes.Status500InternalServerError, httpContext.Response.StatusCode); - stream.Position = 0; - var responseDetails = JsonSerializer.Deserialize<ProblemDetails>(stream); - Assert.Equal("https://tools.ietf.org/html/rfc7231#section-6.6.1", responseDetails.Type); - Assert.Equal("An error occurred while processing your request.", responseDetails.Title); - Assert.Equal(StatusCodes.Status500InternalServerError, responseDetails.Status); - } - - [Fact] - public async Task ExecuteAsync_UsesDefaults_ForValidationProblemDetails() + }; + + // Act + await result.ExecuteAsync(httpContext); + + // Assert + Assert.Equal(StatusCodes.Status500InternalServerError, httpContext.Response.StatusCode); + stream.Position = 0; + var responseDetails = JsonSerializer.Deserialize<ProblemDetails>(stream); + Assert.Equal("https://tools.ietf.org/html/rfc7231#section-6.6.1", responseDetails.Type); + Assert.Equal("An error occurred while processing your request.", responseDetails.Title); + Assert.Equal(StatusCodes.Status500InternalServerError, responseDetails.Status); + } + + [Fact] + public async Task ExecuteAsync_UsesDefaults_ForValidationProblemDetails() + { + // Arrange + var details = new HttpValidationProblemDetails(); + + var result = new ObjectResult(details); + var stream = new MemoryStream(); + var httpContext = new DefaultHttpContext() { - // Arrange - var details = new HttpValidationProblemDetails(); - - var result = new ObjectResult(details); - var stream = new MemoryStream(); - var httpContext = new DefaultHttpContext() - { - RequestServices = CreateServices(), - Response = + 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<HttpValidationProblemDetails>(stream); - Assert.Equal("https://tools.ietf.org/html/rfc7231#section-6.5.1", responseDetails.Type); - Assert.Equal("One or more validation errors occurred.", responseDetails.Title); - Assert.Equal(StatusCodes.Status400BadRequest, responseDetails.Status); - } - - [Fact] - public async Task ExecuteAsync_SetsProblemDetailsStatus_ForValidationProblemDetails() - { - // Arrange - var details = new HttpValidationProblemDetails(); - - var result = new ObjectResult(details, StatusCodes.Status422UnprocessableEntity); - var httpContext = new DefaultHttpContext() - { - RequestServices = CreateServices(), - }; - - // Act - await result.ExecuteAsync(httpContext); + }; + + // Act + await result.ExecuteAsync(httpContext); + + // Assert + Assert.Equal(StatusCodes.Status400BadRequest, httpContext.Response.StatusCode); + stream.Position = 0; + var responseDetails = JsonSerializer.Deserialize<HttpValidationProblemDetails>(stream); + Assert.Equal("https://tools.ietf.org/html/rfc7231#section-6.5.1", responseDetails.Type); + Assert.Equal("One or more validation errors occurred.", responseDetails.Title); + Assert.Equal(StatusCodes.Status400BadRequest, responseDetails.Status); + } - // Assert - Assert.Equal(StatusCodes.Status422UnprocessableEntity, details.Status.Value); - } + [Fact] + public async Task ExecuteAsync_SetsProblemDetailsStatus_ForValidationProblemDetails() + { + // Arrange + var details = new HttpValidationProblemDetails(); - [Fact] - public async Task ExecuteAsync_GetsStatusCodeFromProblemDetails() + var result = new ObjectResult(details, StatusCodes.Status422UnprocessableEntity); + var httpContext = new DefaultHttpContext() { - // Arrange - var details = new ProblemDetails { Status = StatusCodes.Status413RequestEntityTooLarge, }; + RequestServices = CreateServices(), + }; - var result = new ObjectResult(details); + // Act + await result.ExecuteAsync(httpContext); - var httpContext = new DefaultHttpContext() - { - RequestServices = CreateServices(), - }; + // Assert + Assert.Equal(StatusCodes.Status422UnprocessableEntity, details.Status.Value); + } - // Act - await result.ExecuteAsync(httpContext); + [Fact] + public async Task ExecuteAsync_GetsStatusCodeFromProblemDetails() + { + // Arrange + var details = new ProblemDetails { Status = StatusCodes.Status413RequestEntityTooLarge, }; - // Assert - Assert.Equal(StatusCodes.Status413RequestEntityTooLarge, details.Status.Value); - Assert.Equal(StatusCodes.Status413RequestEntityTooLarge, result.StatusCode.Value); - Assert.Equal(StatusCodes.Status413RequestEntityTooLarge, httpContext.Response.StatusCode); - } + var result = new ObjectResult(details); - [Fact] - public async Task ExecuteAsync_UsesStatusCodeFromResultTypeForProblemDetails() + var httpContext = new DefaultHttpContext() { - // Arrange - var details = new ProblemDetails { Status = StatusCodes.Status422UnprocessableEntity, }; + RequestServices = CreateServices(), + }; - var result = new BadRequestObjectResult(details); + // Act + await result.ExecuteAsync(httpContext); - var httpContext = new DefaultHttpContext() - { - RequestServices = CreateServices(), - }; + // Assert + Assert.Equal(StatusCodes.Status413RequestEntityTooLarge, details.Status.Value); + Assert.Equal(StatusCodes.Status413RequestEntityTooLarge, result.StatusCode.Value); + Assert.Equal(StatusCodes.Status413RequestEntityTooLarge, httpContext.Response.StatusCode); + } - // Act - await result.ExecuteAsync(httpContext); + [Fact] + public async Task ExecuteAsync_UsesStatusCodeFromResultTypeForProblemDetails() + { + // Arrange + var details = new ProblemDetails { Status = StatusCodes.Status422UnprocessableEntity, }; - // Assert - Assert.Equal(StatusCodes.Status422UnprocessableEntity, details.Status.Value); - Assert.Equal(StatusCodes.Status400BadRequest, result.StatusCode.Value); - Assert.Equal(StatusCodes.Status400BadRequest, httpContext.Response.StatusCode); - } + var result = new BadRequestObjectResult(details); - private static IServiceProvider CreateServices() + var httpContext = new DefaultHttpContext() { - var services = new ServiceCollection(); - services.AddSingleton<ILoggerFactory>(NullLoggerFactory.Instance); + RequestServices = CreateServices(), + }; + + // Act + await result.ExecuteAsync(httpContext); + + // Assert + Assert.Equal(StatusCodes.Status422UnprocessableEntity, details.Status.Value); + Assert.Equal(StatusCodes.Status400BadRequest, result.StatusCode.Value); + Assert.Equal(StatusCodes.Status400BadRequest, httpContext.Response.StatusCode); + } + + private static IServiceProvider CreateServices() + { + var services = new ServiceCollection(); + services.AddSingleton<ILoggerFactory>(NullLoggerFactory.Instance); - return services.BuildServiceProvider(); - } + return services.BuildServiceProvider(); } } |