mirror of
https://github.com/aljazceru/btcpayserver.git
synced 2025-12-18 22:44:29 +01:00
Small refactoring for tests
This commit is contained in:
@@ -190,21 +190,8 @@ namespace BTCPayServer.Tests
|
|||||||
|
|
||||||
private async Task CanUploadRemoveFiles(ServerController controller)
|
private async Task CanUploadRemoveFiles(ServerController controller)
|
||||||
{
|
{
|
||||||
var filename = "uploadtestfile.txt";
|
|
||||||
var fileContent = "content";
|
var fileContent = "content";
|
||||||
File.WriteAllText(filename, fileContent);
|
var uploadFormFileResult = Assert.IsType<RedirectToActionResult>(await controller.CreateFile(TestUtils.GetFormFile("uploadtestfile.txt", fileContent)));
|
||||||
|
|
||||||
var fileInfo = new FileInfo(filename);
|
|
||||||
var formFile = new FormFile(
|
|
||||||
new FileStream(filename, FileMode.OpenOrCreate),
|
|
||||||
0,
|
|
||||||
fileInfo.Length, fileInfo.Name, fileInfo.Name)
|
|
||||||
{
|
|
||||||
Headers = new HeaderDictionary()
|
|
||||||
};
|
|
||||||
formFile.ContentType = "text/plain";
|
|
||||||
formFile.ContentDisposition = $"form-data; name=\"file\"; filename=\"{fileInfo.Name}\"";
|
|
||||||
var uploadFormFileResult = Assert.IsType<RedirectToActionResult>(await controller.CreateFile(formFile));
|
|
||||||
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);
|
||||||
|
|||||||
65
BTCPayServer.Tests/TestUtils.cs
Normal file
65
BTCPayServer.Tests/TestUtils.cs
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.AspNetCore.Http;
|
||||||
|
using Microsoft.AspNetCore.Http.Internal;
|
||||||
|
using Xunit.Sdk;
|
||||||
|
|
||||||
|
namespace BTCPayServer.Tests
|
||||||
|
{
|
||||||
|
public static class TestUtils
|
||||||
|
{
|
||||||
|
public static FormFile GetFormFile(string filename, string content)
|
||||||
|
{
|
||||||
|
File.WriteAllText(filename, content);
|
||||||
|
|
||||||
|
var fileInfo = new FileInfo(filename);
|
||||||
|
FormFile formFile = new FormFile(
|
||||||
|
new FileStream(filename, FileMode.OpenOrCreate),
|
||||||
|
0,
|
||||||
|
fileInfo.Length, fileInfo.Name, fileInfo.Name)
|
||||||
|
{
|
||||||
|
Headers = new HeaderDictionary()
|
||||||
|
};
|
||||||
|
formFile.ContentType = "text/plain";
|
||||||
|
formFile.ContentDisposition = $"form-data; name=\"file\"; filename=\"{fileInfo.Name}\"";
|
||||||
|
return formFile;
|
||||||
|
}
|
||||||
|
public static void Eventually(Action act)
|
||||||
|
{
|
||||||
|
CancellationTokenSource cts = new CancellationTokenSource(20000);
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
act();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
catch (XunitException) when (!cts.Token.IsCancellationRequested)
|
||||||
|
{
|
||||||
|
cts.Token.WaitHandle.WaitOne(500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async Task EventuallyAsync(Func<Task> act)
|
||||||
|
{
|
||||||
|
CancellationTokenSource cts = new CancellationTokenSource(20000);
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await act();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
catch (XunitException) when (!cts.Token.IsCancellationRequested)
|
||||||
|
{
|
||||||
|
await Task.Delay(500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1586,19 +1586,7 @@ namespace BTCPayServer.Tests
|
|||||||
derivationVM = (DerivationSchemeViewModel)Assert.IsType<ViewResult>(controller.AddDerivationScheme(user.StoreId, "BTC")).Model;
|
derivationVM = (DerivationSchemeViewModel)Assert.IsType<ViewResult>(controller.AddDerivationScheme(user.StoreId, "BTC")).Model;
|
||||||
string filename = "wallet.json";
|
string filename = "wallet.json";
|
||||||
string content = "{\"keystore\": {\"ckcc_xpub\": \"xpub661MyMwAqRbcGVBsTGeNZN6QGVHmMHLdSA4FteGsRrEriu4pnVZMZWnruFFFXkMnyoBjyHndD3Qwcfz4MPzBUxjSevweNFQx7SAYZATtcDw\", \"xpub\": \"ypub6WWc2gWwHbdnAAyJDnR4SPL1phRh7REqrPBfZeizaQ1EmTshieRXJC3Z5YoU4wkcdKHEjQGkh6AYEzCQC1Kz3DNaWSwdc1pc8416hAjzqyD\", \"label\": \"Coldcard Import 0x60d1af8b\", \"ckcc_xfp\": 1624354699, \"type\": \"hardware\", \"hw_type\": \"coldcard\", \"derivation\": \"m/49'/0'/0'\"}, \"wallet_type\": \"standard\", \"use_encryption\": false, \"seed_version\": 17}";
|
string content = "{\"keystore\": {\"ckcc_xpub\": \"xpub661MyMwAqRbcGVBsTGeNZN6QGVHmMHLdSA4FteGsRrEriu4pnVZMZWnruFFFXkMnyoBjyHndD3Qwcfz4MPzBUxjSevweNFQx7SAYZATtcDw\", \"xpub\": \"ypub6WWc2gWwHbdnAAyJDnR4SPL1phRh7REqrPBfZeizaQ1EmTshieRXJC3Z5YoU4wkcdKHEjQGkh6AYEzCQC1Kz3DNaWSwdc1pc8416hAjzqyD\", \"label\": \"Coldcard Import 0x60d1af8b\", \"ckcc_xfp\": 1624354699, \"type\": \"hardware\", \"hw_type\": \"coldcard\", \"derivation\": \"m/49'/0'/0'\"}, \"wallet_type\": \"standard\", \"use_encryption\": false, \"seed_version\": 17}";
|
||||||
File.WriteAllText(filename, content);
|
derivationVM.ColdcardPublicFile = TestUtils.GetFormFile(filename, content);
|
||||||
|
|
||||||
var fileInfo = new FileInfo(filename);
|
|
||||||
var formFile = new FormFile(
|
|
||||||
new FileStream(filename, FileMode.OpenOrCreate),
|
|
||||||
0,
|
|
||||||
fileInfo.Length, fileInfo.Name, fileInfo.Name)
|
|
||||||
{
|
|
||||||
Headers = new HeaderDictionary()
|
|
||||||
};
|
|
||||||
formFile.ContentType = "text/plain";
|
|
||||||
formFile.ContentDisposition = $"form-data; name=\"file\"; filename=\"{fileInfo.Name}\"";
|
|
||||||
derivationVM.ColdcardPublicFile = formFile;
|
|
||||||
derivationVM = (DerivationSchemeViewModel)Assert.IsType<ViewResult>(controller.AddDerivationScheme(user.StoreId, derivationVM, "BTC").GetAwaiter().GetResult()).Model;
|
derivationVM = (DerivationSchemeViewModel)Assert.IsType<ViewResult>(controller.AddDerivationScheme(user.StoreId, derivationVM, "BTC").GetAwaiter().GetResult()).Model;
|
||||||
Assert.True(derivationVM.Confirmation);
|
Assert.True(derivationVM.Confirmation);
|
||||||
Assert.IsType<RedirectToActionResult>(controller.AddDerivationScheme(user.StoreId, derivationVM, "BTC").GetAwaiter().GetResult());
|
Assert.IsType<RedirectToActionResult>(controller.AddDerivationScheme(user.StoreId, derivationVM, "BTC").GetAwaiter().GetResult());
|
||||||
@@ -2780,42 +2768,5 @@ donation:
|
|||||||
var h = BitcoinAddress.Create(invoice.BitcoinAddress, Network.RegTest).ScriptPubKey.Hash.ToString();
|
var h = BitcoinAddress.Create(invoice.BitcoinAddress, Network.RegTest).ScriptPubKey.Hash.ToString();
|
||||||
return ctx.AddressInvoices.FirstOrDefault(i => i.InvoiceDataId == invoice.Id && i.GetAddress() == h) != null;
|
return ctx.AddressInvoices.FirstOrDefault(i => i.InvoiceDataId == invoice.Id && i.GetAddress() == h) != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class TestUtils
|
|
||||||
{
|
|
||||||
public static void Eventually(Action act)
|
|
||||||
{
|
|
||||||
CancellationTokenSource cts = new CancellationTokenSource(20000);
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
act();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
catch (XunitException) when (!cts.Token.IsCancellationRequested)
|
|
||||||
{
|
|
||||||
cts.Token.WaitHandle.WaitOne(500);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static async Task EventuallyAsync(Func<Task> act)
|
|
||||||
{
|
|
||||||
CancellationTokenSource cts = new CancellationTokenSource(20000);
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
await act();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
catch (XunitException) when (!cts.Token.IsCancellationRequested)
|
|
||||||
{
|
|
||||||
await Task.Delay(500);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user