в users лежат куки сгенереные в первом методе, второй метод эти куки почему то не видит, но когда я например вставляю код из второго метода в конце первого, то всё отрабатывает норм и авторизуется, почему так?
[TestCaseSource(nameof(users)), Order(2)]
public async Task LoginTest(UserTestClass userTest)
{
var client = _factory.CreateClient();
var pairs = new List<KeyValuePair<string, string>>();
var content = new FormUrlEncodedContent(pairs);
var response1 = await client.PostAsync($"/auth/login?Username={userTest.Username}&Password={userTest.Password}", content);
Assert.AreEqual(HttpStatusCode.OK, response1.StatusCode);
var headers = response1.Headers.ToDictionary(k => k.Key, a => string.Join(";", a.Value));
var cookie = headers["Set-Cookie"].Split(';')[0];
userTest.Cookie = cookie;
}
[TestCaseSource(nameof(users)), Order(3)]
public async Task ChangePasswordTest(UserTestClass userTest)
{
var client = _factory.CreateClient();
var pairs = new List<KeyValuePair<string, string>>();
var content = new FormUrlEncodedContent(pairs);
var baseAddress = new Uri("https://localhost:7190");
var cookieContainer = new CookieContainer();
using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer })
using (var client2 = new HttpClient(handler) { BaseAddress = baseAddress })
{
var pairs2 = new List<KeyValuePair<string, string>>();
var content2 = new FormUrlEncodedContent(pairs2);
cookieContainer.Add(baseAddress, new Cookie("Cookie", userTest.Cookie));
var result = await client.PostAsync("/auth/change-password?Password=newpass", content);
result.EnsureSuccessStatusCode();
Assert.AreEqual(HttpStatusCode.OK, result.StatusCode);
}
}
Скинь фото с кодом
да я уже сделал просто HttpClient полем класса и инициализировал в начале, но всё равно было бы интересно узнать можно ли сделать то же самое с разными HttpClient
Обсуждают сегодня