Si vous souhaitez utiliser HttpClient
pour envoyer une requête qui nécessite que l'utilisateur soit connecté, cela signifie que vous devez effectuer le processus de connexion, puis recevoir les cookies et les envoyer à la requête qui nécessite une connexion.
J'ai fait cela en testant une Action appelée IsLoggedIn. Cette action vérifie si l'utilisateur est connecté en utilisant les cookies dans la requête HttpRequest.
Ce que j'ai fait pour tester cette action est le suivant :
string Login = JsonConvert.SerializeObject(new LoginViewModel()
{
Email = userFromDb.Email,
Password = "****",
RememberMe = false
}); ;
StringContent LoginhttpContent = new(Login, Encoding.UTF8, "application/json");
var Login_response = await _httpClient.PostAsync(
HelperFunctions.getUrl(HelperFunctions.AcctounController.name, HelperFunctions.AcctounController.Login),
LoginhttpContent);
Assert.Equal(HttpStatusCode.OK, Login_response.StatusCode);
//recevoir les cookies de la réponse de connexion
var cookies = Login_response.Headers.GetValues(HeaderNames.SetCookie);
//Ajouter les cookies aux DefaultRequestHeaders du _httpClient
_httpClient.DefaultRequestHeaders.Add("Cookie",cookies);
var IsLoggedIn_response = await _httpClient.GetAsync(HelperFunctions.getUrl(
HelperFunctions.AcctounController.name,
HelperFunctions.AcctounController.IsLoggedIn));
Assert.Equal("true",IsLoggedIn_response.Content.ReadAsStringAsync().Result);