"wsh(and_v(v:pk(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW),after(100000)))"
}
+/// `wsh` descriptor with policy `and(pk(A),after(1_734_230_218))`
+// the parameter passed to miniscript fragment `after` has to equal or greater than 500_000_000
+// in order to use a lock based on unix time
+pub fn get_test_single_sig_cltv_timestamp() -> &'static str {
+ "wsh(and_v(v:pk(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW),after(1734230218)))"
+}
+
/// taproot single key descriptor
pub fn get_test_tr_single_sig() -> &'static str {
"tr(cNJmN3fH9DDbDt131fQNkVakkpzawJBSeybCUNmP1BovpmGQ45xG)"
assert_eq!(psbt.unsigned_tx.lock_time.to_consensus_u32(), 100_000);
}
+#[test]
+fn test_create_tx_locktime_cltv_timestamp() {
+ let (mut wallet, _) = get_funded_wallet_single(get_test_single_sig_cltv_timestamp());
+ let addr = wallet.next_unused_address(KeychainKind::External);
+ let mut builder = wallet.build_tx();
+ builder.add_recipient(addr.script_pubkey(), Amount::from_sat(25_000));
+ let mut psbt = builder.finish().unwrap();
+
+ assert_eq!(psbt.unsigned_tx.lock_time.to_consensus_u32(), 1_734_230_218);
+
+ let finalized = wallet.sign(&mut psbt, SignOptions::default()).unwrap();
+
+ assert!(finalized);
+}
+
#[test]
fn test_create_tx_custom_locktime() {
let (mut wallet, _) = get_funded_wallet_wpkh();