mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-03-03 17:36:59 +01:00
Updated status message when adding files and related test
This commit is contained in:
parent
590ca4ef56
commit
a7f6bcf36c
3 changed files with 38 additions and 11 deletions
|
@ -10,6 +10,7 @@ using BTCPayServer.Storage.Services.Providers.AzureBlobStorage.Configuration;
|
||||||
using BTCPayServer.Storage.Services.Providers.FileSystemStorage.Configuration;
|
using BTCPayServer.Storage.Services.Providers.FileSystemStorage.Configuration;
|
||||||
using BTCPayServer.Storage.ViewModels;
|
using BTCPayServer.Storage.ViewModels;
|
||||||
using BTCPayServer.Tests.Logging;
|
using BTCPayServer.Tests.Logging;
|
||||||
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
@ -180,7 +181,10 @@ namespace BTCPayServer.Tests
|
||||||
private async Task CanUploadRemoveFiles(ServerController controller)
|
private async Task CanUploadRemoveFiles(ServerController controller)
|
||||||
{
|
{
|
||||||
var fileContent = "content";
|
var fileContent = "content";
|
||||||
var uploadFormFileResult = Assert.IsType<RedirectToActionResult>(await controller.CreateFile(TestUtils.GetFormFile("uploadtestfile.txt", fileContent)));
|
List<IFormFile> fileList = new List<IFormFile>();
|
||||||
|
fileList.Add(TestUtils.GetFormFile("uploadtestfile1.txt", fileContent));
|
||||||
|
|
||||||
|
var uploadFormFileResult = Assert.IsType<RedirectToActionResult>(await controller.CreateFiles(fileList));
|
||||||
Assert.True(uploadFormFileResult.RouteValues.ContainsKey("fileId"));
|
Assert.True(uploadFormFileResult.RouteValues.ContainsKey("fileId"));
|
||||||
var fileId = uploadFormFileResult.RouteValues["fileId"].ToString();
|
var fileId = uploadFormFileResult.RouteValues["fileId"].ToString();
|
||||||
Assert.Equal("Files", uploadFormFileResult.ActionName);
|
Assert.Equal("Files", uploadFormFileResult.ActionName);
|
||||||
|
|
|
@ -148,25 +148,48 @@ namespace BTCPayServer.Controllers
|
||||||
|
|
||||||
|
|
||||||
[HttpPost("server/files/upload")]
|
[HttpPost("server/files/upload")]
|
||||||
public async Task<IActionResult> CreateFile(List<IFormFile> files)
|
public async Task<IActionResult> CreateFiles(List<IFormFile> files)
|
||||||
{
|
{
|
||||||
if (files.Count > 0)
|
if (files != null && files.Count > 0)
|
||||||
{
|
{
|
||||||
|
int invalidFileNameCount = 0;
|
||||||
List<string> fileIds = new List<string>();
|
List<string> fileIds = new List<string>();
|
||||||
foreach (IFormFile file in files)
|
foreach (IFormFile file in files)
|
||||||
{
|
{
|
||||||
if (!file.FileName.IsValidFileName())
|
if (!file.FileName.IsValidFileName())
|
||||||
{
|
{
|
||||||
this.TempData.SetStatusMessageModel(new StatusMessageModel()
|
invalidFileNameCount++;
|
||||||
{
|
|
||||||
Message = "Invalid file name",
|
|
||||||
Severity = StatusMessageModel.StatusSeverity.Error
|
|
||||||
});
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
var newFile = await _FileService.AddFile(file, GetUserId());
|
var newFile = await _FileService.AddFile(file, GetUserId());
|
||||||
fileIds.Add(newFile.Id);
|
fileIds.Add(newFile.Id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
StatusMessageModel.StatusSeverity statusMessageSeverity;
|
||||||
|
string statusMessage;
|
||||||
|
|
||||||
|
if (invalidFileNameCount == 0)
|
||||||
|
{
|
||||||
|
statusMessage = "Files Added Successfully";
|
||||||
|
statusMessageSeverity = StatusMessageModel.StatusSeverity.Success;
|
||||||
|
}
|
||||||
|
else if (invalidFileNameCount > 0 && invalidFileNameCount < files.Count)
|
||||||
|
{
|
||||||
|
statusMessage = $"{files.Count - invalidFileNameCount} files were added. {invalidFileNameCount} files had invalid names";
|
||||||
|
statusMessageSeverity = StatusMessageModel.StatusSeverity.Error;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
statusMessage = $"Files could not be added due to invalid names";
|
||||||
|
statusMessageSeverity = StatusMessageModel.StatusSeverity.Error;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.TempData.SetStatusMessageModel(new StatusMessageModel()
|
||||||
|
{
|
||||||
|
Message = statusMessage,
|
||||||
|
Severity = statusMessageSeverity
|
||||||
|
});
|
||||||
|
|
||||||
if (fileIds.Count == 1)
|
if (fileIds.Count == 1)
|
||||||
{
|
{
|
||||||
return RedirectToAction(nameof(Files), new
|
return RedirectToAction(nameof(Files), new
|
||||||
|
|
|
@ -92,9 +92,9 @@ else
|
||||||
|
|
||||||
@if (Model.StorageConfigured)
|
@if (Model.StorageConfigured)
|
||||||
{
|
{
|
||||||
<form asp-action="CreateFile" method="post" enctype="multipart/form-data">
|
<form asp-action="CreateFiles" method="post" enctype="multipart/form-data">
|
||||||
<h4 class="mt-5 mb-3">Upload Files</h4>
|
<h4 class="mt-5 mb-3">Upload Files</h4>
|
||||||
<input multiple type="file" class="form-control mb-3" name="files" id="file" required>
|
<input multiple type="file" class="form-control mb-3" name="files" id="files" required>
|
||||||
<button class="btn btn-primary" role="button"><span class="fa fa-plus"></span> Upload files</button>
|
<button class="btn btn-primary" role="button"><span class="fa fa-plus"></span> Upload files</button>
|
||||||
</form>
|
</form>
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue