1- using System . Diagnostics ;
2-
1+ using BTCPayServer . Plugins . Monero . RPC . Models ;
32using BTCPayServer . Plugins . Monero . Services ;
43using BTCPayServer . Rating ;
54using BTCPayServer . Services . Rates ;
6- using BTCPayServer . Tests ;
75using BTCPayServer . Tests . Mocks ;
86
97using Xunit ;
@@ -14,7 +12,7 @@ namespace BTCPayServer.Plugins.IntegrationTests.Monero;
1412public class MoneroPluginIntegrationTest ( ITestOutputHelper helper ) : MoneroAndBitcoinIntegrationTestBase ( helper )
1513{
1614 [ Fact ]
17- public async Task EnableMoneroPluginSuccessfully ( )
15+ public async Task ShouldEnableMoneroPluginSuccessfully ( )
1816 {
1917 await using var s = CreatePlaywrightTester ( ) ;
2018 await s . StartAsync ( ) ;
@@ -104,7 +102,7 @@ await s.Page.Locator("input#PrivateViewKey")
104102 await s . Page . SelectOptionAsync ( "#SettlementConfirmationThresholdChoice" , "3" ) ;
105103 await s . Page . ClickAsync ( "#SaveButton" ) ;
106104
107- await CleanUp ( s ) ;
105+ await IntegrationTestUtils . CleanUpAsync ( s ) ;
108106 }
109107
110108 [ Fact ]
@@ -129,64 +127,41 @@ await s.Page.Locator("input#PrivateViewKey")
129127
130128 Assert . Equal ( "Could not generate view wallet from keys: Failed to parse public address" , errorText ) ;
131129
132- await CleanUp ( s ) ;
130+ await IntegrationTestUtils . CleanUpAsync ( s ) ;
133131 }
134132
135- private static async Task CleanUp ( PlaywrightTester playwrightTester )
133+ [ Fact ]
134+ public async Task ShouldFailWhenWalletFileAlreadyExists ( )
136135 {
137- MoneroRPCProvider moneroRpcProvider = playwrightTester . Server . PayTester . GetService < MoneroRPCProvider > ( ) ;
138- if ( moneroRpcProvider . IsAvailable ( "XMR" ) )
139- {
140- await moneroRpcProvider . CloseWallet ( "XMR" ) ;
141- await moneroRpcProvider . UpdateSummary ( "XMR" ) ;
142- }
136+ await using var s = CreatePlaywrightTester ( ) ;
137+ await s . StartAsync ( ) ;
143138
144- if ( playwrightTester . Server . PayTester . InContainer )
145- {
146- moneroRpcProvider . DeleteWallet ( ) ;
147- }
148- else
139+ MoneroRPCProvider moneroRpcProvider = s . Server . PayTester . GetService < MoneroRPCProvider > ( ) ;
140+ await moneroRpcProvider . WalletRpcClients [ "XMR" ] . SendCommandAsync < GenerateFromKeysRequest , GenerateFromKeysResponse > ( "generate_from_keys" , new GenerateFromKeysRequest
149141 {
150- await RemoveWalletFromLocalDocker ( ) ;
151- }
152- }
142+ PrimaryAddress = "43Pnj6ZKGFTJhaLhiecSFfLfr64KPJZw7MyGH73T6PTDekBBvsTAaWEUSM4bmJqDuYLizhA13jQkMRPpz9VXBCBqQQb6y5L" ,
143+ PrivateViewKey = "1bfa03b0c78aa6bc8292cf160ec9875657d61e889c41d0ebe5c54fd3a2c4b40e" ,
144+ WalletFileName = "view_wallet" ,
145+ Password = ""
146+ } ) ;
147+ await moneroRpcProvider . CloseWallet ( "XMR" ) ;
153148
154- static async Task RemoveWalletFromLocalDocker ( )
155- {
156- try
157- {
158- var removeWalletFromDocker = new ProcessStartInfo
159- {
160- FileName = "docker" ,
161- Arguments = "exec xmr_wallet sh -c \" rm -rf /wallet/*\" " ,
162- RedirectStandardOutput = true ,
163- RedirectStandardError = true
164- } ;
165-
166- using var process = Process . Start ( removeWalletFromDocker ) ;
167- if ( process is null )
168- {
169- return ;
170- }
171-
172- var stdout = await process . StandardOutput . ReadToEndAsync ( ) ;
173- var stderr = await process . StandardError . ReadToEndAsync ( ) ;
174-
175- await process . WaitForExitAsync ( ) ;
176-
177- if ( ! string . IsNullOrWhiteSpace ( stdout ) )
178- {
179- Console . WriteLine ( stdout ) ;
180- }
181-
182- if ( ! string . IsNullOrWhiteSpace ( stderr ) )
183- {
184- Console . WriteLine ( stderr ) ;
185- }
186- }
187- catch ( Exception ex )
188- {
189- Console . WriteLine ( $ "Cleanup failed: { ex } ") ;
190- }
149+ await s . RegisterNewUser ( true ) ;
150+ await s . CreateNewStore ( ) ;
151+ await s . Page . Locator ( "a.nav-link[href*='monerolike/XMR']" ) . ClickAsync ( ) ;
152+ await s . Page . Locator ( "input#PrimaryAddress" )
153+ . FillAsync ( "43Pnj6ZKGFTJhaLhiecSFfLfr64KPJZw7MyGH73T6PTDekBBvsTAaWEUSM4bmJqDuYLizhA13jQkMRPpz9VXBCBqQQb6y5L" ) ;
154+ await s . Page . Locator ( "input#PrivateViewKey" )
155+ . FillAsync ( "1bfa03b0c78aa6bc8292cf160ec9875657d61e889c41d0ebe5c54fd3a2c4b40e" ) ;
156+ await s . Page . Locator ( "input#RestoreHeight" ) . FillAsync ( "0" ) ;
157+ await s . Page . Locator ( "input#WalletPassword" ) . FillAsync ( "pass123" ) ;
158+ await s . Page . ClickAsync ( "button[name='command'][value='set-wallet-details']" ) ;
159+ var errorText = await s . Page
160+ . Locator ( "div.validation-summary-errors li" )
161+ . InnerTextAsync ( ) ;
162+
163+ Assert . Equal ( "Could not generate view wallet from keys: Wallet already exists." , errorText ) ;
164+
165+ await IntegrationTestUtils . CleanUpAsync ( s ) ;
191166 }
192167}
0 commit comments