diff --git a/ProjectLighthouse.Tests/DatabaseFact.cs b/ProjectLighthouse.Tests/DatabaseFactAttribute.cs similarity index 61% rename from ProjectLighthouse.Tests/DatabaseFact.cs rename to ProjectLighthouse.Tests/DatabaseFactAttribute.cs index a62ecd5a..3089bdc8 100644 --- a/ProjectLighthouse.Tests/DatabaseFact.cs +++ b/ProjectLighthouse.Tests/DatabaseFactAttribute.cs @@ -4,9 +4,11 @@ using Xunit; namespace LBPUnion.ProjectLighthouse.Tests { - public sealed class DatabaseFact : FactAttribute + public sealed class DatabaseFactAttribute : FactAttribute { - public DatabaseFact() + private static readonly object migrateLock = new(); + + public DatabaseFactAttribute() { ServerSettings.Instance = new ServerSettings(); ServerSettings.Instance.DbConnectionString = "server=127.0.0.1;uid=root;pwd=lighthouse;database=lighthouse"; @@ -16,8 +18,11 @@ namespace LBPUnion.ProjectLighthouse.Tests } else { - using Database database = new(); - database.Database.Migrate(); + lock(migrateLock) + { + using Database database = new(); + database.Database.Migrate(); + } } } } diff --git a/ProjectLighthouse.Tests/LighthouseTest.cs b/ProjectLighthouse.Tests/LighthouseTest.cs index 22babd5c..dd96dbf0 100644 --- a/ProjectLighthouse.Tests/LighthouseTest.cs +++ b/ProjectLighthouse.Tests/LighthouseTest.cs @@ -1,7 +1,7 @@ +using System; using System.Diagnostics.CodeAnalysis; using System.IO; using System.Net.Http; -using System.Text; using System.Threading.Tasks; using System.Xml.Serialization; using LBPUnion.ProjectLighthouse.Helpers; @@ -25,9 +25,13 @@ namespace LBPUnion.ProjectLighthouse.Tests this.Client = this.Server.CreateClient(); } - - public async Task AuthenticateResponse(int number = 0, bool createUser = true) + public async Task AuthenticateResponse(int number = -1, bool createUser = true) { + if (number == -1) + { + number = new Random().Next(); + } + const string username = "unitTestUser"; if (createUser) { @@ -65,8 +69,8 @@ namespace LBPUnion.ProjectLighthouse.Tests public async Task UploadFileEndpointRequest(string filePath) { - byte[] bytes = Encoding.UTF8.GetBytes(await File.ReadAllTextAsync(filePath)); - string hash = HashHelper.Sha1Hash(bytes); + byte[] bytes = await File.ReadAllBytesAsync(filePath); + string hash = HashHelper.Sha1Hash(bytes).ToLower(); return await this.Client.PostAsync($"/LITTLEBIGPLANETPS3_XML/upload/{hash}", new ByteArrayContent(bytes)); } diff --git a/ProjectLighthouse.Tests/Tests/UploadTests.cs b/ProjectLighthouse.Tests/Tests/UploadTests.cs index fb73be01..8c7f0bd5 100644 --- a/ProjectLighthouse.Tests/Tests/UploadTests.cs +++ b/ProjectLighthouse.Tests/Tests/UploadTests.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Net; using System.Net.Http; using System.Threading.Tasks; using Xunit; @@ -18,6 +19,7 @@ namespace LBPUnion.ProjectLighthouse.Tests public async Task ShouldNotAcceptScript() { HttpResponseMessage response = await this.UploadFileEndpointRequest("ExampleFiles/TestScript.ff"); + Assert.False(response.StatusCode == HttpStatusCode.Forbidden); Assert.False(response.IsSuccessStatusCode); } @@ -25,6 +27,7 @@ namespace LBPUnion.ProjectLighthouse.Tests public async Task ShouldNotAcceptFarc() { HttpResponseMessage response = await this.UploadFileEndpointRequest("ExampleFiles/TestFarc.farc"); + Assert.False(response.StatusCode == HttpStatusCode.Forbidden); Assert.False(response.IsSuccessStatusCode); } @@ -32,6 +35,7 @@ namespace LBPUnion.ProjectLighthouse.Tests public async Task ShouldNotAcceptGarbage() { HttpResponseMessage response = await this.UploadFileEndpointRequest("ExampleFiles/TestGarbage.bin"); + Assert.False(response.StatusCode == HttpStatusCode.Forbidden); Assert.False(response.IsSuccessStatusCode); } @@ -39,6 +43,7 @@ namespace LBPUnion.ProjectLighthouse.Tests public async Task ShouldAcceptTexture() { HttpResponseMessage response = await this.UploadFileEndpointRequest("ExampleFiles/TestTexture.tex"); + Assert.False(response.StatusCode == HttpStatusCode.Forbidden); Assert.True(response.IsSuccessStatusCode); } @@ -46,6 +51,7 @@ namespace LBPUnion.ProjectLighthouse.Tests public async Task ShouldAcceptLevel() { HttpResponseMessage response = await this.UploadFileEndpointRequest("ExampleFiles/TestLevel.lvl"); + Assert.False(response.StatusCode == HttpStatusCode.Forbidden); Assert.True(response.IsSuccessStatusCode); } } diff --git a/ProjectLighthouse/Database.cs b/ProjectLighthouse/Database.cs index 9fda3cab..e28957ba 100644 --- a/ProjectLighthouse/Database.cs +++ b/ProjectLighthouse/Database.cs @@ -73,6 +73,7 @@ namespace LBPUnion.ProjectLighthouse GameToken gameToken = new() { UserToken = HashHelper.GenerateAuthToken(), + User = user, UserId = user.UserId, UserLocation = userLocation, GameVersion = GameVersionHelper.FromTitleId(titleId), diff --git a/ProjectLighthouse/ProjectLighthouse.csproj b/ProjectLighthouse/ProjectLighthouse.csproj index 0fef627e..ffc2f979 100644 --- a/ProjectLighthouse/ProjectLighthouse.csproj +++ b/ProjectLighthouse/ProjectLighthouse.csproj @@ -33,10 +33,6 @@ - - <_ContentIncludedByDefault Remove="Pages\Admin\Index.cshtml"/> - -