@@ -1230,6 +1230,49 @@ fn test_notifications_and_peer_connected_resets_cooldown() {
1230
1230
}
1231
1231
}
1232
1232
1233
+ macro_rules! assert_lsps5_reject {
1234
+ ( $client_handler: expr, $service_node: expr, $client_node: expr, $service_node_id: expr, $client_node_id: expr) => { {
1235
+ let _ = $client_handler
1236
+ . set_webhook(
1237
+ $service_node_id,
1238
+ "App" . to_string( ) ,
1239
+ "https://example.org/webhook" . to_string( ) ,
1240
+ )
1241
+ . expect( "Request should send" ) ;
1242
+ let request = get_lsps_message!( $client_node, $service_node_id) ;
1243
+
1244
+ let result =
1245
+ $service_node. liquidity_manager. handle_custom_message( request, $client_node_id) ;
1246
+ assert!( result. is_err( ) , "Service should reject request without prior interaction" ) ;
1247
+
1248
+ assert!( $service_node. liquidity_manager. get_and_clear_pending_msg( ) . is_empty( ) ) ;
1249
+ } } ;
1250
+ }
1251
+
1252
+ macro_rules! assert_lsps5_accept {
1253
+ ( $client_handler: expr, $service_node: expr, $client_node: expr, $service_node_id: expr, $client_node_id: expr) => { {
1254
+ let _ = $client_handler
1255
+ . set_webhook(
1256
+ $service_node_id,
1257
+ "App" . to_string( ) ,
1258
+ "https://example.org/webhook" . to_string( ) ,
1259
+ )
1260
+ . expect( "Request should send" ) ;
1261
+ let request = get_lsps_message!( $client_node, $service_node_id) ;
1262
+
1263
+ let result =
1264
+ $service_node. liquidity_manager. handle_custom_message( request, $client_node_id) ;
1265
+ assert!( result. is_ok( ) , "Service should accept request after prior interaction" ) ;
1266
+ let _ = $service_node. liquidity_manager. next_event( ) . unwrap( ) ;
1267
+ let response = get_lsps_message!( $service_node, $client_node_id) ;
1268
+ $client_node
1269
+ . liquidity_manager
1270
+ . handle_custom_message( response, $service_node_id)
1271
+ . expect( "Client should handle response" ) ;
1272
+ let _ = $client_node. liquidity_manager. next_event( ) . unwrap( ) ;
1273
+ } } ;
1274
+ }
1275
+
1233
1276
#[ test]
1234
1277
fn webhook_update_affects_future_notifications ( ) {
1235
1278
let mock_time_provider = Arc :: new ( MockTimeProvider :: new ( 1000 ) ) ;
@@ -1306,51 +1349,26 @@ fn dos_protection() {
1306
1349
1307
1350
let client_handler = client_node. liquidity_manager . lsps5_client_handler ( ) . unwrap ( ) ;
1308
1351
1309
- let assert_reject = || -> ( ) {
1310
- let _ = client_handler
1311
- . set_webhook (
1312
- service_node_id,
1313
- "App" . to_string ( ) ,
1314
- "https://example.org/webhook" . to_string ( ) ,
1315
- )
1316
- . expect ( "Request should send" ) ;
1317
- let request = get_lsps_message ! ( client_node, service_node_id) ;
1318
-
1319
- let result = service_node. liquidity_manager . handle_custom_message ( request, client_node_id) ;
1320
- assert ! ( result. is_err( ) , "Service should reject request without prior interaction" ) ;
1321
-
1322
- assert ! ( service_node. liquidity_manager. get_and_clear_pending_msg( ) . is_empty( ) ) ;
1323
- } ;
1324
-
1325
- let assert_accept = || -> ( ) {
1326
- let _ = client_handler
1327
- . set_webhook (
1328
- service_node_id,
1329
- "App" . to_string ( ) ,
1330
- "https://example.org/webhook" . to_string ( ) ,
1331
- )
1332
- . expect ( "Request should send" ) ;
1333
- let request = get_lsps_message ! ( client_node, service_node_id) ;
1334
-
1335
- let result = service_node. liquidity_manager . handle_custom_message ( request, client_node_id) ;
1336
- assert ! ( result. is_ok( ) , "Service should accept request after prior interaction" ) ;
1337
- let _ = service_node. liquidity_manager . next_event ( ) . unwrap ( ) ;
1338
- let response = get_lsps_message ! ( service_node, client_node_id) ;
1339
- client_node
1340
- . liquidity_manager
1341
- . handle_custom_message ( response, service_node_id)
1342
- . expect ( "Client should handle response" ) ;
1343
- let _ = client_node. liquidity_manager . next_event ( ) . unwrap ( ) ;
1344
- } ;
1345
-
1346
1352
// no channel is open so far -> should reject
1347
- assert_reject ( ) ;
1353
+ assert_lsps5_reject ! (
1354
+ client_handler,
1355
+ service_node,
1356
+ client_node,
1357
+ service_node_id,
1358
+ client_node_id
1359
+ ) ;
1348
1360
1349
1361
let ( _, _, _, channel_id, funding_tx) =
1350
1362
create_chan_between_nodes ( & service_node. inner , & client_node. inner ) ;
1351
1363
1352
1364
// now that a channel is open, should accept
1353
- assert_accept ( ) ;
1365
+ assert_lsps5_accept ! (
1366
+ client_handler,
1367
+ service_node,
1368
+ client_node,
1369
+ service_node_id,
1370
+ client_node_id
1371
+ ) ;
1354
1372
1355
1373
close_channel ( & service_node. inner , & client_node. inner , & channel_id, funding_tx, true ) ;
1356
1374
let node_a_reason = ClosureReason :: CounterpartyInitiatedCooperativeClosure ;
@@ -1359,7 +1377,13 @@ fn dos_protection() {
1359
1377
check_closed_event ! ( client_node. inner, 1 , node_b_reason, [ service_node_id] , 100000 ) ;
1360
1378
1361
1379
// channel is now closed again -> should reject
1362
- assert_reject ( ) ;
1380
+ assert_lsps5_reject ! (
1381
+ client_handler,
1382
+ service_node,
1383
+ client_node,
1384
+ service_node_id,
1385
+ client_node_id
1386
+ ) ;
1363
1387
}
1364
1388
1365
1389
#[ test]
@@ -1370,20 +1394,28 @@ fn lsps2_state_allows_lsps5_request() {
1370
1394
let nodes = create_network ( 2 , & node_cfgs, & node_chanmgrs) ;
1371
1395
1372
1396
let ( lsps_nodes, _) = lsps5_lsps2_test_setup ( nodes, Arc :: new ( DefaultTimeProvider ) ) ;
1373
- establish_lsps2_prior_interaction ( & lsps_nodes) ;
1374
1397
1375
- let LSPSNodes { service_node , client_node } = lsps_nodes;
1376
- let service_node_id = service_node. inner . node . get_our_node_id ( ) ;
1377
- let client_node_id = client_node. inner . node . get_our_node_id ( ) ;
1398
+ let client_node_id = lsps_nodes. client_node . inner . node . get_our_node_id ( ) ;
1399
+ let service_node_id = lsps_nodes . service_node . inner . node . get_our_node_id ( ) ;
1400
+ let client_handler = lsps_nodes . client_node . liquidity_manager . lsps5_client_handler ( ) . unwrap ( ) ;
1378
1401
1379
- let lsps5_client = client_node. liquidity_manager . lsps5_client_handler ( ) . unwrap ( ) ;
1402
+ assert_lsps5_reject ! (
1403
+ client_handler,
1404
+ lsps_nodes. service_node,
1405
+ lsps_nodes. client_node,
1406
+ service_node_id,
1407
+ client_node_id
1408
+ ) ;
1380
1409
1381
- let _ = lsps5_client
1382
- . set_webhook ( service_node_id, "App" . to_string ( ) , "https://example.org/webhook" . to_string ( ) )
1383
- . expect ( "Request should send" ) ;
1384
- let request = get_lsps_message ! ( client_node, service_node_id) ;
1385
- let result = service_node. liquidity_manager . handle_custom_message ( request, client_node_id) ;
1386
- assert ! ( result. is_ok( ) , "Service should accept request based on LSPS2 state" ) ;
1410
+ establish_lsps2_prior_interaction ( & lsps_nodes) ;
1411
+
1412
+ assert_lsps5_accept ! (
1413
+ client_handler,
1414
+ lsps_nodes. service_node,
1415
+ lsps_nodes. client_node,
1416
+ service_node_id,
1417
+ client_node_id
1418
+ ) ;
1387
1419
}
1388
1420
1389
1421
fn establish_lsps2_prior_interaction ( lsps_nodes : & LSPSNodes ) {
0 commit comments