Снова запустите интеграционный тест веб-API с использованием аутентификации Auth0 в ASP .Net Core 2.2. - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть ASP .Net Core 2.2 Web API, который я сейчас создаю интеграционные тесты для использования XUnit.Однако API использует Auth0 в качестве сервера аутентификации.Все его действия контроллера защищены декоратором [Authorize].

На данный момент я просто хотел добавить жестко закодированный токен доступа к тестам, который я могу получить с веб-сайта Auth0, чтобытесты могут успешно пройти проверку подлинности с помощью API и выполнить свою задачу.Я все время делаю одно и то же с Почтальоном, чтобы проверить мой API, и он отлично работает.

Так вот код, который у меня есть в одном тестовом классе:

public class FileControllerTests
{
    private readonly HttpClient _client;
    private readonly TestServer _server;

    public FileControllerTests()
    {
        _server = new TestServer(new WebHostBuilder().UseStartup<Startup>());
        _client = _server.CreateClient();
    }

    [Theory]
    [InlineData("GET")]
    public async Task TestFilesAsync(string method)
    {
        // Arrange
        var request = new HttpRequestMessage(new HttpMethod(method), "/api/files");
        request.Headers.Add("Authorization", ACCESS_TOKEN);

        // Act
        var response = await _client.SendAsync(request);

        // Assert
        response.EnsureSuccessStatusCode();
        Assert.Equal(HttpStatusCode.OK, response.StatusCode);
    }
}

Когда язапустить этот тест, я получаю эту ошибку:

System.Net.Http.HttpRequestException: Код состояния ответа не указывает на успех: 500 (Внутренняя ошибка сервера).

Однако если я удаляю декоратор [Authorize] из контроллера API, то тест работает и проходит.Есть идеи?

Я использую Visual Studio Professional 2017 (версия 15.9.4)

РЕДАКТИРОВАТЬ: вместо:

request.Headers.Add("Authorization", ACCESS_TOKEN);

Я также пытался

request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", ACCESS_TOKEN);

Но это не имело значения.

...