File: NewtonsoftJsonOutputFormatterTest.cs
Web Access
Project: src\src\Mvc\test\Mvc.FunctionalTests\Microsoft.AspNetCore.Mvc.FunctionalTests.csproj (Microsoft.AspNetCore.Mvc.FunctionalTests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Net;
using FormatterWebSite.Controllers;
using Microsoft.AspNetCore.Mvc.NewtonsoftJson;
using Newtonsoft.Json;
 
namespace Microsoft.AspNetCore.Mvc.FunctionalTests;
 
public class NewtonsoftJsonOutputFormatterTest : JsonOutputFormatterTestBase<FormatterWebSite.Startup>
{
    public NewtonsoftJsonOutputFormatterTest(MvcTestFixture<FormatterWebSite.Startup> fixture)
        : base(fixture)
    {
    }
 
    [Fact]
    public async Task JsonOutputFormatter_ReturnsIndentedJson()
    {
        // Arrange
        var user = new FormatterWebSite.User()
        {
            Id = 1,
            Alias = "john",
            description = "This is long so we can test large objects " + new string('a', 1024 * 65),
            Designation = "Administrator",
            Name = "John Williams"
        };
 
        var serializerSettings = JsonSerializerSettingsProvider.CreateSerializerSettings();
        serializerSettings.Formatting = Formatting.Indented;
        var expectedBody = JsonConvert.SerializeObject(user, serializerSettings);
 
        // Act
        var response = await Client.GetAsync("http://localhost/JsonFormatter/ReturnsIndentedJson");
 
        // Assert
        await response.AssertStatusCodeAsync(HttpStatusCode.OK);
        var actualBody = await response.Content.ReadAsStringAsync();
        Assert.Equal(expectedBody, actualBody);
    }
 
    [Fact]
    public async Task JsonOutputFormatter_SetsContentLength()
    {
        // Act
        var response = await Client.GetAsync($"/JsonOutputFormatter/{nameof(JsonOutputFormatterController.SimpleModelResult)}");
 
        // Assert
        await response.AssertStatusCodeAsync(HttpStatusCode.OK);
        Assert.Equal(50, response.Content.Headers.ContentLength);
    }
}