Skip to content

Commit

Permalink
[Fundamentals] Use JsonSerializerOptions.Web (#58631)
Browse files Browse the repository at this point in the history
  • Loading branch information
WeihanLi authored Oct 25, 2024
1 parent de68d42 commit f6dedca
Show file tree
Hide file tree
Showing 7 changed files with 22 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ namespace Microsoft.AspNetCore.Components.WebAssembly.Authentication;
public class SignOutSessionStateManager
{
private readonly IJSRuntime _jsRuntime;
private static readonly JsonSerializerOptions _serializationOptions = new JsonSerializerOptions(JsonSerializerDefaults.Web);

/// <summary>
/// Initialize a new instance of <see cref="SignOutSessionStateManager"/>.
Expand All @@ -35,7 +34,7 @@ public virtual ValueTask SetSignOutState()
return _jsRuntime.InvokeVoidAsync(
"sessionStorage.setItem",
"Microsoft.AspNetCore.Components.WebAssembly.Authentication.SignOutState",
JsonSerializer.Serialize(SignOutState.Instance, _serializationOptions));
JsonSerializer.Serialize(SignOutState.Instance, JsonSerializerOptions.Web));
}

/// <summary>
Expand Down Expand Up @@ -71,7 +70,7 @@ private async ValueTask<SignOutState> GetSignOutState()
[DynamicDependency(JsonSerialized, typeof(SignOutState))]
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "The correct members will be preserved by the above DynamicDependency.")]
// This should use JSON source generation
private static SignOutState DeserializeSignOutState(string result) => JsonSerializer.Deserialize<SignOutState>(result, _serializationOptions);
private static SignOutState DeserializeSignOutState(string result) => JsonSerializer.Deserialize<SignOutState>(result, JsonSerializerOptions.Web);

