|
|
|
@ -13,6 +13,7 @@ use url::Url;
|
|
|
|
|
use uuid::Uuid;
|
|
|
|
|
use std::net::SocketAddr;
|
|
|
|
|
use std::sync::Arc;
|
|
|
|
|
use crate::fs::system_data_dir;
|
|
|
|
|
|
|
|
|
|
// See: https://moneroworld.com/
|
|
|
|
|
pub const DEFAULT_MONERO_DAEMON_ADDRESS: &str = "node.community.rino.io:18081";
|
|
|
|
@ -28,15 +29,9 @@ pub const DEFAULT_BITCOIN_CONFIRMATION_TARGET_TESTNET: usize = 1;
|
|
|
|
|
|
|
|
|
|
const DEFAULT_TOR_SOCKS5_PORT: &str = "9050";
|
|
|
|
|
|
|
|
|
|
#[derive(Debug,)]
|
|
|
|
|
pub struct Options {
|
|
|
|
|
pub env_config: env::Config,
|
|
|
|
|
pub debug: bool,
|
|
|
|
|
pub json: bool,
|
|
|
|
|
pub data_dir: PathBuf,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// Represents the result of parsing the command-line parameters.
|
|
|
|
|
|
|
|
|
|
#[derive(Debug)]
|
|
|
|
|
pub enum ParseResult {
|
|
|
|
|
/// The arguments we were invoked in.
|
|
|
|
|
Context(Arc<Context>, Box<Request>),
|
|
|
|
@ -683,21 +678,12 @@ mod tests {
|
|
|
|
|
use super::*;
|
|
|
|
|
use crate::tor::DEFAULT_SOCKS5_PORT;
|
|
|
|
|
|
|
|
|
|
const BINARY_NAME: &str = "swap";
|
|
|
|
|
|
|
|
|
|
const TESTNET: &str = "testnet";
|
|
|
|
|
const MAINNET: &str = "mainnet";
|
|
|
|
|
use crate::api::api_test::*;
|
|
|
|
|
|
|
|
|
|
const MONERO_STAGENET_ADDRESS: &str = "53gEuGZUhP9JMEBZoGaFNzhwEgiG7hwQdMCqFxiyiTeFPmkbt1mAoNybEUvYBKHcnrSgxnVWgZsTvRBaHBNXPa8tHiCU51a";
|
|
|
|
|
const BITCOIN_TESTNET_ADDRESS: &str = "tb1qr3em6k3gfnyl8r7q0v7t4tlnyxzgxma3lressv";
|
|
|
|
|
const MONERO_MAINNET_ADDRESS: &str = "44Ato7HveWidJYUAVw5QffEcEtSH1DwzSP3FPPkHxNAS4LX9CqgucphTisH978FLHE34YNEx7FcbBfQLQUU8m3NUC4VqsRa";
|
|
|
|
|
const BITCOIN_MAINNET_ADDRESS: &str = "bc1qe4epnfklcaa0mun26yz5g8k24em5u9f92hy325";
|
|
|
|
|
const MULTI_ADDRESS: &str =
|
|
|
|
|
"/ip4/127.0.0.1/tcp/9939/p2p/12D3KooWCdMKjesXMJz1SiZ7HgotrxuqhQJbP5sgBm2BwP1cqThi";
|
|
|
|
|
const SWAP_ID: &str = "ea030832-3be9-454f-bb98-5ea9a788406b";
|
|
|
|
|
const BINARY_NAME: &str = "swap";
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn given_buy_xmr_on_mainnet_then_defaults_to_mainnet() {
|
|
|
|
|
#[tokio::test]
|
|
|
|
|
async fn given_buy_xmr_on_mainnet_then_defaults_to_mainnet() {
|
|
|
|
|
let raw_ars = vec![
|
|
|
|
|
BINARY_NAME,
|
|
|
|
|
"buy-xmr",
|
|
|
|
@ -709,15 +695,24 @@ mod tests {
|
|
|
|
|
MULTI_ADDRESS,
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
let expected_args =
|
|
|
|
|
ParseResult::Arguments(Arguments::buy_xmr_mainnet_defaults().into_boxed());
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).await.unwrap();
|
|
|
|
|
let (is_testnet, debug, json) = (false, false, false);
|
|
|
|
|
let data_dir = data_dir_path_cli(is_testnet);
|
|
|
|
|
|
|
|
|
|
let (expected_context, expected_request) =
|
|
|
|
|
(Context::default(is_testnet, data_dir, debug, json).await.unwrap(), Request::buy_xmr(is_testnet));
|
|
|
|
|
|
|
|
|
|
assert_eq!(expected_args, args);
|
|
|
|
|
let (actual_context, actual_request) = match args {
|
|
|
|
|
ParseResult::Context(context, request) => (context, request),
|
|
|
|
|
_ => panic!("Couldn't parse result")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
assert_eq!(actual_context, Arc::new(expected_context));
|
|
|
|
|
assert_eq!(actual_request, Box::new(expected_request));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn given_buy_xmr_on_testnet_then_defaults_to_testnet() {
|
|
|
|
|
#[tokio::test]
|
|
|
|
|
async fn given_buy_xmr_on_testnet_then_defaults_to_testnet() {
|
|
|
|
|
let raw_ars = vec![
|
|
|
|
|
BINARY_NAME,
|
|
|
|
|
"--testnet",
|
|
|
|
@ -730,16 +725,24 @@ mod tests {
|
|
|
|
|
MULTI_ADDRESS,
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).await.unwrap();
|
|
|
|
|
let (is_testnet, debug, json) = (true, false, false);
|
|
|
|
|
let data_dir = data_dir_path_cli(is_testnet);
|
|
|
|
|
|
|
|
|
|
assert_eq!(
|
|
|
|
|
args,
|
|
|
|
|
ParseResult::Arguments(Arguments::buy_xmr_testnet_defaults().into_boxed())
|
|
|
|
|
);
|
|
|
|
|
let (expected_context, expected_request) =
|
|
|
|
|
(Context::default(is_testnet, data_dir, debug, json).await.unwrap(), Request::buy_xmr(is_testnet));
|
|
|
|
|
|
|
|
|
|
let (actual_context, actual_request) = match args {
|
|
|
|
|
ParseResult::Context(context, request) => (context, request),
|
|
|
|
|
_ => panic!("Couldn't parse result")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
assert_eq!(actual_context, Arc::new(expected_context));
|
|
|
|
|
assert_eq!(actual_request, Box::new(expected_request));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn given_buy_xmr_on_mainnet_with_testnet_address_then_fails() {
|
|
|
|
|
#[tokio::test]
|
|
|
|
|
async fn given_buy_xmr_on_mainnet_with_testnet_address_then_fails() {
|
|
|
|
|
let raw_ars = vec![
|
|
|
|
|
BINARY_NAME,
|
|
|
|
|
"buy-xmr",
|
|
|
|
@ -751,7 +754,7 @@ mod tests {
|
|
|
|
|
MULTI_ADDRESS,
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
let err = parse_args_and_apply_defaults(raw_ars).unwrap_err();
|
|
|
|
|
let err = parse_args_and_apply_defaults(raw_ars).await.unwrap_err();
|
|
|
|
|
|
|
|
|
|
assert_eq!(
|
|
|
|
|
err.downcast_ref::<MoneroAddressNetworkMismatch>().unwrap(),
|
|
|
|
@ -762,8 +765,8 @@ mod tests {
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn given_buy_xmr_on_testnet_with_mainnet_address_then_fails() {
|
|
|
|
|
#[tokio::test]
|
|
|
|
|
async fn given_buy_xmr_on_testnet_with_mainnet_address_then_fails() {
|
|
|
|
|
let raw_ars = vec![
|
|
|
|
|
BINARY_NAME,
|
|
|
|
|
"--testnet",
|
|
|
|
@ -776,7 +779,7 @@ mod tests {
|
|
|
|
|
MULTI_ADDRESS,
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
let err = parse_args_and_apply_defaults(raw_ars).unwrap_err();
|
|
|
|
|
let err = parse_args_and_apply_defaults(raw_ars).await.unwrap_err();
|
|
|
|
|
|
|
|
|
|
assert_eq!(
|
|
|
|
|
err.downcast_ref::<MoneroAddressNetworkMismatch>().unwrap(),
|
|
|
|
@ -787,86 +790,135 @@ mod tests {
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn given_resume_on_mainnet_then_defaults_to_mainnet() {
|
|
|
|
|
#[tokio::test]
|
|
|
|
|
async fn given_resume_on_mainnet_then_defaults_to_mainnet() {
|
|
|
|
|
let raw_ars = vec![BINARY_NAME, "resume", "--swap-id", SWAP_ID];
|
|
|
|
|
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).await.unwrap();
|
|
|
|
|
let (is_testnet, debug, json) = (false, false, false);
|
|
|
|
|
let data_dir = data_dir_path_cli(is_testnet);
|
|
|
|
|
|
|
|
|
|
assert_eq!(
|
|
|
|
|
args,
|
|
|
|
|
ParseResult::Arguments(Arguments::resume_mainnet_defaults().into_boxed())
|
|
|
|
|
);
|
|
|
|
|
let (expected_context, expected_request) =
|
|
|
|
|
(Context::default(is_testnet, data_dir, debug, json).await.unwrap(), Request::resume());
|
|
|
|
|
|
|
|
|
|
let (actual_context, actual_request) = match args {
|
|
|
|
|
ParseResult::Context(context, request) => (context, request),
|
|
|
|
|
_ => panic!("Couldn't parse result")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
assert_eq!(actual_context, Arc::new(expected_context));
|
|
|
|
|
assert_eq!(actual_request, Box::new(expected_request));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn given_resume_on_testnet_then_defaults_to_testnet() {
|
|
|
|
|
#[tokio::test]
|
|
|
|
|
async fn given_resume_on_testnet_then_defaults_to_testnet() {
|
|
|
|
|
let raw_ars = vec![BINARY_NAME, "--testnet", "resume", "--swap-id", SWAP_ID];
|
|
|
|
|
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).await.unwrap();
|
|
|
|
|
let (is_testnet, debug, json) = (true, false, false);
|
|
|
|
|
let data_dir = data_dir_path_cli(is_testnet);
|
|
|
|
|
|
|
|
|
|
assert_eq!(
|
|
|
|
|
args,
|
|
|
|
|
ParseResult::Arguments(Arguments::resume_testnet_defaults().into_boxed())
|
|
|
|
|
);
|
|
|
|
|
let (expected_context, expected_request) =
|
|
|
|
|
(Context::default(is_testnet, data_dir, debug, json).await.unwrap(), Request::resume());
|
|
|
|
|
|
|
|
|
|
let (actual_context, actual_request) = match args {
|
|
|
|
|
ParseResult::Context(context, request) => (context, request),
|
|
|
|
|
_ => panic!("Couldn't parse result")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
assert_eq!(actual_context, Arc::new(expected_context));
|
|
|
|
|
assert_eq!(actual_request, Box::new(expected_request));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn given_cancel_on_mainnet_then_defaults_to_mainnet() {
|
|
|
|
|
#[tokio::test]
|
|
|
|
|
async fn given_cancel_on_mainnet_then_defaults_to_mainnet() {
|
|
|
|
|
let raw_ars = vec![BINARY_NAME, "cancel", "--swap-id", SWAP_ID];
|
|
|
|
|
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).await.unwrap();
|
|
|
|
|
|
|
|
|
|
assert_eq!(
|
|
|
|
|
args,
|
|
|
|
|
ParseResult::Arguments(Arguments::cancel_mainnet_defaults().into_boxed())
|
|
|
|
|
);
|
|
|
|
|
let (is_testnet, debug, json) = (false, false, false);
|
|
|
|
|
let data_dir = data_dir_path_cli(is_testnet);
|
|
|
|
|
|
|
|
|
|
let (expected_context, expected_request) =
|
|
|
|
|
(Context::default(is_testnet, data_dir, debug, json).await.unwrap(), Request::cancel());
|
|
|
|
|
|
|
|
|
|
let (actual_context, actual_request) = match args {
|
|
|
|
|
ParseResult::Context(context, request) => (context, request),
|
|
|
|
|
_ => panic!("Couldn't parse result")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
assert_eq!(actual_context, Arc::new(expected_context));
|
|
|
|
|
assert_eq!(actual_request, Box::new(expected_request));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn given_cancel_on_testnet_then_defaults_to_testnet() {
|
|
|
|
|
#[tokio::test]
|
|
|
|
|
async fn given_cancel_on_testnet_then_defaults_to_testnet() {
|
|
|
|
|
let raw_ars = vec![BINARY_NAME, "--testnet", "cancel", "--swap-id", SWAP_ID];
|
|
|
|
|
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).await.unwrap();
|
|
|
|
|
let (is_testnet, debug, json) = (true, false, false);
|
|
|
|
|
let data_dir = data_dir_path_cli(is_testnet);
|
|
|
|
|
|
|
|
|
|
assert_eq!(
|
|
|
|
|
args,
|
|
|
|
|
ParseResult::Arguments(Arguments::cancel_testnet_defaults().into_boxed())
|
|
|
|
|
);
|
|
|
|
|
let (expected_context, expected_request) =
|
|
|
|
|
(Context::default(is_testnet, data_dir, debug, json).await.unwrap(), Request::cancel());
|
|
|
|
|
|
|
|
|
|
let (actual_context, actual_request) = match args {
|
|
|
|
|
ParseResult::Context(context, request) => (context, request),
|
|
|
|
|
_ => panic!("Couldn't parse result")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
assert_eq!(actual_context, Arc::new(expected_context));
|
|
|
|
|
assert_eq!(actual_request, Box::new(expected_request));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn given_refund_on_mainnet_then_defaults_to_mainnet() {
|
|
|
|
|
#[tokio::test]
|
|
|
|
|
async fn given_refund_on_mainnet_then_defaults_to_mainnet() {
|
|
|
|
|
let raw_ars = vec![BINARY_NAME, "refund", "--swap-id", SWAP_ID];
|
|
|
|
|
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).await.unwrap();
|
|
|
|
|
let (is_testnet, debug, json) = (false, false, false);
|
|
|
|
|
let data_dir = data_dir_path_cli(is_testnet);
|
|
|
|
|
|
|
|
|
|
assert_eq!(
|
|
|
|
|
args,
|
|
|
|
|
ParseResult::Arguments(Arguments::refund_mainnet_defaults().into_boxed())
|
|
|
|
|
);
|
|
|
|
|
let (expected_context, expected_request) =
|
|
|
|
|
(Context::default(is_testnet, data_dir, debug, json).await.unwrap(), Request::refund());
|
|
|
|
|
|
|
|
|
|
let (actual_context, actual_request) = match args {
|
|
|
|
|
ParseResult::Context(context, request) => (context, request),
|
|
|
|
|
_ => panic!("Couldn't parse result")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
assert_eq!(actual_context, Arc::new(expected_context));
|
|
|
|
|
assert_eq!(actual_request, Box::new(expected_request));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn given_refund_on_testnet_then_defaults_to_testnet() {
|
|
|
|
|
#[tokio::test]
|
|
|
|
|
async fn given_refund_on_testnet_then_defaults_to_testnet() {
|
|
|
|
|
let raw_ars = vec![BINARY_NAME, "--testnet", "refund", "--swap-id", SWAP_ID];
|
|
|
|
|
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).await.unwrap();
|
|
|
|
|
let (is_testnet, debug, json) = (true, false, false);
|
|
|
|
|
let data_dir = data_dir_path_cli(is_testnet);
|
|
|
|
|
|
|
|
|
|
assert_eq!(
|
|
|
|
|
args,
|
|
|
|
|
ParseResult::Arguments(Arguments::refund_testnet_defaults().into_boxed())
|
|
|
|
|
);
|
|
|
|
|
let (expected_context, expected_request) =
|
|
|
|
|
(Context::default(is_testnet, data_dir, debug, json).await.unwrap(), Request::refund());
|
|
|
|
|
|
|
|
|
|
let (actual_context, actual_request) = match args {
|
|
|
|
|
ParseResult::Context(context, request) => (context, request),
|
|
|
|
|
_ => panic!("Couldn't parse result")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
assert_eq!(actual_context, Arc::new(expected_context));
|
|
|
|
|
assert_eq!(actual_request, Box::new(expected_request));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn given_with_data_dir_then_data_dir_set() {
|
|
|
|
|
let data_dir = "/some/path/to/dir";
|
|
|
|
|
#[tokio::test]
|
|
|
|
|
async fn given_with_data_dir_then_data_dir_set() {
|
|
|
|
|
let args_data_dir = "/some/path/to/dir";
|
|
|
|
|
|
|
|
|
|
let raw_ars = vec![
|
|
|
|
|
BINARY_NAME,
|
|
|
|
|
"--data-base-dir",
|
|
|
|
|
data_dir,
|
|
|
|
|
args_data_dir,
|
|
|
|
|
"buy-xmr",
|
|
|
|
|
"--change-address",
|
|
|
|
|
BITCOIN_MAINNET_ADDRESS,
|
|
|
|
@ -876,22 +928,26 @@ mod tests {
|
|
|
|
|
MULTI_ADDRESS,
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).await.unwrap();
|
|
|
|
|
let (is_testnet, debug, json) = (false, false, false);
|
|
|
|
|
let data_dir = PathBuf::from_str(args_data_dir).unwrap();
|
|
|
|
|
|
|
|
|
|
assert_eq!(
|
|
|
|
|
args,
|
|
|
|
|
ParseResult::Arguments(
|
|
|
|
|
Arguments::buy_xmr_mainnet_defaults()
|
|
|
|
|
.with_data_dir(PathBuf::from_str(data_dir).unwrap().join("mainnet"))
|
|
|
|
|
.into_boxed()
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
let (expected_context, expected_request) =
|
|
|
|
|
(Context::default(is_testnet, data_dir.clone(), debug, json).await.unwrap(), Request::buy_xmr(is_testnet));
|
|
|
|
|
|
|
|
|
|
let (actual_context, actual_request) = match args {
|
|
|
|
|
ParseResult::Context(context, request) => (context, request),
|
|
|
|
|
_ => panic!("Couldn't parse result")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
assert_eq!(actual_context, Arc::new(expected_context));
|
|
|
|
|
assert_eq!(actual_request, Box::new(expected_request));
|
|
|
|
|
|
|
|
|
|
let raw_ars = vec![
|
|
|
|
|
BINARY_NAME,
|
|
|
|
|
"--testnet",
|
|
|
|
|
"--data-base-dir",
|
|
|
|
|
data_dir,
|
|
|
|
|
args_data_dir,
|
|
|
|
|
"buy-xmr",
|
|
|
|
|
"--change-address",
|
|
|
|
|
BITCOIN_TESTNET_ADDRESS,
|
|
|
|
@ -901,61 +957,72 @@ mod tests {
|
|
|
|
|
MULTI_ADDRESS,
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).await.unwrap();
|
|
|
|
|
let (is_testnet, debug, json) = (true, false, false);
|
|
|
|
|
|
|
|
|
|
assert_eq!(
|
|
|
|
|
args,
|
|
|
|
|
ParseResult::Arguments(
|
|
|
|
|
Arguments::buy_xmr_testnet_defaults()
|
|
|
|
|
.with_data_dir(PathBuf::from_str(data_dir).unwrap().join("testnet"))
|
|
|
|
|
.into_boxed()
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
let (expected_context, expected_request) =
|
|
|
|
|
(Context::default(is_testnet, data_dir.clone(), debug, json).await.unwrap(), Request::buy_xmr(is_testnet));
|
|
|
|
|
|
|
|
|
|
let (actual_context, actual_request) = match args {
|
|
|
|
|
ParseResult::Context(context, request) => (context, request),
|
|
|
|
|
_ => panic!("Couldn't parse result")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
assert_eq!(actual_context, Arc::new(expected_context));
|
|
|
|
|
assert_eq!(actual_request, Box::new(expected_request));
|
|
|
|
|
|
|
|
|
|
let raw_ars = vec![
|
|
|
|
|
BINARY_NAME,
|
|
|
|
|
"--data-base-dir",
|
|
|
|
|
data_dir,
|
|
|
|
|
args_data_dir,
|
|
|
|
|
"resume",
|
|
|
|
|
"--swap-id",
|
|
|
|
|
SWAP_ID,
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).await.unwrap();
|
|
|
|
|
let (is_testnet, debug, json) = (false, false, false);
|
|
|
|
|
|
|
|
|
|
assert_eq!(
|
|
|
|
|
args,
|
|
|
|
|
ParseResult::Arguments(
|
|
|
|
|
Arguments::resume_mainnet_defaults()
|
|
|
|
|
.with_data_dir(PathBuf::from_str(data_dir).unwrap().join("mainnet"))
|
|
|
|
|
.into_boxed()
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
let (expected_context, expected_request) =
|
|
|
|
|
(Context::default(is_testnet, data_dir.clone(), debug, json).await.unwrap(), Request::resume());
|
|
|
|
|
|
|
|
|
|
let (actual_context, actual_request) = match args {
|
|
|
|
|
ParseResult::Context(context, request) => (context, request),
|
|
|
|
|
_ => panic!("Couldn't parse result")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
assert_eq!(actual_context, Arc::new(expected_context));
|
|
|
|
|
assert_eq!(actual_request, Box::new(expected_request));
|
|
|
|
|
|
|
|
|
|
let raw_ars = vec![
|
|
|
|
|
BINARY_NAME,
|
|
|
|
|
"--testnet",
|
|
|
|
|
"--data-base-dir",
|
|
|
|
|
data_dir,
|
|
|
|
|
args_data_dir,
|
|
|
|
|
"resume",
|
|
|
|
|
"--swap-id",
|
|
|
|
|
SWAP_ID,
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
|
|
|
|
|
|
|
|
|
|
assert_eq!(
|
|
|
|
|
args,
|
|
|
|
|
ParseResult::Arguments(
|
|
|
|
|
Arguments::resume_testnet_defaults()
|
|
|
|
|
.with_data_dir(PathBuf::from_str(data_dir).unwrap().join("testnet"))
|
|
|
|
|
.into_boxed()
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).await.unwrap();
|
|
|
|
|
let (is_testnet, debug, json) = (true, false, false);
|
|
|
|
|
|
|
|
|
|
let (expected_context, expected_request) =
|
|
|
|
|
(Context::default(is_testnet, data_dir.clone(), debug, json).await.unwrap(), Request::resume());
|
|
|
|
|
|
|
|
|
|
let (actual_context, actual_request) = match args {
|
|
|
|
|
ParseResult::Context(context, request) => (context, request),
|
|
|
|
|
_ => panic!("Couldn't parse result")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
assert_eq!(actual_context, Arc::new(expected_context));
|
|
|
|
|
assert_eq!(actual_request, Box::new(expected_request));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn given_with_debug_then_debug_set() {
|
|
|
|
|
#[tokio::test]
|
|
|
|
|
async fn given_with_debug_then_debug_set() {
|
|
|
|
|
let raw_ars = vec![
|
|
|
|
|
BINARY_NAME,
|
|
|
|
|
"--debug",
|
|
|
|
@ -968,15 +1035,20 @@ mod tests {
|
|
|
|
|
MULTI_ADDRESS,
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
|
|
|
|
|
assert_eq!(
|
|
|
|
|
args,
|
|
|
|
|
ParseResult::Arguments(
|
|
|
|
|
Arguments::buy_xmr_mainnet_defaults()
|
|
|
|
|
.with_debug()
|
|
|
|
|
.into_boxed()
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).await.unwrap();
|
|
|
|
|
let (is_testnet, debug, json) = (false, true, false);
|
|
|
|
|
let data_dir = data_dir_path_cli(is_testnet);
|
|
|
|
|
|
|
|
|
|
let (expected_context, expected_request) =
|
|
|
|
|
(Context::default(is_testnet, data_dir, debug, json).await.unwrap(), Request::buy_xmr(is_testnet));
|
|
|
|
|
|
|
|
|
|
let (actual_context, actual_request) = match args {
|
|
|
|
|
ParseResult::Context(context, request) => (context, request),
|
|
|
|
|
_ => panic!("Couldn't parse result")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
assert_eq!(actual_context, Arc::new(expected_context));
|
|
|
|
|
assert_eq!(actual_request, Box::new(expected_request));
|
|
|
|
|
|
|
|
|
|
let raw_ars = vec![
|
|
|
|
|
BINARY_NAME,
|
|
|
|
@ -991,27 +1063,37 @@ mod tests {
|
|
|
|
|
MULTI_ADDRESS,
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
|
|
|
|
|
assert_eq!(
|
|
|
|
|
args,
|
|
|
|
|
ParseResult::Arguments(
|
|
|
|
|
Arguments::buy_xmr_testnet_defaults()
|
|
|
|
|
.with_debug()
|
|
|
|
|
.into_boxed()
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).await.unwrap();
|
|
|
|
|
let (is_testnet, debug, json) = (true, true, false);
|
|
|
|
|
let data_dir = data_dir_path_cli(is_testnet);
|
|
|
|
|
|
|
|
|
|
let (expected_context, expected_request) =
|
|
|
|
|
(Context::default(is_testnet, data_dir, debug, json).await.unwrap(), Request::buy_xmr(is_testnet));
|
|
|
|
|
|
|
|
|
|
let (actual_context, actual_request) = match args {
|
|
|
|
|
ParseResult::Context(context, request) => (context, request),
|
|
|
|
|
_ => panic!("Couldn't parse result")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
assert_eq!(actual_context, Arc::new(expected_context));
|
|
|
|
|
assert_eq!(actual_request, Box::new(expected_request));
|
|
|
|
|
|
|
|
|
|
let raw_ars = vec![BINARY_NAME, "--debug", "resume", "--swap-id", SWAP_ID];
|
|
|
|
|
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
|
|
|
|
|
assert_eq!(
|
|
|
|
|
args,
|
|
|
|
|
ParseResult::Arguments(
|
|
|
|
|
Arguments::resume_mainnet_defaults()
|
|
|
|
|
.with_debug()
|
|
|
|
|
.into_boxed()
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).await.unwrap();
|
|
|
|
|
let (is_testnet, debug, json) = (false, true, false);
|
|
|
|
|
let data_dir = data_dir_path_cli(is_testnet);
|
|
|
|
|
|
|
|
|
|
let (expected_context, expected_request) =
|
|
|
|
|
(Context::default(is_testnet, data_dir, debug, json).await.unwrap(), Request::resume());
|
|
|
|
|
|
|
|
|
|
let (actual_context, actual_request) = match args {
|
|
|
|
|
ParseResult::Context(context, request) => (context, request),
|
|
|
|
|
_ => panic!("Couldn't parse result")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
assert_eq!(actual_context, Arc::new(expected_context));
|
|
|
|
|
assert_eq!(actual_request, Box::new(expected_request));
|
|
|
|
|
|
|
|
|
|
let raw_ars = vec![
|
|
|
|
|
BINARY_NAME,
|
|
|
|
@ -1022,19 +1104,24 @@ mod tests {
|
|
|
|
|
SWAP_ID,
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
|
|
|
|
|
assert_eq!(
|
|
|
|
|
args,
|
|
|
|
|
ParseResult::Arguments(
|
|
|
|
|
Arguments::resume_testnet_defaults()
|
|
|
|
|
.with_debug()
|
|
|
|
|
.into_boxed()
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).await.unwrap();
|
|
|
|
|
let (is_testnet, debug, json) = (true, true, false);
|
|
|
|
|
let data_dir = data_dir_path_cli(is_testnet);
|
|
|
|
|
|
|
|
|
|
let (expected_context, expected_request) =
|
|
|
|
|
(Context::default(is_testnet, data_dir, debug, json).await.unwrap(), Request::resume());
|
|
|
|
|
|
|
|
|
|
let (actual_context, actual_request) = match args {
|
|
|
|
|
ParseResult::Context(context, request) => (context, request),
|
|
|
|
|
_ => panic!("Couldn't parse result")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
assert_eq!(actual_context, Arc::new(expected_context));
|
|
|
|
|
assert_eq!(actual_request, Box::new(expected_request));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn given_with_json_then_json_set() {
|
|
|
|
|
#[tokio::test]
|
|
|
|
|
async fn given_with_json_then_json_set() {
|
|
|
|
|
let raw_ars = vec![
|
|
|
|
|
BINARY_NAME,
|
|
|
|
|
"--json",
|
|
|
|
@ -1047,15 +1134,20 @@ mod tests {
|
|
|
|
|
MULTI_ADDRESS,
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
|
|
|
|
|
assert_eq!(
|
|
|
|
|
args,
|
|
|
|
|
ParseResult::Arguments(
|
|
|
|
|
Arguments::buy_xmr_mainnet_defaults()
|
|
|
|
|
.with_json()
|
|
|
|
|
.into_boxed()
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).await.unwrap();
|
|
|
|
|
let (is_testnet, debug, json) = (false, false, true);
|
|
|
|
|
let data_dir = data_dir_path_cli(is_testnet);
|
|
|
|
|
|
|
|
|
|
let (expected_context, expected_request) =
|
|
|
|
|
(Context::default(is_testnet, data_dir, debug, json).await.unwrap(), Request::buy_xmr(is_testnet));
|
|
|
|
|
|
|
|
|
|
let (actual_context, actual_request) = match args {
|
|
|
|
|
ParseResult::Context(context, request) => (context, request),
|
|
|
|
|
_ => panic!("Couldn't parse result")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
assert_eq!(actual_context, Arc::new(expected_context));
|
|
|
|
|
assert_eq!(actual_request, Box::new(expected_request));
|
|
|
|
|
|
|
|
|
|
let raw_ars = vec![
|
|
|
|
|
BINARY_NAME,
|
|
|
|
@ -1070,27 +1162,36 @@ mod tests {
|
|
|
|
|
MULTI_ADDRESS,
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
|
|
|
|
|
assert_eq!(
|
|
|
|
|
args,
|
|
|
|
|
ParseResult::Arguments(
|
|
|
|
|
Arguments::buy_xmr_testnet_defaults()
|
|
|
|
|
.with_json()
|
|
|
|
|
.into_boxed()
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).await.unwrap();
|
|
|
|
|
let (is_testnet, debug, json) = (true, false, true);
|
|
|
|
|
let data_dir = data_dir_path_cli(is_testnet);
|
|
|
|
|
|
|
|
|
|
let (expected_context, expected_request) =
|
|
|
|
|
(Context::default(is_testnet, data_dir, debug, json).await.unwrap(), Request::buy_xmr(is_testnet));
|
|
|
|
|
|
|
|
|
|
let (actual_context, actual_request) = match args {
|
|
|
|
|
ParseResult::Context(context, request) => (context, request),
|
|
|
|
|
_ => panic!("Couldn't parse result")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
assert_eq!(actual_context, Arc::new(expected_context));
|
|
|
|
|
assert_eq!(actual_request, Box::new(expected_request));
|
|
|
|
|
|
|
|
|
|
let raw_ars = vec![BINARY_NAME, "--json", "resume", "--swap-id", SWAP_ID];
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).await.unwrap();
|
|
|
|
|
let (is_testnet, debug, json) = (false, false, true);
|
|
|
|
|
let data_dir = data_dir_path_cli(is_testnet);
|
|
|
|
|
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
|
|
|
|
|
assert_eq!(
|
|
|
|
|
args,
|
|
|
|
|
ParseResult::Arguments(
|
|
|
|
|
Arguments::resume_mainnet_defaults()
|
|
|
|
|
.with_json()
|
|
|
|
|
.into_boxed()
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
let (expected_context, expected_request) =
|
|
|
|
|
(Context::default(is_testnet, data_dir, debug, json).await.unwrap(), Request::resume());
|
|
|
|
|
|
|
|
|
|
let (actual_context, actual_request) = match args {
|
|
|
|
|
ParseResult::Context(context, request) => (context, request),
|
|
|
|
|
_ => panic!("Couldn't parse result")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
assert_eq!(actual_context, Arc::new(expected_context));
|
|
|
|
|
assert_eq!(actual_request, Box::new(expected_request));
|
|
|
|
|
|
|
|
|
|
let raw_ars = vec![
|
|
|
|
|
BINARY_NAME,
|
|
|
|
@ -1101,19 +1202,24 @@ mod tests {
|
|
|
|
|
SWAP_ID,
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
|
|
|
|
|
assert_eq!(
|
|
|
|
|
args,
|
|
|
|
|
ParseResult::Arguments(
|
|
|
|
|
Arguments::resume_testnet_defaults()
|
|
|
|
|
.with_json()
|
|
|
|
|
.into_boxed()
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).await.unwrap();
|
|
|
|
|
let (is_testnet, debug, json) = (true, false, true);
|
|
|
|
|
let data_dir = data_dir_path_cli(is_testnet);
|
|
|
|
|
|
|
|
|
|
let (expected_context, expected_request) =
|
|
|
|
|
(Context::default(is_testnet, data_dir, debug, json).await.unwrap(), Request::resume());
|
|
|
|
|
|
|
|
|
|
let (actual_context, actual_request) = match args {
|
|
|
|
|
ParseResult::Context(context, request) => (context, request),
|
|
|
|
|
_ => panic!("Couldn't parse result")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
assert_eq!(actual_context, Arc::new(expected_context));
|
|
|
|
|
assert_eq!(actual_request, Box::new(expected_request));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn only_bech32_addresses_mainnet_are_allowed() {
|
|
|
|
|
#[tokio::test]
|
|
|
|
|
async fn only_bech32_addresses_mainnet_are_allowed() {
|
|
|
|
|
let raw_ars = vec![
|
|
|
|
|
BINARY_NAME,
|
|
|
|
|
"buy-xmr",
|
|
|
|
@ -1124,9 +1230,12 @@ mod tests {
|
|
|
|
|
"--seller",
|
|
|
|
|
MULTI_ADDRESS,
|
|
|
|
|
];
|
|
|
|
|
let result = parse_args_and_apply_defaults(raw_ars);
|
|
|
|
|
let args = parse_args_and_apply_defaults(raw_ars).await;
|
|
|
|
|
let (is_testnet, debug, json) = (false, false, false);
|
|
|
|
|
let data_dir = data_dir_path_cli(is_testnet);
|
|
|
|
|
|
|
|
|
|
assert_eq!(
|
|
|
|
|
result.unwrap_err().to_string(),
|
|
|
|
|
args.unwrap_err().to_string(),
|
|
|
|
|
"Invalid Bitcoin address provided, only bech32 format is supported!"
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
@ -1142,7 +1251,7 @@ mod tests {
|
|
|
|
|
];
|
|
|
|
|
let result = parse_args_and_apply_defaults(raw_ars);
|
|
|
|
|
assert_eq!(
|
|
|
|
|
result.unwrap_err().to_string(),
|
|
|
|
|
result.await.unwrap_err().to_string(),
|
|
|
|
|
"Invalid Bitcoin address provided, only bech32 format is supported!"
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
@ -1156,12 +1265,13 @@ mod tests {
|
|
|
|
|
"--seller",
|
|
|
|
|
MULTI_ADDRESS,
|
|
|
|
|
];
|
|
|
|
|
let result = parse_args_and_apply_defaults(raw_ars).unwrap();
|
|
|
|
|
assert!(matches!(result, ParseResult::Arguments(_)));
|
|
|
|
|
let result = parse_args_and_apply_defaults(raw_ars).await.unwrap();
|
|
|
|
|
//assert!(matches!(result, ParseResult::Arguments(_)));
|
|
|
|
|
assert!(true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn only_bech32_addresses_testnet_are_allowed() {
|
|
|
|
|
#[tokio::test]
|
|
|
|
|
async fn only_bech32_addresses_testnet_are_allowed() {
|
|
|
|
|
let raw_ars = vec![
|
|
|
|
|
BINARY_NAME,
|
|
|
|
|
"--testnet",
|
|
|
|
@ -1175,7 +1285,7 @@ mod tests {
|
|
|
|
|
];
|
|
|
|
|
let result = parse_args_and_apply_defaults(raw_ars);
|
|
|
|
|
assert_eq!(
|
|
|
|
|
result.unwrap_err().to_string(),
|
|
|
|
|
result.await.unwrap_err().to_string(),
|
|
|
|
|
"Invalid Bitcoin address provided, only bech32 format is supported!"
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
@ -1192,7 +1302,7 @@ mod tests {
|
|
|
|
|
];
|
|
|
|
|
let result = parse_args_and_apply_defaults(raw_ars);
|
|
|
|
|
assert_eq!(
|
|
|
|
|
result.unwrap_err().to_string(),
|
|
|
|
|
result.await.unwrap_err().to_string(),
|
|
|
|
|
"Invalid Bitcoin address provided, only bech32 format is supported!"
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
@ -1207,145 +1317,16 @@ mod tests {
|
|
|
|
|
"--seller",
|
|
|
|
|
MULTI_ADDRESS,
|
|
|
|
|
];
|
|
|
|
|
let result = parse_args_and_apply_defaults(raw_ars).unwrap();
|
|
|
|
|
assert!(matches!(result, ParseResult::Arguments(_)));
|
|
|
|
|
let result = parse_args_and_apply_defaults(raw_ars).await.unwrap();
|
|
|
|
|
//assert!(matches!(result, ParseResult::Arguments(_)));
|
|
|
|
|
assert!(true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl Context {
|
|
|
|
|
pub fn buy_xmr_mainnet_defaults() -> Self {
|
|
|
|
|
Self {
|
|
|
|
|
env_config: env::Mainnet::get_config(),
|
|
|
|
|
debug: false,
|
|
|
|
|
json: false,
|
|
|
|
|
data_dir: data_dir_path_cli().join(MAINNET),
|
|
|
|
|
cmd: Command::BuyXmr {
|
|
|
|
|
seller: Multiaddr::from_str(MULTI_ADDRESS).unwrap(),
|
|
|
|
|
bitcoin_electrum_rpc_url: Url::from_str(DEFAULT_ELECTRUM_RPC_URL).unwrap(),
|
|
|
|
|
bitcoin_target_block: DEFAULT_BITCOIN_CONFIRMATION_TARGET,
|
|
|
|
|
bitcoin_change_address: BITCOIN_MAINNET_ADDRESS.parse().unwrap(),
|
|
|
|
|
monero_receive_address: monero::Address::from_str(MONERO_MAINNET_ADDRESS)
|
|
|
|
|
.unwrap(),
|
|
|
|
|
monero_daemon_address: DEFAULT_MONERO_DAEMON_ADDRESS.to_string(),
|
|
|
|
|
tor_socks5_port: DEFAULT_SOCKS5_PORT,
|
|
|
|
|
namespace: XmrBtcNamespace::Mainnet,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub fn resume_testnet_defaults() -> Self {
|
|
|
|
|
Self {
|
|
|
|
|
env_config: env::Testnet::get_config(),
|
|
|
|
|
debug: false,
|
|
|
|
|
json: false,
|
|
|
|
|
data_dir: data_dir_path_cli().join(TESTNET),
|
|
|
|
|
cmd: Command::Resume {
|
|
|
|
|
swap_id: Uuid::from_str(SWAP_ID).unwrap(),
|
|
|
|
|
bitcoin_electrum_rpc_url: Url::from_str(DEFAULT_ELECTRUM_RPC_URL_TESTNET)
|
|
|
|
|
.unwrap(),
|
|
|
|
|
bitcoin_target_block: DEFAULT_BITCOIN_CONFIRMATION_TARGET_TESTNET,
|
|
|
|
|
monero_daemon_address: DEFAULT_MONERO_DAEMON_ADDRESS_STAGENET.to_string(),
|
|
|
|
|
tor_socks5_port: DEFAULT_SOCKS5_PORT,
|
|
|
|
|
namespace: XmrBtcNamespace::Testnet,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub fn resume_mainnet_defaults() -> Self {
|
|
|
|
|
Self {
|
|
|
|
|
env_config: env::Mainnet::get_config(),
|
|
|
|
|
debug: false,
|
|
|
|
|
json: false,
|
|
|
|
|
data_dir: data_dir_path_cli().join(MAINNET),
|
|
|
|
|
cmd: Command::Resume {
|
|
|
|
|
swap_id: Uuid::from_str(SWAP_ID).unwrap(),
|
|
|
|
|
bitcoin_electrum_rpc_url: Url::from_str(DEFAULT_ELECTRUM_RPC_URL).unwrap(),
|
|
|
|
|
bitcoin_target_block: DEFAULT_BITCOIN_CONFIRMATION_TARGET,
|
|
|
|
|
monero_daemon_address: DEFAULT_MONERO_DAEMON_ADDRESS.to_string(),
|
|
|
|
|
tor_socks5_port: DEFAULT_SOCKS5_PORT,
|
|
|
|
|
namespace: XmrBtcNamespace::Mainnet,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub fn cancel_testnet_defaults() -> Self {
|
|
|
|
|
Self {
|
|
|
|
|
env_config: env::Testnet::get_config(),
|
|
|
|
|
debug: false,
|
|
|
|
|
json: false,
|
|
|
|
|
data_dir: data_dir_path_cli().join(TESTNET),
|
|
|
|
|
cmd: Command::Cancel {
|
|
|
|
|
swap_id: Uuid::from_str(SWAP_ID).unwrap(),
|
|
|
|
|
bitcoin_electrum_rpc_url: Url::from_str(DEFAULT_ELECTRUM_RPC_URL_TESTNET)
|
|
|
|
|
.unwrap(),
|
|
|
|
|
bitcoin_target_block: DEFAULT_BITCOIN_CONFIRMATION_TARGET_TESTNET,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub fn cancel_mainnet_defaults() -> Self {
|
|
|
|
|
Self {
|
|
|
|
|
env_config: env::Mainnet::get_config(),
|
|
|
|
|
debug: false,
|
|
|
|
|
json: false,
|
|
|
|
|
data_dir: data_dir_path_cli().join(MAINNET),
|
|
|
|
|
cmd: Command::Cancel {
|
|
|
|
|
swap_id: Uuid::from_str(SWAP_ID).unwrap(),
|
|
|
|
|
bitcoin_electrum_rpc_url: Url::from_str(DEFAULT_ELECTRUM_RPC_URL).unwrap(),
|
|
|
|
|
bitcoin_target_block: DEFAULT_BITCOIN_CONFIRMATION_TARGET,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub fn refund_testnet_defaults() -> Self {
|
|
|
|
|
Self {
|
|
|
|
|
env_config: env::Testnet::get_config(),
|
|
|
|
|
debug: false,
|
|
|
|
|
json: false,
|
|
|
|
|
data_dir: data_dir_path_cli().join(TESTNET),
|
|
|
|
|
cmd: Command::Refund {
|
|
|
|
|
swap_id: Uuid::from_str(SWAP_ID).unwrap(),
|
|
|
|
|
bitcoin_electrum_rpc_url: Url::from_str(DEFAULT_ELECTRUM_RPC_URL_TESTNET)
|
|
|
|
|
.unwrap(),
|
|
|
|
|
bitcoin_target_block: DEFAULT_BITCOIN_CONFIRMATION_TARGET_TESTNET,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub fn refund_mainnet_defaults() -> Self {
|
|
|
|
|
Self {
|
|
|
|
|
env_config: env::Mainnet::get_config(),
|
|
|
|
|
debug: false,
|
|
|
|
|
json: false,
|
|
|
|
|
data_dir: data_dir_path_cli().join(MAINNET),
|
|
|
|
|
cmd: Command::Refund {
|
|
|
|
|
swap_id: Uuid::from_str(SWAP_ID).unwrap(),
|
|
|
|
|
bitcoin_electrum_rpc_url: Url::from_str(DEFAULT_ELECTRUM_RPC_URL).unwrap(),
|
|
|
|
|
bitcoin_target_block: DEFAULT_BITCOIN_CONFIRMATION_TARGET,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub fn with_data_dir(mut self, data_dir: PathBuf) -> Self {
|
|
|
|
|
self.data_dir = data_dir;
|
|
|
|
|
self
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub fn with_debug(mut self) -> Self {
|
|
|
|
|
self.debug = true;
|
|
|
|
|
self
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub fn with_json(mut self) -> Self {
|
|
|
|
|
self.json = true;
|
|
|
|
|
self
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub fn into_boxed(self) -> Box<Self> {
|
|
|
|
|
Box::new(self)
|
|
|
|
|
fn data_dir_path_cli(is_testnet: bool) -> PathBuf {
|
|
|
|
|
if is_testnet {
|
|
|
|
|
system_data_dir().unwrap().join("cli").join("testnet")
|
|
|
|
|
} else {
|
|
|
|
|
system_data_dir().unwrap().join("cli").join("mainnet")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn data_dir_path_cli() -> PathBuf {
|
|
|
|
|
system_data_dir().unwrap().join("cli")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|