Снова запустите интеграционный тест веб-API с использованием аутентификации Auth0 в ASP .Net Core 2.2.
У меня есть 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);
Но это не имело значения.