Skip to content

Commit 48f4bcc

Browse files
committed
Add test case for invalid_token_provided flow
We test the just-added API. Co-authored by Claude AI
1 parent 907cba3 commit 48f4bcc

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed

lightning-liquidity/tests/lsps1_integration_tests.rs

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -501,3 +501,99 @@ fn lsps1_service_handler_persistence_across_restarts() {
501501
}
502502
}
503503
}
504+
505+
#[test]
506+
fn lsps1_invalid_token_error() {
507+
let chanmon_cfgs = create_chanmon_cfgs(2);
508+
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
509+
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
510+
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
511+
512+
let supported_options = LSPS1Options {
513+
min_required_channel_confirmations: 0,
514+
min_funding_confirms_within_blocks: 6,
515+
supports_zero_channel_reserve: true,
516+
max_channel_expiry_blocks: 144,
517+
min_initial_client_balance_sat: 10_000_000,
518+
max_initial_client_balance_sat: 100_000_000,
519+
min_initial_lsp_balance_sat: 100_000,
520+
max_initial_lsp_balance_sat: 100_000_000,
521+
min_channel_balance_sat: 100_000,
522+
max_channel_balance_sat: 100_000_000,
523+
};
524+
525+
let LSPSNodes { service_node, client_node } =
526+
setup_test_lsps1_nodes(nodes, supported_options.clone());
527+
let service_node_id = service_node.inner.node.get_our_node_id();
528+
let client_node_id = client_node.inner.node.get_our_node_id();
529+
let client_handler = client_node.liquidity_manager.lsps1_client_handler().unwrap();
530+
let service_handler = service_node.liquidity_manager.lsps1_service_handler().unwrap();
531+
532+
// Create an order with an invalid token
533+
let order_params = LSPS1OrderParams {
534+
lsp_balance_sat: 100_000,
535+
client_balance_sat: 10_000_000,
536+
required_channel_confirmations: 0,
537+
funding_confirms_within_blocks: 6,
538+
channel_expiry_blocks: 144,
539+
token: Some("invalid_token".to_string()),
540+
announce_channel: true,
541+
};
542+
543+
let refund_onchain_address =
544+
Address::from_str("bc1p5uvtaxzkjwvey2tfy49k5vtqfpjmrgm09cvs88ezyy8h2zv7jhas9tu4yr")
545+
.unwrap()
546+
.assume_checked();
547+
let create_order_id = client_handler.create_order(
548+
&service_node_id,
549+
order_params.clone(),
550+
Some(refund_onchain_address),
551+
);
552+
let create_order = get_lsps_message!(client_node, service_node_id);
553+
554+
// Service receives the create_order request
555+
service_node.liquidity_manager.handle_custom_message(create_order, client_node_id).unwrap();
556+
557+
// Service emits RequestForPaymentDetails event
558+
let request_for_payment_event = service_node.liquidity_manager.next_event().unwrap();
559+
let request_id =
560+
if let LiquidityEvent::LSPS1Service(LSPS1ServiceEvent::RequestForPaymentDetails {
561+
request_id,
562+
counterparty_node_id,
563+
order,
564+
}) = request_for_payment_event
565+
{
566+
assert_eq!(counterparty_node_id, client_node_id);
567+
assert_eq!(order, order_params);
568+
request_id
569+
} else {
570+
panic!("Unexpected event: expected RequestForPaymentDetails");
571+
};
572+
573+
// Service rejects the order due to invalid token
574+
service_handler.invalid_token_provided(client_node_id, request_id).unwrap();
575+
576+
// Get the error response message
577+
let error_response = get_lsps_message!(service_node, client_node_id);
578+
579+
// Client receives the error response
580+
client_node
581+
.liquidity_manager
582+
.handle_custom_message(error_response, service_node_id)
583+
.unwrap_err();
584+
585+
// Client receives OrderRequestFailed event with error code 102
586+
let error_event = client_node.liquidity_manager.next_event().unwrap();
587+
if let LiquidityEvent::LSPS1Client(LSPS1ClientEvent::OrderRequestFailed {
588+
request_id,
589+
counterparty_node_id,
590+
error,
591+
}) = error_event
592+
{
593+
assert_eq!(request_id, create_order_id);
594+
assert_eq!(counterparty_node_id, service_node_id);
595+
assert_eq!(error.code, 102); // LSPS1_CREATE_ORDER_REQUEST_UNRECOGNIZED_OR_STALE_TOKEN_ERROR_CODE
596+
} else {
597+
panic!("Unexpected event: expected OrderRequestFailed");
598+
}
599+
}

0 commit comments

Comments
 (0)