diff --git a/ProjectLighthouse.Tests/LighthouseTest.cs b/ProjectLighthouse.Tests/LighthouseTest.cs index 62b07ec5..68ff9dbf 100644 --- a/ProjectLighthouse.Tests/LighthouseTest.cs +++ b/ProjectLighthouse.Tests/LighthouseTest.cs @@ -1,5 +1,6 @@ using System.IO; using System.Net.Http; +using System.Text; using System.Threading.Tasks; using System.Xml.Serialization; using Microsoft.AspNetCore.Hosting; @@ -52,10 +53,22 @@ namespace ProjectLighthouse.Tests { return await this.Client.PostAsync(endpoint, new StringContent(await File.ReadAllTextAsync(filePath))); } - public async Task AuthenticatedUploadFileRequest(string endpoint, string filePath) { + public async Task UploadDataRequest(string endpoint, byte[] data) { + return await this.Client.PostAsync(endpoint, new ByteArrayContent(data)); + } + + public async Task AuthenticatedUploadFileRequest(string endpoint, string filePath, string mmAuth) { using var requestMessage = new HttpRequestMessage(HttpMethod.Post, endpoint); + requestMessage.Headers.Add("Cookie", mmAuth); requestMessage.Content = new StringContent(await File.ReadAllTextAsync(filePath)); return await this.Client.SendAsync(requestMessage); } + + public async Task AuthenticatedUploadDataRequest(string endpoint, byte[] data, string mmAuth) { + using var requestMessage = new HttpRequestMessage(HttpMethod.Post, endpoint); + requestMessage.Headers.Add("Cookie", mmAuth); + requestMessage.Content = new ByteArrayContent(data); + return await this.Client.SendAsync(requestMessage); + } } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests/Tests/MatchTests.cs b/ProjectLighthouse.Tests/Tests/MatchTests.cs new file mode 100644 index 00000000..212e8043 --- /dev/null +++ b/ProjectLighthouse.Tests/Tests/MatchTests.cs @@ -0,0 +1,46 @@ +using System; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using ProjectLighthouse.Types; +using Xunit; +using Xunit.Abstractions; + +namespace ProjectLighthouse.Tests { + public class MatchTests : LighthouseTest { + private readonly ITestOutputHelper testOutputHelper; + private static SemaphoreSlim semaphore = new(1, 1); + public MatchTests(ITestOutputHelper testOutputHelper) { + this.testOutputHelper = testOutputHelper; + } + + [DatabaseFact] + public async Task ShouldReturnOk() { + LoginResult loginResult = await this.Authenticate(); + await semaphore.WaitAsync(); + + HttpResponseMessage result = await AuthenticatedUploadDataRequest("LITTLEBIGPLANETPS3_XML/match", Array.Empty(), loginResult.AuthTicket); + Assert.True(result.IsSuccessStatusCode); + + semaphore.Release(); + } + public async Task GetPlayerCount() => Convert.ToInt32(await this.Client.GetStringAsync("LITTLEBIGPLANETPS3_XML/totalPlayerCount")); + + [DatabaseFact] + public async Task ShouldIncrementPlayerCount() { + LoginResult loginResult = await this.Authenticate(new Random().Next()); + + await semaphore.WaitAsync(); + + int oldPlayerCount = await this.GetPlayerCount(); + + HttpResponseMessage result = await AuthenticatedUploadDataRequest("LITTLEBIGPLANETPS3_XML/match", Array.Empty(), loginResult.AuthTicket); + Assert.True(result.IsSuccessStatusCode); + + int playerCount = await this.GetPlayerCount(); + + semaphore.Release(); + Assert.Equal(oldPlayerCount + 1, playerCount); + } + } +} \ No newline at end of file