Skip to content

Commit 190256f

Browse files
committed
refactor: start mint shared fn
1 parent c5d4fa5 commit 190256f

File tree

4 files changed

+46
-124
lines changed

4 files changed

+46
-124
lines changed

crates/cdk-integration-tests/src/init_fake_wallet.rs

Lines changed: 3 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,15 @@ use std::collections::{HashMap, HashSet};
22
use std::sync::Arc;
33

44
use anyhow::Result;
5-
use axum::Router;
65
use bip39::Mnemonic;
76
use cdk::cdk_database::{self, MintDatabase};
87
use cdk::mint::{FeeReserve, MintBuilder, MintMeltLimits};
98
use cdk::nuts::{CurrencyUnit, PaymentMethod};
109
use cdk_fake_wallet::FakeWallet;
11-
use tokio::sync::Notify;
12-
use tower_http::cors::CorsLayer;
1310
use tracing_subscriber::EnvFilter;
1411

12+
use crate::init_mint::start_mint;
13+
1514
pub async fn start_fake_mint<D>(addr: &str, port: u16, database: D) -> Result<()>
1615
where
1716
D: MintDatabase<Err = cdk_database::Error> + Send + Sync + 'static,
@@ -58,29 +57,7 @@ where
5857

5958
let mint = mint_builder.build().await?;
6059

61-
let mint_arc = Arc::new(mint);
62-
63-
let v1_service = cdk_axum::create_mint_router(Arc::clone(&mint_arc))
64-
.await
65-
.unwrap();
66-
67-
let mint_service = Router::new()
68-
.merge(v1_service)
69-
.layer(CorsLayer::permissive());
70-
71-
let mint = Arc::clone(&mint_arc);
72-
73-
let shutdown = Arc::new(Notify::new());
74-
75-
tokio::spawn({
76-
let shutdown = Arc::clone(&shutdown);
77-
async move { mint.wait_for_paid_invoices(shutdown).await }
78-
});
79-
80-
println!("Staring Axum server");
81-
axum::Server::bind(&format!("{}:{}", addr, port).as_str().parse().unwrap())
82-
.serve(mint_service.into_make_service())
83-
.await?;
60+
start_mint(addr, port, mint).await?;
8461

8562
Ok(())
8663
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
use std::sync::Arc;
2+
3+
use anyhow::Result;
4+
use axum::Router;
5+
use cdk::mint::Mint;
6+
use tokio::sync::Notify;
7+
use tower_http::cors::CorsLayer;
8+
9+
pub async fn start_mint(addr: &str, port: u16, mint: Mint) -> Result<()> {
10+
let mint_arc = Arc::new(mint);
11+
12+
let v1_service = cdk_axum::create_mint_router(Arc::clone(&mint_arc))
13+
.await
14+
.unwrap();
15+
16+
let mint_service = Router::new()
17+
.merge(v1_service)
18+
.layer(CorsLayer::permissive());
19+
20+
let mint = Arc::clone(&mint_arc);
21+
22+
let shutdown = Arc::new(Notify::new());
23+
24+
tokio::spawn({
25+
let shutdown = Arc::clone(&shutdown);
26+
async move { mint.wait_for_paid_invoices(shutdown).await }
27+
});
28+
29+
println!("Staring Axum server");
30+
axum::Server::bind(&format!("{}:{}", addr, port).as_str().parse().unwrap())
31+
.serve(mint_service.into_make_service())
32+
.await?;
33+
34+
Ok(())
35+
}

crates/cdk-integration-tests/src/init_regtest.rs

Lines changed: 3 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ use std::path::PathBuf;
33
use std::sync::Arc;
44

55
use anyhow::Result;
6-
use axum::Router;
76
use bip39::Mnemonic;
87
use cdk::cdk_database::{self, MintDatabase};
98
use cdk::mint::{FeeReserve, MintBuilder, MintMeltLimits};
@@ -14,8 +13,8 @@ use ln_regtest_rs::bitcoind::Bitcoind;
1413
use ln_regtest_rs::cln::Clnd;
1514
use ln_regtest_rs::ln_client::{ClnClient, LightningClient, LndClient};
1615
use ln_regtest_rs::lnd::Lnd;
17-
use tokio::sync::Notify;
18-
use tower_http::cors::CorsLayer;
16+
17+
use crate::init_mint::start_mint;
1918

2019
const BITCOIND_ADDR: &str = "127.0.0.1:18443";
2120
const ZMQ_RAW_BLOCK: &str = "tcp://127.0.0.1:28332";
@@ -172,29 +171,7 @@ where
172171

173172
let mint = mint_builder.build().await?;
174173