private ValueTask ClearSignOutState()
{
Expand Down
12 changes: 5 additions & 7 deletions src/Http/Http.Results/test/JsonResultTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ namespace Microsoft.AspNetCore.Http.HttpResults;

public class JsonResultTests
{
private static readonly JsonSerializerOptions SerializerOptions = new JsonSerializerOptions(JsonSerializerDefaults.Web);

[Fact]
public async Task JsonResult_ExecuteAsync_WithNullValue_Works()
{
Expand Down Expand Up @@ -117,7 +115,7 @@ public async Task ExecuteAsync_UsesDefaults_ForProblemDetails()
// Arrange
var details = new ProblemDetails();

var result = new JsonHttpResult<ProblemDetails>(details, jsonSerializerOptions: SerializerOptions);
var result = new JsonHttpResult<ProblemDetails>(details, jsonSerializerOptions: JsonSerializerOptions.Web);
var stream = new MemoryStream();
var httpContext = new DefaultHttpContext()
{
Expand All @@ -134,7 +132,7 @@ public async Task ExecuteAsync_UsesDefaults_ForProblemDetails()
// Assert
Assert.Equal(StatusCodes.Status500InternalServerError, httpContext.Response.StatusCode);
stream.Position = 0;
var responseDetails = JsonSerializer.Deserialize<ProblemDetails>(stream, SerializerOptions);
var responseDetails = JsonSerializer.Deserialize<ProblemDetails>(stream, JsonSerializerOptions.Web);
Assert.Equal("https://tools.ietf.org/html/rfc9110#section-15.6.1", responseDetails.Type);
Assert.Equal("An error occurred while processing your request.", responseDetails.Title);
Assert.Equal(StatusCodes.Status500InternalServerError, responseDetails.Status);
Expand All @@ -146,7 +144,7 @@ public async Task ExecuteAsync_UsesDefaults_ForValidationProblemDetails()
// Arrange
var details = new HttpValidationProblemDetails();

var result = new JsonHttpResult<HttpValidationProblemDetails>(details, jsonSerializerOptions: SerializerOptions);
var result = new JsonHttpResult<HttpValidationProblemDetails>(details, jsonSerializerOptions: JsonSerializerOptions.Web);
var stream = new MemoryStream();
var httpContext = new DefaultHttpContext()
{
Expand All @@ -163,7 +161,7 @@ public async Task ExecuteAsync_UsesDefaults_ForValidationProblemDetails()
// Assert
Assert.Equal(StatusCodes.Status400BadRequest, httpContext.Response.StatusCode);
stream.Position = 0;
var responseDetails = JsonSerializer.Deserialize<HttpValidationProblemDetails>(stream, SerializerOptions);
var responseDetails = JsonSerializer.Deserialize<HttpValidationProblemDetails>(stream, JsonSerializerOptions.Web);
Assert.Equal("https://tools.ietf.org/html/rfc9110#section-15.5.1", responseDetails.Type);
Assert.Equal("One or more validation errors occurred.", responseDetails.Title);
Assert.Equal(StatusCodes.Status400BadRequest, responseDetails.Status);
Expand Down Expand Up @@ -195,7 +193,7 @@ public async Task ExecuteAsync_UsesDefaults_HttpStatusCodesWithoutTypes()
// Assert
Assert.Equal(StatusCodes.Status418ImATeapot, httpContext.Response.StatusCode);
stream.Position = 0;
var responseDetails = JsonSerializer.Deserialize<HttpValidationProblemDetails>(stream, SerializerOptions);
var responseDetails = JsonSerializer.Deserialize<HttpValidationProblemDetails>(stream, JsonSerializerOptions.Web);
Assert.Null(responseDetails.Type);
Assert.Equal("I'm a teapot", responseDetails.Title);
Assert.Equal(StatusCodes.Status418ImATeapot, responseDetails.Status);
Expand Down
12 changes: 5 additions & 7 deletions src/Http/Http.Results/test/ProblemResultTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ namespace Microsoft.AspNetCore.Http.HttpResults;

public class ProblemResultTests
{
private static readonly JsonSerializerOptions SerializerOptions = new JsonSerializerOptions(JsonSerializerDefaults.Web);

[Fact]
public async Task ExecuteAsync_UsesDefaults_ForProblemDetails()
{
Expand All @@ -37,7 +35,7 @@ public async Task ExecuteAsync_UsesDefaults_ForProblemDetails()
// Assert
Assert.Equal(StatusCodes.Status500InternalServerError, httpContext.Response.StatusCode);
stream.Position = 0;
var responseDetails = JsonSerializer.Deserialize<ProblemDetails>(stream, SerializerOptions);
var responseDetails = JsonSerializer.Deserialize<ProblemDetails>(stream, JsonSerializerOptions.Web);
Assert.Equal("https://tools.ietf.org/html/rfc9110#section-15.6.1", responseDetails.Type);
Assert.Equal("An error occurred while processing your request.", responseDetails.Title);
Assert.Equal(StatusCodes.Status500InternalServerError, responseDetails.Status);
Expand Down Expand Up @@ -69,7 +67,7 @@ public async Task ExecuteAsync_UsesDefaultsFromProblemDetailsService_ForProblemD
// Assert
Assert.Equal(StatusCodes.Status500InternalServerError, httpContext.Response.StatusCode);
stream.Position = 0;
var responseDetails = JsonSerializer.Deserialize<ProblemDetails>(stream, SerializerOptions);
var responseDetails = JsonSerializer.Deserialize<ProblemDetails>(stream, JsonSerializerOptions.Web);
Assert.Null(responseDetails.Type);
Assert.Equal("An error occurred while processing your request.", responseDetails.Title);
Assert.Equal(StatusCodes.Status500InternalServerError, responseDetails.Status);
Expand Down Expand Up @@ -98,7 +96,7 @@ public async Task ExecuteAsync_UsesDefaults_ForValidationProblemDetails()
// Assert
Assert.Equal(StatusCodes.Status400BadRequest, httpContext.Response.StatusCode);
stream.Position = 0;
var responseDetails = JsonSerializer.Deserialize<HttpValidationProblemDetails>(stream, SerializerOptions);
var responseDetails = JsonSerializer.Deserialize<HttpValidationProblemDetails>(stream, JsonSerializerOptions.Web);
Assert.Equal("https://tools.ietf.org/html/rfc9110#section-15.5.1", responseDetails.Type);
Assert.Equal("One or more validation errors occurred.", responseDetails.Title);
Assert.Equal(StatusCodes.Status400BadRequest, responseDetails.Status);
Expand Down Expand Up @@ -130,7 +128,7 @@ public async Task ExecuteAsync_SetsTitleFromReasonPhrases_WhenNotInDefaults()
// Assert
Assert.Equal(StatusCodes.Status418ImATeapot, httpContext.Response.StatusCode);
stream.Position = 0;
var responseDetails = JsonSerializer.Deserialize<HttpValidationProblemDetails>(stream, SerializerOptions);
var responseDetails = JsonSerializer.Deserialize<HttpValidationProblemDetails>(stream, JsonSerializerOptions.Web);
Assert.Null(responseDetails.Type);
Assert.Equal("I'm a teapot", responseDetails.Title);
Assert.Equal(StatusCodes.Status418ImATeapot, responseDetails.Status);
Expand Down Expand Up @@ -162,7 +160,7 @@ public async Task ExecuteAsync_IncludeErrors_ForValidationProblemDetails()
// Assert
Assert.Equal(StatusCodes.Status400BadRequest, httpContext.Response.StatusCode);
stream.Position = 0;
var responseDetails = JsonSerializer.Deserialize<HttpValidationProblemDetails>(stream, SerializerOptions);
var responseDetails = JsonSerializer.Deserialize<HttpValidationProblemDetails>(stream, JsonSerializerOptions.Web);
Assert.Equal(StatusCodes.Status400BadRequest, responseDetails.Status);
var error = Assert.Single(responseDetails.Errors);
Assert.Equal("testError", error.Key);
Expand Down
4 changes: 2 additions & 2 deletions src/Http/Http.Results/test/ValidationProblemResultTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public async Task ExecuteAsync_UsesDefaults_ForProblemDetails()
Assert.Equal(StatusCodes.Status400BadRequest, httpContext.Response.StatusCode);
Assert.Equal(details, result.ProblemDetails);
stream.Position = 0;
var responseDetails = JsonSerializer.Deserialize<ProblemDetails>(stream, new JsonSerializerOptions(JsonSerializerDefaults.Web));
var responseDetails = JsonSerializer.Deserialize<ProblemDetails>(stream, JsonSerializerOptions.Web);
Assert.Equal("https://tools.ietf.org/html/rfc9110#section-15.5.1", responseDetails.Type);
Assert.Equal("One or more validation errors occurred.", responseDetails.Title);
Assert.Equal(StatusCodes.Status400BadRequest, responseDetails.Status);
Expand Down Expand Up @@ -71,7 +71,7 @@ public async Task ExecuteAsync_UsesDefaultsFromProblemDetailsService_ForProblemD
// Assert
Assert.Equal(StatusCodes.Status400BadRequest, httpContext.Response.StatusCode);
stream.Position = 0;
var responseDetails = JsonSerializer.Deserialize<ProblemDetails>(stream, new JsonSerializerOptions(JsonSerializerDefaults.Web));
var responseDetails = JsonSerializer.Deserialize<ProblemDetails>(stream, JsonSerializerOptions.Web);
Assert.Null(responseDetails.Type);
Assert.Equal("One or more validation errors occurred.", responseDetails.Title);
Assert.Equal(StatusCodes.Status400BadRequest, responseDetails.Status);
Expand Down
11 changes: 5 additions & 6 deletions src/Http/Routing/test/FunctionalTests/MinimalFormTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ namespace Microsoft.AspNetCore.Routing.FunctionalTests;

public class MinimalFormTests
{
private static readonly JsonSerializerOptions SerializerOptions = new JsonSerializerOptions(JsonSerializerDefaults.Web);

[Fact]
public async Task MapPost_WithForm_ValidToken_Works()
Expand Down Expand Up @@ -65,7 +64,7 @@ public async Task MapPost_WithForm_ValidToken_Works()
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
var result = JsonSerializer.Deserialize<Todo>(body, SerializerOptions);
var result = JsonSerializer.Deserialize<Todo>(body, JsonSerializerOptions.Web);
Assert.Equal("Test task", result.Name);
Assert.False(result.IsCompleted);
Assert.Equal(DateTime.Today.AddDays(1), result.DueDate);
Expand Down Expand Up @@ -125,7 +124,7 @@ public async Task MapRequestDelegate_WithForm_RequiresValidation_ValidToken_Work
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
var result = JsonSerializer.Deserialize<Todo>(body, SerializerOptions);
var result = JsonSerializer.Deserialize<Todo>(body, JsonSerializerOptions.Web);
Assert.Equal("Test task", result.Name);
Assert.False(result.IsCompleted);
Assert.Equal(DateTime.Today.AddDays(1), result.DueDate);
Expand Down Expand Up @@ -286,7 +285,7 @@ public async Task MapPost_WithForm_WithoutAntiforgery_WithoutMiddleware_Works()
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
var result = JsonSerializer.Deserialize<Todo>(body, SerializerOptions);
var result = JsonSerializer.Deserialize<Todo>(body, JsonSerializerOptions.Web);
Assert.Equal("Test task", result.Name);
Assert.False(result.IsCompleted);
Assert.Equal(DateTime.Today.AddDays(1), result.DueDate);
Expand Down Expand Up @@ -333,7 +332,7 @@ public async Task MapPost_WithForm_WithoutAntiforgery_AndRouteGroup_WithoutMiddl
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
var result = JsonSerializer.Deserialize<Todo>(body, SerializerOptions);
var result = JsonSerializer.Deserialize<Todo>(body, JsonSerializerOptions.Web);
Assert.Equal("Test task", result.Name);
Assert.False(result.IsCompleted);
Assert.Equal(DateTime.Today.AddDays(1), result.DueDate);
Expand Down Expand Up @@ -493,7 +492,7 @@ public async Task MapPost_WithForm_ValidToken_RequestSizeLimit_Works(bool hasLim
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
var result = JsonSerializer.Deserialize<Todo>(body, SerializerOptions);
var result = JsonSerializer.Deserialize<Todo>(body, JsonSerializerOptions.Web);
Assert.Equal("Test task", result.Name);
Assert.False(result.IsCompleted);
Assert.Equal(DateTime.Today.AddDays(1), result.DueDate);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ public async Task WriteResponseBodyAsync_ForLargeAsyncEnumerable()
{
// Arrange
var expected = new MemoryStream();
await JsonSerializer.SerializeAsync(expected, LargeAsync(), new JsonSerializerOptions(JsonSerializerDefaults.Web));
await JsonSerializer.SerializeAsync(expected, LargeAsync(), JsonSerializerOptions.Web);
var formatter = GetOutputFormatter();
var mediaType = MediaTypeHeaderValue.Parse("application/json; charset=utf-8");
var encoding = CreateOrGetSupportedEncoding(formatter, "utf-8", isDefaultEncoding: true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public async Task WriteAsync_Works()

//Assert
stream.Position = 0;
var problemDetails = await JsonSerializer.DeserializeAsync<ProblemDetails>(stream, new JsonSerializerOptions(JsonSerializerDefaults.Web));
var problemDetails = await JsonSerializer.DeserializeAsync<ProblemDetails>(stream, JsonSerializerOptions.Web);
Assert.NotNull(problemDetails);
Assert.Equal(expectedProblem.Status, problemDetails.Status);
Assert.Equal(expectedProblem.Type, problemDetails.Type);
Expand Down Expand Up @@ -81,7 +81,7 @@ public async Task WriteAsync_Works_WhenReplacingProblemDetailsUsingSetter()

//Assert
stream.Position = 0;
var problemDetails = await JsonSerializer.DeserializeAsync<ProblemDetails>(stream, new JsonSerializerOptions(JsonSerializerDefaults.Web));
var problemDetails = await JsonSerializer.DeserializeAsync<ProblemDetails>(stream, JsonSerializerOptions.Web);
Assert.NotNull(problemDetails);
Assert.Equal(expectedProblem.Status, problemDetails.Status);
Assert.Equal(expectedProblem.Type, problemDetails.Type);
Expand Down

0 comments on commit f6dedca

Please sign in to comment.