Tests for the listing uploaded files by user

This commit is contained in:
Timothy Baldridge 2020-03-29 22:48:28 -06:00
parent 5841367e64
commit 8b9210eeb0
5 changed files with 50 additions and 8 deletions

View File

@ -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("<testuser>", 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<string[]>();
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);
}
}
}

View File

@ -9,6 +9,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="Xunit.Priority" Version="1.1.6" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" />
<PackageReference Include="coverlet.collector" Version="1.0.1" />
<PackageReference Include="System.Data.SqlClient" Version="4.8.1" />

View File

@ -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":"<testuser>","UploadDate":{"$date":{"$numberLong":"1579472623183"}}}
{"_id":"63f8f868-0f4d-4997-922b-ee952984973a","Name":"file2.zip","Size":{"$numberInt":"558782831"},"Hash":"XYl4fIcAUWo=","Uploader":"<testuser>","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"}

View File

@ -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]

View File

@ -242,6 +242,7 @@ namespace Wabbajack.BuildServer.Model.Models
static SqlService()
{
SqlMapper.AddTypeHandler(new PayloadMapper());
SqlMapper.AddTypeHandler(new HashMapper());
}
public class PayloadMapper : SqlMapper.TypeHandler<AJobPayload>
@ -257,6 +258,19 @@ namespace Wabbajack.BuildServer.Model.Models
}
}
class HashMapper : SqlMapper.TypeHandler<Hash>
{
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<IEnumerable<UploadedFile>> AllUploadedFilesForUser(string user)
{
await using var conn = await Open();
return await conn.QueryAsync<UploadedFile>("SELECT * FROM dbo.UploadedFiles WHERE UploadedBy = @uploadedBy",
new {UploadedBy = user});
}
}
}