Skip to content

Commit 016e3af

Browse files
authored
feat: get_raw_change_address (#38)
1 parent d6eb09d commit 016e3af

File tree

2 files changed

+16
-19
lines changed

2 files changed

+16
-19
lines changed

client/src/client.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010

1111
use std::collections::HashMap;
1212
use std::fs::File;
13-
use std::io::Read;
1413
use std::iter::FromIterator;
1514
use std::path::PathBuf;
15+
use std::str::FromStr;
1616
use std::{fmt, result};
1717

1818
use crate::dashcore;
@@ -21,7 +21,6 @@ use serde;
2121
use serde_json::{self, Value};
2222

2323
use crate::dashcore::address::NetworkUnchecked;
24-
use crate::dashcore::amount::serde::SerdeAmount;
2524
use crate::dashcore::{block, consensus, ScriptBuf};
2625
use dashcore::hashes::hex::FromHex;
2726
use dashcore::secp256k1::ecdsa::Signature;
@@ -411,6 +410,13 @@ pub trait RpcApi: Sized {
411410
self.call("getblockstats", &[height.into(), fields.into()])
412411
}
413412

413+
fn get_raw_change_address(&self) -> Result<Address<NetworkUnchecked>> {
414+
let data: String = self.call("getrawchangeaddress", &[])?;
415+
let address = Address::from_str(&data).map_err(|_e| Error::UnexpectedStructure)?;
416+
417+
Ok(address)
418+
}
419+
414420
fn get_raw_transaction(
415421
&self,
416422
txid: &dashcore::Txid,
@@ -670,11 +676,7 @@ pub trait RpcApi: Sized {
670676
let outs_converted = serde_json::Map::from_iter(
671677
outs.iter().map(|(k, v)| (k.clone(), serde_json::Value::from(v.to_dash()))),
672678
);
673-
let mut args = [
674-
into_json(utxos)?,
675-
into_json(outs_converted)?,
676-
opt_into_json(locktime)?,
677-
];
679+
let mut args = [into_json(utxos)?, into_json(outs_converted)?, opt_into_json(locktime)?];
678680
let defaults = [into_json(0i64)?, null()];
679681
self.call("createrawtransaction", handle_defaults(&mut args, &defaults))
680682
}

integration_test/src/main.rs

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -301,9 +301,9 @@ fn test_wallet_node_endpoints(wallet_client: &Client) {
301301
test_list_unspent(wallet_client);
302302
test_get_difficulty(wallet_client);
303303
test_get_connection_count(wallet_client);
304+
test_get_raw_change_address(wallet_client);
304305
test_get_raw_transaction(wallet_client);
305306
test_get_raw_mempool(wallet_client);
306-
test_get_transaction(wallet_client);
307307
test_list_transactions(wallet_client);
308308
test_list_since_block(wallet_client);
309309
test_get_tx_out(wallet_client);
@@ -637,6 +637,12 @@ fn test_get_connection_count(cl: &Client) {
637637
let _ = cl.get_connection_count().unwrap();
638638
}
639639

640+
641+
fn test_get_raw_change_address(cl: &Client) {
642+
let address = cl.get_raw_change_address().unwrap();
643+
assert!(address.is_valid_for_network(*NET));
644+
}
645+
640646
fn test_get_raw_transaction(cl: &Client) {
641647
let addr = cl.get_new_address(None).unwrap()
642648
.require_network(*NET).unwrap();
@@ -663,17 +669,6 @@ fn test_get_raw_mempool(cl: &Client) {
663669
let _ = cl.get_raw_mempool().unwrap();
664670
}
665671

666-
fn test_get_transaction(cl: &Client) {
667-
let txid =
668-
cl.send_to_address(&RANDOM_ADDRESS, btc(1), None, None, None, None, None, None, None, None).unwrap();
669-
let tx = cl.get_transaction(&txid, None).unwrap();
670-
assert_eq!(tx.amount, sbtc(-1.0));
671-
assert_eq!(tx.txid, Some(txid));
672-
673-
let fake = Txid::hash(&[1, 2]);
674-
assert!(cl.get_transaction(&fake, Some(true)).is_err());
675-
}
676-
677672
fn test_list_transactions(cl: &Client) {
678673
let _ = cl.list_transactions(None, None, None, None).unwrap();
679674
let _ = cl.list_transactions(Some("l"), None, None, None).unwrap();

0 commit comments

Comments
 (0)