У меня есть 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);
Но это не имело значения.