У меня есть вопрос о Http-запросах к методам, где требуется идентификация.
Я пишу интеграционные тесты так:
// Act
var response = await fixture.httpClient.GetAsync("api/Orders");
var result = JsonConvert.DeserializeObject<QueryResult<IEnumerable<OrdersList>>>(await response.Content.ReadAsStringAsync());
Где метод api / Orders требует только авторизованных пользователей:
string userId = userManager.GetUserId(User);
if (userId != null)
{
...
Но .. Я не знаю, как позвонить в HttpClient. Я хочу авторизоваться.
Я использую Mirosoft.Identity.
Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddIdentity<ApplicationUser, IdentityRole>(o => {
o.Password.RequireDigit = false;
o.Password.RequiredUniqueChars = 0;
o.Password.RequireLowercase = false;
o.Password.RequireNonAlphanumeric = false;
o.Password.RequireUppercase = false;
o.Password.RequiredLength = 6;
o.Lockout.AllowedForNewUsers = false;
o.Lockout.MaxFailedAccessAttempts = 10;
})
.AddEntityFrameworkStores<TakeMeAwayDbContext>()
.AddDefaultTokenProviders();
services.ConfigureApplicationCookie(options =>
{
options.Cookie.Name = "Cookie";
options.Cookie.HttpOnly = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(60);
options.LoginPath = "/api/Accounts/Login";
options.ReturnUrlParameter = CookieAuthenticationDefaults.ReturnUrlParameter;
options.SlidingExpiration = true;
});
}
Я действительно не хочу менять логику авторизации, потому что мой API готов, но я действительно хочу написать несколько интеграционных тестов.
Второй вопрос. Будет ли проблема, если я буду использовать этот API с приложением MS Identity to Android (с вызовами REST API)? Я имею в виду, приложение Android не забывает авторизацию?
Спасибо за помощь!