175-
let mint_arc = Arc::new(mint);
176-
177-
let v1_service = cdk_axum::create_mint_router(Arc::clone(&mint_arc))
178-
.await
179-
.unwrap();
180-
181-
let mint_service = Router::new()
182-
.merge(v1_service)
183-
.layer(CorsLayer::permissive());
184-
185-
let mint = Arc::clone(&mint_arc);
186-
187-
let shutdown = Arc::new(Notify::new());
188-
189-
tokio::spawn({
190-
let shutdown = Arc::clone(&shutdown);
191-
async move { mint.wait_for_paid_invoices(shutdown).await }
192-
});
193-
194-
println!("Staring Axum server");
195-
axum::Server::bind(&format!("{}:{}", addr, port).as_str().parse().unwrap())
196-
.serve(mint_service.into_make_service())
197-
.await?;
174+
start_mint(addr, port, mint).await?;
198175

199176
Ok(())
200177
}

crates/cdk-integration-tests/src/lib.rs

Lines changed: 5 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,26 @@ use std::str::FromStr;
33
use std::sync::Arc;
44

55
use anyhow::{bail, Result};
6-
use axum::Router;
7-
use bip39::Mnemonic;
86
use cdk::amount::{Amount, SplitTarget};
9-
use cdk::cdk_database::mint_memory::MintMemoryDatabase;
107
use cdk::cdk_lightning::MintLightning;
118
use cdk::dhke::construct_proofs;
129
use cdk::mint::FeeReserve;
1310
use cdk::mint_url::MintUrl;
1411
use cdk::nuts::nut00::ProofsMethods;
1512
use cdk::nuts::nut17::Params;
1613
use cdk::nuts::{
17-
CurrencyUnit, Id, KeySet, MintBolt11Request, MintInfo, MintQuoteBolt11Request, MintQuoteState,
18-
NotificationPayload, Nuts, PaymentMethod, PreMintSecrets, Proofs, State,
14+
CurrencyUnit, Id, KeySet, MintBolt11Request, MintQuoteBolt11Request, MintQuoteState,
15+
NotificationPayload, PaymentMethod, PreMintSecrets, Proofs, State,
1916
};
20-
use cdk::types::{LnKey, QuoteTTL};
17+
use cdk::types::LnKey;
2118
use cdk::wallet::client::{HttpClient, MintConnector};
2219
use cdk::wallet::subscription::SubscriptionManager;
2320
use cdk::wallet::WalletSubscription;
24-
use cdk::{Mint, Wallet};
21+
use cdk::Wallet;
2522
use cdk_fake_wallet::FakeWallet;
26-
use init_regtest::{get_mint_addr, get_mint_port, get_mint_url};
27-
use tokio::sync::Notify;
28-
use tower_http::cors::CorsLayer;
2923

3024
pub mod init_fake_wallet;
25+
pub mod init_mint;
3126
pub mod init_regtest;
3227

3328
pub fn create_backends_fake_wallet(
@@ -54,68 +49,6 @@ pub fn create_backends_fake_wallet(
5449
ln_backends
5550
}
5651

57-
pub async fn start_mint(
58-
ln_backends: HashMap<
59-
LnKey,
60-
Arc<dyn MintLightning<Err = cdk::cdk_lightning::Error> + Sync + Send>,
61-
>,
62-
supported_units: HashMap<CurrencyUnit, (u64, u8)>,
63-
) -> Result<()> {
64-
let nuts = Nuts::new()
65-
.nut07(true)
66-
.nut08(true)
67-
.nut09(true)
68-
.nut10(true)
69-
.nut11(true)
70-
.nut12(true)
71-
.nut14(true);
72-
73-
let mint_info = MintInfo::new().nuts(nuts);
74-
75-
let mnemonic = Mnemonic::generate(12)?;
76-
77-
let quote_ttl = QuoteTTL::new(10000, 10000);
78-
79-
let mint = Mint::new(
80-
&get_mint_url(),
81-
&mnemonic.to_seed_normalized(""),
82-
mint_info,
83-
quote_ttl,
84-
Arc::new(MintMemoryDatabase::default()),
85-
ln_backends.clone(),
86-
supported_units,
87-
HashMap::new(),
88-
)
89-
.await?;
90-
91-
let mint_arc = Arc::new(mint);
92-
93-
let v1_service = cdk_axum::create_mint_router(Arc::clone(&mint_arc)).await?;
94-
95-
let mint_service = Router::new()
96-
.merge(v1_service)
97-
.layer(CorsLayer::permissive());
98-
99-
let mint = Arc::clone(&mint_arc);
100-
101-
let shutdown = Arc::new(Notify::new());
102-
103-
tokio::spawn({
104-
let shutdown = Arc::clone(&shutdown);
105-
async move { mint.wait_for_paid_invoices(shutdown).await }
106-
});
107-
108-
axum::Server::bind(
109-
&format!("{}:{}", get_mint_addr(), get_mint_port())
110-
.as_str()
111-
.parse()?,
112-
)
113-
.serve(mint_service.into_make_service())
114-
.await?;
115-
116-
Ok(())
117-
}
118-
11952
pub async fn wallet_mint(
12053
wallet: Arc<Wallet>,
12154
amount: Amount,

0 commit comments

Comments
 (0)