tests: Add basic test for Cardigann HTML (#12581)

This commit is contained in:
Diego Heras
2021-11-17 23:04:58 +01:00
committed by GitHub
parent cf1db13b8d
commit 30b30e8861
7 changed files with 1144 additions and 10 deletions

View File

@@ -1,32 +1,56 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Jackett.Common.Models.Config;
using Jackett.Common.Services.Interfaces;
using Jackett.Common.Utils.Clients;
using NLog;
using WebClient = Jackett.Common.Utils.Clients.WebClient;
using WebRequest = Jackett.Common.Utils.Clients.WebRequest;
namespace Jackett.Test.TestHelpers
{
// Currently not used in any Unit tests. Leaving it for potential future testing purposes.
public class TestWebClient : WebClient
{
private readonly Dictionary<WebRequest, Func<WebRequest, WebResult>> _requestCallbacks = new Dictionary<WebRequest, Func<WebRequest, WebResult>>();
private readonly Dictionary<string, WebResult> _requestCallbacks = new Dictionary<string, WebResult>();
public TestWebClient() : base(null, null, null, new ServerConfig(null))
{
}
public TestWebClient(IProcessService p, Logger l, IConfigurationService c, ServerConfig sc)
: base(p, l, c, sc)
{
}
public void RegisterRequestCallback(WebRequest req, Func<WebRequest, WebResult> f) => _requestCallbacks.Add(req, f);
public void RegisterRequestCallback(string requestUrl, string responseFileName)
{
var contentString = TestUtil.LoadTestFile(responseFileName);
var webResult = new WebResult
{
ContentBytes = Encoding.UTF8.GetBytes(contentString),
Status = HttpStatusCode.OK
};
_requestCallbacks.Add(requestUrl, webResult);
}
public override Task<WebResult> GetResultAsync(WebRequest request) => Task.FromResult(_requestCallbacks.First(r => r.Key.Equals(request)).Value.Invoke(request));
public override Task<WebResult> GetResultAsync(WebRequest request)
{
if (_requestCallbacks.ContainsKey(request.Url))
return Task.Factory.StartNew(
() =>
{
var response = _requestCallbacks[request.Url];
response.Request = request;
return response;
});
throw new Exception($"You have to mock the URL {request.Url} with RegisterRequestCallback");
}
public override void Init()
{
}
}
}