Files
criminalmindsapi/server.tests/integrationTests/CharactersControllerIntegrationTests.cs
T

52 lines
1.6 KiB
C#
Raw Normal View History

using FluentAssertions;
using Microsoft.AspNetCore.Mvc.Testing;
2022-07-05 15:29:48 -05:00
using server.Models;
using System.Net;
2022-07-05 15:29:48 -05:00
using System.Text.Json;
namespace server.tests.integrationTests
{
public class CharactersControllerIntegrationTests
{
private readonly HttpClient _client;
2022-07-05 15:29:48 -05:00
private readonly JsonSerializerOptions _serializerOptions;
public CharactersControllerIntegrationTests()
{
var webAppFactory = new WebApplicationFactory<Program>();
2022-07-05 15:29:48 -05:00
_client = webAppFactory.CreateDefaultClient();
2022-07-05 15:29:48 -05:00
2022-07-05 14:55:50 -05:00
_client.DefaultRequestHeaders.Add("x-api-version", "1");
2022-07-05 15:29:48 -05:00
_serializerOptions = new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true
};
}
[Fact]
2022-07-05 15:29:48 -05:00
public async Task GetCharacters_RetrieveAllCharacters_Returns200StatusCodeWithCharacters()
{
var response = await _client.GetAsync("/api/characters");
2022-07-05 14:55:50 -05:00
2022-07-05 15:29:48 -05:00
var data = await response.Content.ReadAsStreamAsync();
var characters = JsonSerializer.Deserialize<List<Character>>(data);
response.StatusCode.Should().Be(HttpStatusCode.OK);
2022-07-05 15:29:48 -05:00
characters.Should().NotBeNull();
characters.Should().HaveCountGreaterThan(0);
response.Headers.Should().ContainKey("X-Rate-Limit-Limit");
response.Headers.Should().ContainKey("X-Rate-Limit-Remaining");
response.Headers.Should().ContainKey("X-Rate-Limit-Reset");
}
[Fact]
public async Task GetCharacters_RetrieveSeasonOneCharacters_Returns200StatusCodeWithCharacters()
{
return;
}
}
}