Fixed: Testing qBittorrent after credentials change would always pass tests

This commit is contained in:
Mark McDowall
2025-11-16 13:06:57 -08:00
committed by Auggie
parent 58a1d9357b
commit 467c8d497d
2 changed files with 9 additions and 3 deletions
@@ -28,6 +28,7 @@ namespace NzbDrone.Common.Http
public TimeSpan RateLimit { get; set; } public TimeSpan RateLimit { get; set; }
public bool LogResponseContent { get; set; } public bool LogResponseContent { get; set; }
public ICredentials NetworkCredential { get; set; } public ICredentials NetworkCredential { get; set; }
public bool StoreRequestCookie { get; set; }
public Dictionary<string, string> Cookies { get; private set; } public Dictionary<string, string> Cookies { get; private set; }
public List<HttpFormData> FormData { get; private set; } public List<HttpFormData> FormData { get; private set; }
public Action<HttpRequest> PostProcess { get; set; } public Action<HttpRequest> PostProcess { get; set; }
@@ -44,6 +45,7 @@ namespace NzbDrone.Common.Http
Cookies = new Dictionary<string, string>(); Cookies = new Dictionary<string, string>();
FormData = new List<HttpFormData>(); FormData = new List<HttpFormData>();
LogHttpError = true; LogHttpError = true;
StoreRequestCookie = true;
} }
public HttpRequestBuilder(bool useHttps, string host, int port, string urlBase = null) public HttpRequestBuilder(bool useHttps, string host, int port, string urlBase = null)
@@ -111,6 +113,7 @@ namespace NzbDrone.Common.Http
request.RateLimit = RateLimit; request.RateLimit = RateLimit;
request.LogResponseContent = LogResponseContent; request.LogResponseContent = LogResponseContent;
request.Credentials = NetworkCredential; request.Credentials = NetworkCredential;
request.StoreRequestCookie = StoreRequestCookie;
foreach (var header in Headers) foreach (var header in Headers)
{ {
@@ -342,7 +342,7 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
var requestBuilder = new HttpRequestBuilder(settings.UseSsl, settings.Host, settings.Port, settings.UrlBase) var requestBuilder = new HttpRequestBuilder(settings.UseSsl, settings.Host, settings.Port, settings.UrlBase)
{ {
LogResponseContent = true, LogResponseContent = true,
NetworkCredential = new BasicNetworkCredential(settings.Username, settings.Password) StoreRequestCookie = false
}; };
return requestBuilder; return requestBuilder;
} }
@@ -403,7 +403,7 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
return; return;
} }
var authKey = string.Format("{0}:{1}", requestBuilder.BaseUrl, settings.Password); var authKey = $"{requestBuilder.BaseUrl}:{settings.Username}:{settings.Password}";
var cookies = _authCookieCache.Find(authKey); var cookies = _authCookieCache.Find(authKey);
@@ -411,7 +411,10 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
{ {
_authCookieCache.Remove(authKey); _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() .Post()
.AddFormParameter("username", settings.Username ?? string.Empty) .AddFormParameter("username", settings.Username ?? string.Empty)
.AddFormParameter("password", settings.Password ?? string.Empty) .AddFormParameter("password", settings.Password ?? string.Empty)