@@ -14,6 +14,7 @@ extern crate bitcoin;
14
14
extern crate core_rpc as bitcoincore_rpc;
15
15
#[ macro_use]
16
16
extern crate lazy_static;
17
+ extern crate bitcoind;
17
18
extern crate log;
18
19
19
20
use bitcoincore_rpc:: core_rpc_json as bitcoincore_rpc_json;
@@ -34,6 +35,7 @@ use bitcoin::{
34
35
TxIn , TxOut , Txid ,
35
36
} ;
36
37
use bitcoincore_rpc_json:: { GetBlockTemplateModes , GetBlockTemplateRules , ScanTxOutRequest } ;
38
+ use bitcoind:: { BitcoinD , P2P } ;
37
39
38
40
lazy_static ! {
39
41
static ref SECP : secp256k1:: Secp256k1 <secp256k1:: All > = secp256k1:: Secp256k1 :: new( ) ;
@@ -108,25 +110,24 @@ fn sbtc<F: Into<f64>>(btc: F) -> SignedAmount {
108
110
SignedAmount :: from_btc ( btc. into ( ) ) . unwrap ( )
109
111
}
110
112
111
- fn get_rpc_url ( ) -> String {
112
- return std :: env :: var ( "RPC_URL" ) . expect ( "RPC_URL must be set" ) ;
113
- }
113
+ # [ test ]
114
+ fn integration_test ( ) {
115
+ log :: set_logger ( & LOGGER ) . map ( | ( ) | log :: set_max_level ( log :: LevelFilter :: max ( ) ) ) . unwrap ( ) ;
114
116
115
- fn get_auth ( ) -> bitcoincore_rpc:: Auth {
116
- if let Ok ( cookie) = std:: env:: var ( "RPC_COOKIE" ) {
117
- return Auth :: CookieFile ( cookie. into ( ) ) ;
118
- } else if let Ok ( user) = std:: env:: var ( "RPC_USER" ) {
119
- return Auth :: UserPass ( user, std:: env:: var ( "RPC_PASS" ) . unwrap_or_default ( ) ) ;
120
- } else {
121
- panic ! ( "Either RPC_COOKIE or RPC_USER + RPC_PASS must be set." ) ;
122
- } ;
123
- }
117
+ let mut conf = bitcoind:: Conf :: default ( ) ;
118
+ conf. args . push ( "-blockfilterindex=1" ) ;
119
+ conf. p2p = P2P :: Yes ;
120
+ let bitcoind =
121
+ bitcoind:: BitcoinD :: with_conf ( bitcoind:: downloaded_exe_path ( ) . unwrap ( ) , & conf) . unwrap ( ) ;
124
122
125
- fn main ( ) {
126
- log:: set_logger ( & LOGGER ) . map ( |( ) | log:: set_max_level ( log:: LevelFilter :: max ( ) ) ) . unwrap ( ) ;
123
+ let mut conf2 = bitcoind:: Conf :: default ( ) ;
124
+ conf2. p2p = bitcoind. p2p_connect ( true ) . unwrap ( ) ;
125
+ let _bitcoind2 =
126
+ bitcoind:: BitcoinD :: with_conf ( bitcoind:: downloaded_exe_path ( ) . unwrap ( ) , & conf2) . unwrap ( ) ;
127
127
128
- let rpc_url = format ! ( "{}/wallet/testwallet" , get_rpc_url( ) ) ;
129
- let cl = Client :: new ( & rpc_url, get_auth ( ) ) . unwrap ( ) ;
128
+ let rpc_url = bitcoind. rpc_url_with_wallet ( "testwallet" ) ;
129
+ let auth = Auth :: CookieFile ( bitcoind. params . cookie_file . clone ( ) ) ;
130
+ let cl = Client :: new ( & rpc_url, auth. clone ( ) ) . unwrap ( ) ;
130
131
131
132
test_get_network_info ( & cl) ;
132
133
unsafe { VERSION = cl. version ( ) . unwrap ( ) } ;
@@ -183,7 +184,7 @@ fn main() {
183
184
test_ping ( & cl) ;
184
185
test_get_peer_info ( & cl) ;
185
186
test_rescan_blockchain ( & cl) ;
186
- test_create_wallet ( & cl) ;
187
+ test_create_wallet ( & cl, & bitcoind ) ;
187
188
test_get_tx_out_set_info ( & cl) ;
188
189
test_get_chain_tips ( & cl) ;
189
190
test_get_net_totals ( & cl) ;
@@ -203,8 +204,8 @@ fn main() {
203
204
//TODO unload_wallet(&self, wallet: Option<&str>) -> Result<()> {
204
205
//TODO backup_wallet(&self, destination: Option<&str>) -> Result<()> {
205
206
206
- let rpc_url = format ! ( "{}/wallet/ testdescriptorwallet", get_rpc_url ( ) ) ;
207
- let desc_cl = Client :: new ( & rpc_url, get_auth ( ) ) . unwrap ( ) ;
207
+ let rpc_url = bitcoind . rpc_url_with_wallet ( " testdescriptorwallet") ;
208
+ let desc_cl = Client :: new ( & rpc_url, auth ) . unwrap ( ) ;
208
209
209
210
test_descriptor_wallet ( & desc_cl) ;
210
211
test_stop ( cl) ;
@@ -900,7 +901,7 @@ fn test_rescan_blockchain(cl: &Client) {
900
901
assert_eq ! ( stop, Some ( count - 1 ) ) ;
901
902
}
902
903
903
- fn test_create_wallet ( cl : & Client ) {
904
+ fn test_create_wallet ( cl : & Client , bitcoind : & BitcoinD ) {
904
905
let wallet_names = vec ! [ "alice" , "bob" , "carol" , "denise" , "emily" ] ;
905
906
906
907
struct WalletParams < ' a > {
@@ -979,8 +980,10 @@ fn test_create_wallet(cl: &Client) {
979
980
} ;
980
981
assert_eq ! ( result. warning, expected_warning) ;
981
982
982
- let wallet_client_url = format ! ( "{}{}{}" , get_rpc_url( ) , "/wallet/" , wallet_param. name) ;
983
- let wallet_client = Client :: new ( & wallet_client_url, get_auth ( ) ) . unwrap ( ) ;
983
+ let wallet_client_url = bitcoind. rpc_url_with_wallet ( wallet_param. name ) ;
984
+ let auth = Auth :: CookieFile ( bitcoind. params . cookie_file . clone ( ) ) ;
985
+
986
+ let wallet_client = Client :: new ( & wallet_client_url, auth) . unwrap ( ) ;
984
987
let wallet_info = wallet_client. get_wallet_info ( ) . unwrap ( ) ;
985
988
986
989
assert_eq ! ( wallet_info. wallet_name, wallet_param. name) ;
@@ -1006,7 +1009,7 @@ fn test_create_wallet(cl: &Client) {
1006
1009
wallet_list. retain ( |w| w != "testwallet" && w != "" ) ;
1007
1010
1008
1011
// Created wallets
1009
- assert ! ( wallet_list . iter( ) . zip ( wallet_names ) . all ( | ( a , b ) | a == b ) ) ;
1012
+ assert ! ( wallet_names . iter( ) . any ( |e| wallet_list . contains ( & e . to_string ( ) ) ) ) ;
1010
1013
}
1011
1014
1012
1015
fn test_get_tx_out_set_info ( cl : & Client ) {
0 commit comments