Fixed: Testing qBittorrent after credentials change would always pass tests

(cherry picked from commit 9e780074571a21358abc1c3ed10fc25569378230)
This commit is contained in:
Mark McDowall 2025-11-16 13:06:57 -08:00 committed by Auggie
parent 0134fdedca
commit 8ac3e4746a
2 changed files with 9 additions and 3 deletions

View file

@ -28,6 +28,7 @@ public class HttpRequestBuilder
public TimeSpan RateLimit { get; set; }
public bool LogResponseContent { get; set; }
public ICredentials NetworkCredential { get; set; }
public bool StoreRequestCookie { get; set; }
public Dictionary<string, string> Cookies { get; private set; }
public List<HttpFormData> FormData { get; private set; }
public Action<HttpRequest> PostProcess { get; set; }
@ -44,6 +45,7 @@ public HttpRequestBuilder(string baseUrl)
Cookies = new Dictionary<string, string>();
FormData = new List<HttpFormData>();
LogHttpError = true;
StoreRequestCookie = true;
}
public HttpRequestBuilder(bool useHttps, string host, int port, string urlBase = null)
@ -111,6 +113,7 @@ protected virtual void Apply(HttpRequest request)
request.RateLimit = RateLimit;
request.LogResponseContent = LogResponseContent;
request.Credentials = NetworkCredential;
request.StoreRequestCookie = StoreRequestCookie;
foreach (var header in Headers)
{

View file

@ -342,7 +342,7 @@ private HttpRequestBuilder BuildRequest(QBittorrentSettings settings)
var requestBuilder = new HttpRequestBuilder(settings.UseSsl, settings.Host, settings.Port, settings.UrlBase)
{
LogResponseContent = true,
NetworkCredential = new BasicNetworkCredential(settings.Username, settings.Password)
StoreRequestCookie = false
};
return requestBuilder;
}
@ -403,7 +403,7 @@ private void AuthenticateClient(HttpRequestBuilder requestBuilder, QBittorrentSe
return;
}
var authKey = string.Format("{0}:{1}", requestBuilder.BaseUrl, settings.Password);
var authKey = $"{requestBuilder.BaseUrl}:{settings.Username}:{settings.Password}";
var cookies = _authCookieCache.Find(authKey);
@ -411,7 +411,10 @@ private void AuthenticateClient(HttpRequestBuilder requestBuilder, QBittorrentSe
{
_authCookieCache.Remove(authKey);
var authLoginRequest = BuildRequest(settings).Resource("/api/v2/auth/login")
var authRequestBuilder = BuildRequest(settings);
authRequestBuilder.NetworkCredential = new BasicNetworkCredential(settings.Username, settings.Password);
var authLoginRequest = authRequestBuilder.Resource("/api/v2/auth/login")
.Post()
.AddFormParameter("username", settings.Username ?? string.Empty)
.AddFormParameter("password", settings.Password ?? string.Empty)