From 7a127d02751b061f3ee92b3567edf14486b21fd2 Mon Sep 17 00:00:00 2001 From: Alekos Filini Date: Sun, 30 Aug 2020 20:34:51 +0200 Subject: [PATCH] [wallet] Add tests for `Wallet::sign()` --- src/wallet/mod.rs | 49 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/src/wallet/mod.rs b/src/wallet/mod.rs index 003b5ac2..ac1abcfd 100644 --- a/src/wallet/mod.rs +++ b/src/wallet/mod.rs @@ -2194,4 +2194,53 @@ mod test { assert_fee_rate!(psbt.extract_tx(), details.fees, FeeRate::from_sat_per_vb(5.0), @add_signature); } + + #[test] + fn test_sign_single_xprv() { + let (wallet, _, _) = get_funded_wallet("wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"); + let addr = wallet.get_new_address().unwrap(); + let (psbt, _) = wallet + .create_tx(TxBuilder::from_addressees(vec![(addr.clone(), 0)]).send_all()) + .unwrap(); + + let (signed_psbt, finalized) = wallet.sign(psbt, None).unwrap(); + assert_eq!(finalized, true); + + let extracted = signed_psbt.extract_tx(); + assert_eq!(extracted.input[0].witness.len(), 2); + } + + #[test] + fn test_sign_single_wif() { + let (wallet, _, _) = + get_funded_wallet("wpkh(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW)"); + let addr = wallet.get_new_address().unwrap(); + let (psbt, _) = wallet + .create_tx(TxBuilder::from_addressees(vec![(addr.clone(), 0)]).send_all()) + .unwrap(); + + let (signed_psbt, finalized) = wallet.sign(psbt, None).unwrap(); + assert_eq!(finalized, true); + + let extracted = signed_psbt.extract_tx(); + assert_eq!(extracted.input[0].witness.len(), 2); + } + + #[test] + fn test_sign_single_xprv_no_hd_keypaths() { + let (wallet, _, _) = get_funded_wallet("wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"); + let addr = wallet.get_new_address().unwrap(); + let (mut psbt, _) = wallet + .create_tx(TxBuilder::from_addressees(vec![(addr.clone(), 0)]).send_all()) + .unwrap(); + + psbt.inputs[0].hd_keypaths.clear(); + assert_eq!(psbt.inputs[0].hd_keypaths.len(), 0); + + let (signed_psbt, finalized) = wallet.sign(psbt, None).unwrap(); + assert_eq!(finalized, true); + + let extracted = signed_psbt.extract_tx(); + assert_eq!(extracted.input[0].witness.len(), 2); + } }