@@ -550,6 +550,43 @@ mod test {
550550 assert_eq ! ( expected, block_async) ;
551551 }
552552
553+ #[ cfg( all( feature = "blocking" , feature = "async" ) ) ]
554+ #[ tokio:: test]
555+ async fn test_that_errors_are_propagated ( ) {
556+ let ( blocking_client, async_client) = setup_clients ( ) . await ;
557+
558+ let address = BITCOIND
559+ . client
560+ . get_new_address ( Some ( "test" ) , Some ( AddressType :: Legacy ) )
561+ . unwrap ( )
562+ . assume_checked ( ) ;
563+ let txid = BITCOIND
564+ . client
565+ . send_to_address (
566+ & address,
567+ Amount :: from_sat ( 1000 ) ,
568+ None ,
569+ None ,
570+ None ,
571+ None ,
572+ None ,
573+ None ,
574+ )
575+ . unwrap ( ) ;
576+ let _miner = MINER . lock ( ) . await ;
577+ generate_blocks_and_wait ( 1 ) ;
578+
579+ let tx = blocking_client. get_tx ( & txid) . unwrap ( ) ;
580+ let async_res = async_client. broadcast ( & tx. as_ref ( ) . unwrap ( ) ) . await ;
581+ let blocking_res = blocking_client. broadcast ( & tx. as_ref ( ) . unwrap ( ) ) ;
582+ println ! ( "{:?}" , async_res) ;
583+ println ! ( "{:?}" , blocking_res) ;
584+ assert ! ( async_res. is_err( ) ) ;
585+ assert_eq ! ( async_res. unwrap_err( ) . to_string( ) , "HttpResponse { status: 400, message: \" sendrawtransaction RPC error: {\\ \" code\\ \" :-27,\\ \" message\\ \" :\\ \" Transaction already in block chain\\ \" }\" }" ) ;
586+ assert ! ( blocking_res. is_err( ) ) ;
587+ assert_eq ! ( blocking_res. unwrap_err( ) . to_string( ) , "HttpResponse { status: 400, message: \" sendrawtransaction RPC error: {\\ \" code\\ \" :-27,\\ \" message\\ \" :\\ \" Transaction already in block chain\\ \" }\" }" ) ;
588+ }
589+
553590 #[ cfg( all( feature = "blocking" , feature = "async" ) ) ]
554591 #[ tokio:: test]
555592 async fn test_get_block_by_hash_not_existing ( ) {
0 commit comments