using Flurl.Http.Configuration; using Flurl.Http.Testing; using Microsoft.Extensions.Logging.Abstractions; using Newtonsoft.Json; using Piwigo.Client.Contract; namespace Piwigo.Client.Tests; public class ApiTestsBase { private const string TestUri = "http://localhost:8080/ws.php?format=json"; private const string Username = "admin"; private const string Password = "admin"; private const bool UseHttpTest = true; protected HttpTest? HttpTest { get; private set; } protected IPiwigoContext Context { get; private set; } = null!; [SetUp] public void SetUp() { if (UseHttpTest) { HttpTest = new HttpTest(); } Context = new PiwigoContext(new PiwigoConfiguration(TestUri, Username, Password), new NullLogger()); OnSetUp(); } protected virtual void OnSetUp() { } [TearDown] public void TearDown() { HttpTest?.Dispose(); } protected async Task LoginAsync() { HttpTest?.RespondWith("{}", 200, cookies: new { pwg_id = "pwg_id" }); var sessionApi = new SessionApi(Context, new NullLogger()); await sessionApi.LoginAsync(); Context.IsLoggedIn.Should().BeTrue(); } internal void SetJsonResult(PiwigoResponse serverResponse) { var settings = new JsonSerializerSettings { Formatting = Formatting.Indented, NullValueHandling = NullValueHandling.Ignore }; var serializer = new NewtonsoftJsonSerializer(settings); var jsonResponse = serializer.Serialize(serverResponse); HttpTest?.RespondWith(jsonResponse); } }