Аутентификация запросов на Microsoft.Owin.Testing.TestServer
Я использую класс owin TestServer для unit test my web api. Он отлично работает, за исключением того, что я не уверен, как выполнять аутентификацию запросов, поэтому я не могу проверить конечные точки, требующие проверки подлинности, кроме того, чтобы неавторизованные запросы, не прошедшие проверку подлинности.
Я настраиваю WebApi для использования только аутентификации маркера на предъявителя, как указано здесь:
// Web API configuration and services
// Configure Web API to use only bearer token authentication.
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
Любые идеи, как я мог бы сделать это легко?
Ответы
Ответ 1
Я нашел полезную документацию для использования аутентификации TestServer + OAuth
http://www.aaron-powell.com/posts/2014-01-12-integration-testing-katana-with-auth/
Он также предоставляет решение для VS в GitHub.
https://github.com/aaronpowell/Owin.AuthenticatedTests/tree/a154931dd82e5180daf7163c2129f3a90401df55
Ответ 2
Для более простых тестов интеграции вы можете использовать MyTested.WebApi, что позволяет вам делать следующее:
MyWebApi
.Server()
.Starts<Startup>()
.WithHttpRequestMessage(req => req
.WithRequestUri("/api/Books/Get")
.WithMethod(HttpMethod.Get))
.ShouldReturnHttpResponseMessage()
.WithStatusCode(HttpStatusCode.OK)
.WithResponseModelOfType<List<BookResponseModel>>()
.Passing(m => m.Count == 3);
Полный образец с проверкой подлинности можно найти здесь:
Sample