using System.IO; using System.Net; using System.Net.Http; using System.Threading; using System.Threading.Tasks; using Moq; using Moq.Protected; namespace PSProxmoxVE.Core.Tests { public static class TestHelper { public static string LoadFixture(string filename) { var path = Path.Combine("Fixtures", filename); return File.ReadAllText(path); } public static Mock CreateMockHandler(string responseBody, HttpStatusCode statusCode = HttpStatusCode.OK) { var mock = new Mock(); mock.Protected() .Setup>("SendAsync", ItExpr.IsAny(), ItExpr.IsAny()) .ReturnsAsync(new HttpResponseMessage { StatusCode = statusCode, Content = new StringContent(responseBody) }); return mock; } public static Mock CreateMockHandlerSequence(params (string body, HttpStatusCode status)[] responses) { var mock = new Mock(); var setup = mock.Protected() .SetupSequence>("SendAsync", ItExpr.IsAny(), ItExpr.IsAny()); foreach (var (body, status) in responses) { setup = setup.ReturnsAsync(new HttpResponseMessage { StatusCode = status, Content = new StringContent(body) }); } return mock; } } }