From 8b9210eeb07d86eae5341376a769a55d1b16931a Mon Sep 17 00:00:00 2001 From: Timothy Baldridge Date: Sun, 29 Mar 2020 22:48:28 -0600 Subject: [PATCH] Tests for the listing uploaded files by user --- .../UploadedFilesTest.cs | 24 +++++++++++++++++-- .../Wabbajack.BuildServer.Test.csproj | 1 + .../sql/uploaded_files_ingest.json | 8 +++---- .../Controllers/UploadedFiles.cs | 4 ++-- .../Models/Sql/SqlService.cs | 21 ++++++++++++++++ 5 files changed, 50 insertions(+), 8 deletions(-) diff --git a/Wabbajack.BuildServer.Test/UploadedFilesTest.cs b/Wabbajack.BuildServer.Test/UploadedFilesTest.cs index 0382cf39..ad89e0bd 100644 --- a/Wabbajack.BuildServer.Test/UploadedFilesTest.cs +++ b/Wabbajack.BuildServer.Test/UploadedFilesTest.cs @@ -2,9 +2,11 @@ using System.Net.Http; using System.Threading.Tasks; using Wabbajack.BuildServer.Model.Models; +using Wabbajack.BuildServer.Models; using Wabbajack.Common; using Xunit; using Xunit.Abstractions; +using Xunit.Priority; namespace Wabbajack.BuildServer.Test { @@ -16,10 +18,12 @@ namespace Wabbajack.BuildServer.Test } - [Fact] + [Fact, Priority(1)] public async Task CanIngestMongoDBExports() { - @"sql\uploaded_files_ingest.json".RelativeTo(AbsolutePath.EntryPoint).CopyTo(Fixture.ServerTempFolder.Combine("uploaded_files_ingest.json")); + var data = await @"sql\uploaded_files_ingest.json".RelativeTo(AbsolutePath.EntryPoint).ReadAllTextAsync(); + data = data.Replace("", Fixture.User); + await Fixture.ServerTempFolder.Combine("uploaded_files_ingest.json").WriteAllTextAsync(data); using var response = await _authedClient.GetAsync(MakeURL("ingest/uploaded_files/uploaded_files_ingest.json")); var result = await response.Content.ReadAsStringAsync(); Utils.Log("Loaded: " + result); @@ -27,5 +31,21 @@ namespace Wabbajack.BuildServer.Test Assert.Equal("4", result); } + + [Fact, Priority(1)] + public async Task CanLoadUploadedFiles() + { + var result = (await _authedClient.GetStringAsync(MakeURL("uploaded_files/list"))).FromJSONString(); + Utils.Log("Loaded: " + result); + + + Assert.True(result.Length >= 2, result.Length.ToString()); + Assert.Contains("file1-90db7c47-a8ae-4a62-9c2e-b7d357a16665.zip", result); + Assert.Contains("file2-63f8f868-0f4d-4997-922b-ee952984973a.zip", result); + // These are from other users + Assert.DoesNotContain("file2-1f18f301-67eb-46c9-928a-088f6666bf61.zip", result); + Assert.DoesNotContain("file3-17b3e918-8409-48e6-b7ff-6af858bfd1ba.zip", result); + } + } } diff --git a/Wabbajack.BuildServer.Test/Wabbajack.BuildServer.Test.csproj b/Wabbajack.BuildServer.Test/Wabbajack.BuildServer.Test.csproj index e8550032..fb18e834 100644 --- a/Wabbajack.BuildServer.Test/Wabbajack.BuildServer.Test.csproj +++ b/Wabbajack.BuildServer.Test/Wabbajack.BuildServer.Test.csproj @@ -9,6 +9,7 @@ + diff --git a/Wabbajack.BuildServer.Test/sql/uploaded_files_ingest.json b/Wabbajack.BuildServer.Test/sql/uploaded_files_ingest.json index a07813cd..cf0a312f 100644 --- a/Wabbajack.BuildServer.Test/sql/uploaded_files_ingest.json +++ b/Wabbajack.BuildServer.Test/sql/uploaded_files_ingest.json @@ -1,4 +1,4 @@ -{"_id":"90db7c47-a8ae-4a62-9c2e-b7d357a16665","Name":"file1.zip","Size":{"$numberInt":"56946233"},"Hash":"8t3PgB/J/Ps=","Uploader":"total","UploadDate":{"$date":{"$numberLong":"1579472623183"}}} -{"_id":"63f8f868-0f4d-4997-922b-ee952984973a","Name":"file2.zip","Size":{"$numberInt":"558782831"},"Hash":"XYl4fIcAUWo=","Uploader":"total","UploadDate":{"$date":{"$numberLong":"1579650208226"}},"CDNName":"wabbajackpush"} -{"_id":"1f18f301-67eb-46c9-928a-088f6666bf61","Name":"file2.zip","Size":{"$numberInt":"397558132"},"Hash":"uhXJw1MTdJI=","Uploader":"timboman","UploadDate":{"$date":{"$numberLong":"1579661152181"}},"CDNName":"wabbajackpush"} -{"_id":"17b3e918-8409-48e6-b7ff-6af858bfd1ba","Name":"file3.zip","Size":{"$numberInt":"633419999"},"Hash":"yyDD50X2kNM=","Uploader":"timboman","UploadDate":{"$date":{"$numberLong":"1579662459461"}},"CDNName":"wabbajackpush"} +{"_id":"90db7c47-a8ae-4a62-9c2e-b7d357a16665","Name":"file1.zip","Size":{"$numberInt":"56946233"},"Hash":"8t3PgB/J/Ps=","Uploader":"","UploadDate":{"$date":{"$numberLong":"1579472623183"}}} +{"_id":"63f8f868-0f4d-4997-922b-ee952984973a","Name":"file2.zip","Size":{"$numberInt":"558782831"},"Hash":"XYl4fIcAUWo=","Uploader":"","UploadDate":{"$date":{"$numberLong":"1579650208226"}},"CDNName":"wabbajackpush"} +{"_id":"1f18f301-67eb-46c9-928a-088f6666bf61","Name":"file2.zip","Size":{"$numberInt":"397558132"},"Hash":"uhXJw1MTdJI=","Uploader":"other","UploadDate":{"$date":{"$numberLong":"1579661152181"}},"CDNName":"wabbajackpush"} +{"_id":"17b3e918-8409-48e6-b7ff-6af858bfd1ba","Name":"file3.zip","Size":{"$numberInt":"633419999"},"Hash":"yyDD50X2kNM=","Uploader":"other","UploadDate":{"$date":{"$numberLong":"1579662459461"}},"CDNName":"wabbajackpush"} diff --git a/Wabbajack.BuildServer/Controllers/UploadedFiles.cs b/Wabbajack.BuildServer/Controllers/UploadedFiles.cs index d3ecd1dd..f981e51b 100644 --- a/Wabbajack.BuildServer/Controllers/UploadedFiles.cs +++ b/Wabbajack.BuildServer/Controllers/UploadedFiles.cs @@ -205,8 +205,8 @@ namespace Wabbajack.BuildServer.Controllers { var user = User.FindFirstValue(ClaimTypes.Name); Utils.Log($"List Uploaded Files {user}"); - var files = await Db.UploadedFiles.AsQueryable().Where(f => f.Uploader == user).ToListAsync(); - return Ok(files.OrderBy(f => f.UploadDate).Select(f => f.MungedName).ToArray().ToJSON(prettyPrint:true)); + var files = await SQL.AllUploadedFilesForUser(user); + return Ok(files.OrderBy(f => f.UploadDate).Select(f => f.MungedName ).ToArray().ToJSON(prettyPrint:true)); } [HttpDelete] diff --git a/Wabbajack.BuildServer/Models/Sql/SqlService.cs b/Wabbajack.BuildServer/Models/Sql/SqlService.cs index 926e4a37..3effbe07 100644 --- a/Wabbajack.BuildServer/Models/Sql/SqlService.cs +++ b/Wabbajack.BuildServer/Models/Sql/SqlService.cs @@ -242,6 +242,7 @@ namespace Wabbajack.BuildServer.Model.Models static SqlService() { SqlMapper.AddTypeHandler(new PayloadMapper()); + SqlMapper.AddTypeHandler(new HashMapper()); } public class PayloadMapper : SqlMapper.TypeHandler @@ -257,6 +258,19 @@ namespace Wabbajack.BuildServer.Model.Models } } + class HashMapper : SqlMapper.TypeHandler + { + public override void SetValue(IDbDataParameter parameter, Hash value) + { + parameter.Value = (long)value; + } + + public override Hash Parse(object value) + { + return Hash.FromLong((long)value); + } + } + #endregion @@ -277,5 +291,12 @@ namespace Wabbajack.BuildServer.Model.Models CDNName = uf.CDNName }); } + + public async Task> AllUploadedFilesForUser(string user) + { + await using var conn = await Open(); + return await conn.QueryAsync("SELECT * FROM dbo.UploadedFiles WHERE UploadedBy = @uploadedBy", + new {UploadedBy = user}); + } } }