Skip to content

Commit d00edb5

Browse files
Add wallet management
1 parent 50d3a23 commit d00edb5

20 files changed

Lines changed: 2049 additions & 379 deletions

BTCPayServer.Plugins.IntegrationTests/BTCPayServer.Plugins.IntegrationTests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<ItemGroup>
1111
<PackageReference Include="Docker.DotNet" Version="3.125.15" />
1212
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
13-
<PackageReference Include="Microsoft.Playwright" Version="1.52.0" />
13+
<PackageReference Include="Microsoft.Playwright" Version="1.57.0" />
1414
<PackageReference Include="xunit" Version="2.9.3" />
1515
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.1">
1616
<PrivateAssets>all</PrivateAssets>

BTCPayServer.Plugins.IntegrationTests/Monero/IntegrationTestUtils.cs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,27 @@ public static class IntegrationTestUtils
1616
.Create(builder => builder.AddConsole())
1717
.CreateLogger("IntegrationTestUtils");
1818

19-
public static async Task CleanUpAsync(PlaywrightTester playwrightTester)
19+
public static async Task CleanUpAsync(PlaywrightTester playwrightTester, bool deleteWalletFiles = true)
2020
{
21-
MoneroRPCProvider moneroRpcProvider = playwrightTester.Server.PayTester.GetService<MoneroRPCProvider>();
22-
if (moneroRpcProvider.IsAvailable("XMR"))
23-
{
24-
await moneroRpcProvider.CloseWallet("XMR");
25-
}
21+
var moneroRpcProvider = playwrightTester.Server.PayTester.GetService<MoneroRPCProvider>();
22+
await moneroRpcProvider.CloseWallet("XMR");
2623

2724
if (playwrightTester.Server.PayTester.InContainer)
2825
{
29-
moneroRpcProvider.DeleteWallet();
26+
if (deleteWalletFiles)
27+
{
28+
moneroRpcProvider.DeleteAllWallets();
29+
}
3030
await DropDatabaseAsync(
3131
"btcpayserver",
3232
"Host=postgres;Port=5432;Username=postgres;Database=postgres");
3333
}
3434
else
3535
{
36-
await RemoveWalletFromLocalDocker();
36+
if (deleteWalletFiles)
37+
{
38+
await RemoveWalletFromLocalDocker();
39+
}
3740
await DropDatabaseAsync(
3841
"btcpayserver",
3942
"Host=localhost;Port=39372;Username=postgres;Database=postgres");

BTCPayServer.Plugins.IntegrationTests/Monero/MoneroPluginIntegrationTest.cs

Lines changed: 507 additions & 130 deletions
Large diffs are not rendered by default.
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
using System;
2+
using System.Collections.Generic;
3+
4+
namespace BTCPayServer.Plugins.Monero.Configuration
5+
{
6+
public class MoneroWalletState
7+
{
8+
public string ActiveWalletAddress { get; set; }
9+
10+
public string ActiveWalletName => GetActiveRecord()?.Name;
11+
12+
//TODO: Deprecate password functionality. Maintaining for backward compatibility.
13+
public string ActiveWalletPassword => GetActiveRecord()?.Password ?? "";
14+
15+
public DateTimeOffset? LastActivatedAt { get; set; }
16+
17+
public bool IsInitialized => !string.IsNullOrEmpty(ActiveWalletAddress);
18+
19+
public bool IsConnected { get; set; }
20+
21+
public bool PasswordFileMigrationComplete { get; set; }
22+
23+
public Dictionary<string, WalletRecord> Wallets { get; set; } = [];
24+
25+
private WalletRecord GetActiveRecord()
26+
{
27+
if (string.IsNullOrEmpty(ActiveWalletAddress))
28+
{
29+
return null;
30+
}
31+
32+
if (Wallets != null && Wallets.TryGetValue(ActiveWalletAddress, out var record))
33+
{
34+
return record;
35+
}
36+
37+
return null;
38+
}
39+
40+
public class WalletRecord
41+
{
42+
public string Name { get; set; }
43+
public string Password { get; set; }
44+
}
45+
}
46+
}

0 commit comments

Comments
 (0)