Skip to main content

hashtree_cli/webrtc/
cashu.rs

1pub use hashtree_network::{cashu_mint_metadata_path, CashuMintMetadataStore, CashuRoutingConfig};
2
3impl From<&crate::config::CashuConfig> for CashuRoutingConfig {
4    fn from(config: &crate::config::CashuConfig) -> Self {
5        Self {
6            accepted_mints: config.accepted_mints.clone(),
7            default_mint: config.default_mint.clone(),
8            quote_payment_offer_sat: config.quote_payment_offer_sat,
9            quote_ttl_ms: config.quote_ttl_ms,
10            settlement_timeout_ms: config.settlement_timeout_ms,
11            mint_failure_block_threshold: config.mint_failure_block_threshold,
12            peer_suggested_mint_base_cap_sat: config.peer_suggested_mint_base_cap_sat,
13            peer_suggested_mint_success_step_sat: config.peer_suggested_mint_success_step_sat,
14            peer_suggested_mint_receipt_step_sat: config.peer_suggested_mint_receipt_step_sat,
15            peer_suggested_mint_max_cap_sat: config.peer_suggested_mint_max_cap_sat,
16            payment_default_block_threshold: config.payment_default_block_threshold,
17            chunk_target_bytes: config.chunk_target_bytes,
18        }
19    }
20}
21
22#[cfg(test)]
23mod tests {
24    use super::*;
25
26    #[test]
27    fn cashu_routing_config_maps_cli_config() {
28        let mut config = crate::config::CashuConfig::default();
29        config.accepted_mints = vec!["https://mint.example".to_string()];
30        config.default_mint = Some("https://mint.example".to_string());
31        config.quote_payment_offer_sat = 7;
32        config.quote_ttl_ms = 900;
33        config.settlement_timeout_ms = 3_000;
34        config.mint_failure_block_threshold = 4;
35        config.peer_suggested_mint_base_cap_sat = 5;
36        config.peer_suggested_mint_success_step_sat = 6;
37        config.peer_suggested_mint_receipt_step_sat = 7;
38        config.peer_suggested_mint_max_cap_sat = 8;
39        config.payment_default_block_threshold = 9;
40        config.chunk_target_bytes = 10_000;
41
42        let routing = CashuRoutingConfig::from(&config);
43        assert_eq!(routing.accepted_mints, config.accepted_mints);
44        assert_eq!(routing.default_mint, config.default_mint);
45        assert_eq!(routing.quote_payment_offer_sat, 7);
46        assert_eq!(routing.quote_ttl_ms, 900);
47        assert_eq!(routing.settlement_timeout_ms, 3_000);
48        assert_eq!(routing.mint_failure_block_threshold, 4);
49        assert_eq!(routing.peer_suggested_mint_base_cap_sat, 5);
50        assert_eq!(routing.peer_suggested_mint_success_step_sat, 6);
51        assert_eq!(routing.peer_suggested_mint_receipt_step_sat, 7);
52        assert_eq!(routing.peer_suggested_mint_max_cap_sat, 8);
53        assert_eq!(routing.payment_default_block_threshold, 9);
54        assert_eq!(routing.chunk_target_bytes, 10_000);
55    }
56}