spark_sdk/spark_test_utils/
mod.rs1#![cfg(feature = "integration-tests")]
2
3use std::str::FromStr;
4
5use crate::error::SparkSdkError;
6use crate::signer::default_signer::DefaultSigner;
7use crate::signer::traits::SparkSigner;
8use crate::SparkNetwork;
9use crate::SparkSdk;
10use bitcoin::Transaction;
11use rand::rngs::OsRng;
12
13mod faucet;
14
15pub use faucet::Faucet;
16
17pub async fn init_self_signer_wallet_with_random_seed(
18 network: SparkNetwork,
19) -> Result<(SparkSdk, Vec<u8>), SparkSdkError> {
20 let mut rng = OsRng;
21 let master_seed = bitcoin::secp256k1::SecretKey::new(&mut rng);
22
23 let signer = DefaultSigner::from_master_seed(&master_seed.secret_bytes().to_vec(), network)
24 .await
25 .unwrap();
26
27 let sdk = SparkSdk::new(SparkNetwork::Regtest, signer).await?;
28
29 Ok((sdk, master_seed.secret_bytes().to_vec()))
30}
31
32pub async fn init_self_signer_wallet_with_seed(
33 network: SparkNetwork,
34 seed: Vec<u8>,
35) -> Result<SparkSdk, SparkSdkError> {
36 let signer = DefaultSigner::from_master_seed(&seed, network).await?;
37 let sdk = SparkSdk::new(network, signer).await?;
38 Ok(sdk)
39}
40
41pub fn create_test_p2tr_transaction(
59 txid: &str,
60 vout: u32,
61 address: &str,
62 amount: u64,
63 network: bitcoin::Network,
64 _include_change: bool,
65) -> Transaction {
66 let prev_txid = bitcoin::Txid::from_str(txid).unwrap();
67 let outpoint = bitcoin::OutPoint::new(prev_txid, vout);
68 let addr = bitcoin::Address::from_str(address).unwrap();
69 let addr = addr.require_network(network).unwrap();
70
71 let fee = 200; let output_amount = amount.saturating_sub(fee);
75
76 Transaction {
77 version: bitcoin::transaction::Version::TWO,
78 lock_time: bitcoin::absolute::LockTime::ZERO,
79 input: vec![bitcoin::TxIn {
80 previous_output: outpoint,
81 script_sig: bitcoin::ScriptBuf::new(),
82 sequence: bitcoin::Sequence::MAX,
83 witness: bitcoin::Witness::new(),
84 }],
85 output: vec![bitcoin::TxOut {
86 value: bitcoin::Amount::from_sat(output_amount),
87 script_pubkey: addr.script_pubkey(),
88 }],
89 }
90}