using System.IO; using System.Net.Http; using System.Threading.Tasks; using System.Xml.Serialization; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.TestHost; using ProjectLighthouse.Serialization; using ProjectLighthouse.Types; namespace ProjectLighthouse.Tests { public class LighthouseTest { public readonly TestServer Server; public readonly HttpClient Client; public LighthouseTest() { this.Server = new TestServer(new WebHostBuilder() .UseStartup()); this.Client = this.Server.CreateClient(); } public async Task AuthenticateResponse(int number = 0) { const char nullChar = (char)0x00; const char sepChar = (char)0x20; const string username = "unitTestUser"; string stringContent = $"{nullChar}{sepChar}{username}{number}{nullChar}"; HttpResponseMessage response = await this.Client.PostAsync("/LITTLEBIGPLANETPS3_XML/login", new StringContent(stringContent)); return response; } public async Task Authenticate(int number = 0) { HttpResponseMessage response = await this.AuthenticateResponse(number); string responseContent = LbpSerializer.StringElement("loginResult", await response.Content.ReadAsStringAsync()); XmlSerializer serializer = new(typeof(LoginResult)); return (LoginResult)serializer.Deserialize(new StringReader(responseContent))!; } public Task AuthenticatedRequest(string endpoint, string mmAuth) => AuthenticatedRequest(endpoint, mmAuth, HttpMethod.Get); public Task AuthenticatedRequest(string endpoint, string mmAuth, HttpMethod method) { using var requestMessage = new HttpRequestMessage(method, endpoint); requestMessage.Headers.Add("Cookie", mmAuth); return this.Client.SendAsync(requestMessage); } } }