use bsv_wallet_cli::services_env::services_options_from_env;
use bsv_wallet_toolbox::Chain;
#[test]
fn an_unset_header_source_is_refused_never_a_third_party_default() {
let dir = tempfile::TempDir::new().expect("temp dir");
let db = dir.path().join("wallet.db");
let db = db.to_str().unwrap();
std::env::remove_var("CHAINTRACKS_URL");
match services_options_from_env(Chain::Main, db) {
Ok(opts) => panic!(
"an unset CHAINTRACKS_URL resolved to {:?}",
opts.chaintracks_url
),
Err(e) => assert!(
e.to_string().contains("CHAINTRACKS_URL is not set"),
"the refusal names the setting: {e}"
),
}
std::env::set_var("CHAINTRACKS_URL", "https://headers.example");
std::env::remove_var("BREAK_GLASS_EXPLORER_HEADERS");
let opts = services_options_from_env(Chain::Main, db).expect("a header service");
assert_eq!(
opts.chaintracks_url.as_deref(),
Some("https://headers.example")
);
assert!(!opts.break_glass_explorer_headers, "off by default");
std::env::set_var("CHAINTRACKS_URL", "off");
let opts = services_options_from_env(Chain::Main, db).expect("off is a choice");
assert!(opts.chaintracks_url.is_none());
std::env::set_var("CHAINTRACKS_URL", "https://headers.example");
std::env::set_var("BREAK_GLASS_EXPLORER_HEADERS", "1");
let opts = services_options_from_env(Chain::Main, db).expect("break-glass");
assert!(opts.break_glass_explorer_headers);
std::env::remove_var("BREAK_GLASS_EXPLORER_HEADERS");
std::env::remove_var("CHAINTRACKS_URL");
}