Skip to content

Commit e04a96d

Browse files
committed
lsps2: Test payment lease state
Pin the direct lease serialization format and ensure fixed-amount and variable-amount caches remain isolated. These focused checks complement the end-to-end BOLT11 and BOLT12 coverage. Co-Authored-By: HAL 9000
1 parent b216f3a commit e04a96d

1 file changed

Lines changed: 27 additions & 0 deletions

File tree

src/liquidity/client/lsps2/state.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -654,6 +654,33 @@ mod tests {
654654
);
655655
}
656656

657+
#[test]
658+
fn payment_leases_roundtrip() {
659+
let lease =
660+
lease(2, 48, 100, Some(1_000), now_secs() + MIN_CACHED_LEASE_REMAINING_SECS + 60);
661+
662+
let encoded = lease.encode();
663+
let decoded = PaymentLease::read(&mut &encoded[..]).unwrap();
664+
665+
assert_eq!(decoded, lease);
666+
}
667+
668+
#[test]
669+
fn fixed_and_variable_lease_pools_are_isolated() {
670+
let valid_until = now_secs() + MIN_CACHED_LEASE_REMAINING_SECS + 60;
671+
let fixed = lease(2, 49, 100, Some(1_000), valid_until);
672+
let variable = lease(3, 50, 50, None, valid_until);
673+
let available_lsps = [fixed.id.lsp_node_id, variable.id.lsp_node_id];
674+
let mut state = LSPS2LeaseState::from_leases(vec![fixed.clone(), variable.clone()]);
675+
676+
let (selected_fixed, _) = state.fixed_amount(1_000, None, 1, &available_lsps).unwrap();
677+
assert_eq!(selected_fixed.id, fixed.id);
678+
assert!(state.fixed_amount(1_000, None, 1, &available_lsps).is_none());
679+
680+
let (selected_variable, _) = state.variable_amount(None, None, 1, &available_lsps).unwrap();
681+
assert_eq!(selected_variable.id, variable.id);
682+
}
683+
657684
#[test]
658685
fn prunes_leases_close_to_expiry() {
659686
let lease = lease(2, 43, 1, Some(1_000), now_secs() + MIN_CACHED_LEASE_REMAINING_SECS - 1);

0 commit comments

Comments
 (0)