You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: bdk-ffi/src/tests/bitcoin.rs
+112-2Lines changed: 112 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,5 @@
1
1
usecrate::bitcoin::{Address,Network,Psbt};
2
+
use bdk_electrum::bdk_core::bitcoin::hex::DisplayHex;
2
3
3
4
#[test]
4
5
fntest_is_valid_for_network(){
@@ -357,8 +358,7 @@ fn test_to_address_data() {
357
358
358
359
#[test]
359
360
fntest_psbt_spend_utxo(){
360
-
let psbt = Psbt::new("cHNidP8BAH0CAAAAAXHl8cCbj84lm1v42e54IGI6CQru/nBXwrPE3q2fiGO4AAAAAAD9////Ar4DAAAAAAAAIgAgYw/rnGd4Bifj8s7TaMgR2tal/lq+L1jVv2Sqd1mxMbJEEQAAAAAAABYAFNVpt8vHYUPZNSF6Hu07uP1YeHts4QsAAAABALUCAAAAAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////BAJ+CwD/////AkAlAAAAAAAAIgAgQyrnn86L9D3vDiH959KJbPudDHc/bp6nI9E5EBLQD1YAAAAAAAAAACZqJKohqe3i9hw/cdHe/T+pmd+jaVN1XGkGiXmZYrSL69g2l06M+QEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQErQCUAAAAAAAAiACBDKuefzov0Pe8OIf3n0ols+50Mdz9unqcj0TkQEtAPViICAy4V+d/Qff71zzPXxK4FWG5x+wL/Ku93y/LG5p+0rI2xSDBFAiEA9b0OdASAs0P2uhQinjN7QGP5jX/b32LcShBmny8U0RUCIBebxvCDbpchCjqLAhOMjydT80DAzokaalGzV7XVTsbiASICA1tMY+46EgxIHU18bgHnUvAAlAkMq5LfwkpOGZ97sDKRRzBEAiBpmlZwJocNEiKLxexEX0Par6UgG8a89AklTG3/z9AHlAIgQH/ybCvfKJzr2dq0+IyueDebm7FamKIJdzBYWMXRr/wBIgID+aCzK9nclwhbbN7KbIVGUQGLWZsjcaqWPxk9gFeG+FxIMEUCIQDRPBzb0i9vaUmxCcs1yz8uq4tq1mdDAYvvYn3isKEhFAIgfmeTLLzMo0mmQ23ooMnyx6iPceE8xV5CvARuJsd88tEBAQVpUiEDW0xj7joSDEgdTXxuAedS8ACUCQyrkt/CSk4Zn3uwMpEhAy4V+d/Qff71zzPXxK4FWG5x+wL/Ku93y/LG5p+0rI2xIQP5oLMr2dyXCFts3spshUZRAYtZmyNxqpY/GT2AV4b4XFOuIgYDLhX539B9/vXPM9fErgVYbnH7Av8q73fL8sbmn7SsjbEYCapBE1QAAIABAACAAAAAgAAAAAAAAAAAIgYDW0xj7joSDEgdTXxuAedS8ACUCQyrkt/CSk4Zn3uwMpEY2bvrelQAAIABAACAAAAAgAAAAAAAAAAAIgYD+aCzK9nclwhbbN7KbIVGUQGLWZsjcaqWPxk9gFeG+FwYAKVFVFQAAIABAACAAAAAgAAAAAAAAAAAAAEBaVIhA7cr8fTHOPtE+t0zM3iWJvpfPvsNaVyQ0Sar6nIe9tQXIQMm7k7OY+q+Lsge3bVACuSa9r19Js+lNuTtEhehWkpe1iECelHmzmhzDsQTDnApIcnWRz3oFR68UX1ag8jfk/SKuopTriICAnpR5s5ocw7EEw5wKSHJ1kc96BUevFF9WoPI35P0irqKGAClRVRUAACAAQAAgAAAAIABAAAAAAAAACICAybuTs5j6r4uyB7dtUAK5Jr2vX0mz6U25O0SF6FaSl7WGAmqQRNUAACAAQAAgAAAAIABAAAAAAAAACICA7cr8fTHOPtE+t0zM3iWJvpfPvsNaVyQ0Sar6nIe9tQXGNm763pUAACAAQAAgAAAAIABAAAAAAAAAAAA".to_string())
361
-
.unwrap();
361
+
let psbt = sample_psbt();
362
362
let psbt_utxo = psbt.spend_utxo(0);
363
363
364
364
println!("Psbt utxo: {:?}", psbt_utxo);
@@ -369,3 +369,113 @@ fn test_psbt_spend_utxo() {
369
369
"Psbt utxo does not match the expected value"
370
370
);
371
371
}
372
+
373
+
#[test]
374
+
fntest_psbt_input_length(){
375
+
let psbt = sample_psbt2();
376
+
let psbt_inputs = psbt.input();
377
+
println!("Psbt Input: {:?}", psbt_inputs);
378
+
379
+
let unknown = &psbt_inputs[0].unknown;
380
+
println!("Unknown field in Psbt Input: {:?}", unknown);
381
+
assert_eq!(psbt_inputs.len(),1);
382
+
}
383
+
384
+
#[test]
385
+
fntest_psbt_input_partial_sigs(){
386
+
let psbt = sample_psbt();
387
+
let psbt_inputs = psbt.input();
388
+
println!("Psbt Input: {:?}", psbt_inputs);
389
+
assert_eq!(psbt_inputs.len(),1);
390
+
391
+
let psbt_input = &psbt_inputs[0];
392
+
393
+
let partial_sigs = &psbt_input.partial_sigs;
394
+
let signatures_count = partial_sigs.len();
395
+
assert_eq!(signatures_count,3,"There should be 3 partial signatures");
396
+
397
+
let public_key = "032e15f9dfd07dfef5cf33d7c4ae05586e71fb02ff2aef77cbf2c6e69fb4ac8db1";
398
+
let signature:Option<Vec<u8>> = partial_sigs.get(public_key).cloned();
399
+
println!("Signature for pubkey {}: {:?}", public_key, signature);
400
+
assert!(
401
+
signature.is_some(),
402
+
"Signature for the given pubkey should be present"
403
+
);
404
+
405
+
// Convert signature from bytes to hex string (Including last byte 0x01 for sighash type)
406
+
let signature_hex = DisplayHex::to_lower_hex_string(&signature.unwrap());
407
+
println!("Signature in hex: {}", signature_hex);
408
+
409
+
let expected_signature_hex = "3045022100f5bd0e740480b343f6ba14229e337b4063f98d7fdbdf62dc4a10669f2f14d1150220179bc6f0836e97210a3a8b02138c8f2753f340c0ce891a6a51b357b5d54ec6e201";
410
+
assert_eq!(
411
+
signature_hex, expected_signature_hex,
412
+
"Signature hex does not match the expected value"
413
+
);
414
+
}
415
+
416
+
#[test]
417
+
fntest_psbt_input_bip32_derivation(){
418
+
let psbt = sample_psbt();
419
+
let psbt_inputs = psbt.input();
420
+
assert_eq!(psbt_inputs.len(),1);
421
+
422
+
let psbt_input = &psbt_inputs[0];
423
+
let bip32_derivations = &psbt_input.bip32_derivation;
424
+
let derivations_count = bip32_derivations.len();
425
+
assert_eq!(derivations_count,3,"There should be 3 BIP32 derivations");
426
+
427
+
let public_key = "032e15f9dfd07dfef5cf33d7c4ae05586e71fb02ff2aef77cbf2c6e69fb4ac8db1";
428
+
let derivation = bip32_derivations.get(public_key);
429
+
println!(
430
+
"BIP32 Derivation for pubkey {}: {:?}",
431
+
public_key, derivation
432
+
);
433
+
assert!(
434
+
derivation.is_some(),
435
+
"BIP32 derivation for the given pubkey should be present"
436
+
);
437
+
438
+
let fingerprint = &derivation.unwrap().fingerprint;
439
+
let expected_fingerprint = "09aa4113";
440
+
assert_eq!(
441
+
fingerprint,&expected_fingerprint,
442
+
"Fingerprint does not match the expected value"
443
+
);
444
+
445
+
let derivation_path = &derivation.unwrap().path;
446
+
let expected_derivation_path = "84'/1'/0'/0/0";
447
+
assert_eq!(
448
+
derivation_path,&expected_derivation_path,
449
+
"Derivation path does not match the expected value"
450
+
);
451
+
}
452
+
453
+
#[test]
454
+
fntest_psbt_input_witness_script(){
455
+
let psbt = sample_psbt();
456
+
let psbt_inputs = psbt.input();
457
+
assert_eq!(psbt_inputs.len(),1);
458
+
459
+
let psbt_input = &psbt_inputs[0];
460
+
let witness_script = psbt_input
461
+
.witness_script
462
+
.as_ref()
463
+
.expect("Witness script should be present");
464
+
let byte_witness = witness_script.to_bytes();
465
+
let witness_hex = DisplayHex::to_lower_hex_string(&byte_witness);
466
+
let expected_witness_hex = "5221035b4c63ee3a120c481d4d7c6e01e752f00094090cab92dfc24a4e199f7bb0329121032e15f9dfd07dfef5cf33d7c4ae05586e71fb02ff2aef77cbf2c6e69fb4ac8db12103f9a0b32bd9dc97085b6cdeca6c854651018b599b2371aa963f193d805786f85c53ae";
467
+
assert_eq!(
468
+
witness_hex, expected_witness_hex,
469
+
"Witness script hex does not match the expected value"
0 commit comments