Skip to content

Commit e95b0fb

Browse files
committed
add test to swap bought asset from maker
1 parent 4a3d7cd commit e95b0fb

File tree

2 files changed

+230
-0
lines changed

2 files changed

+230
-0
lines changed

src/test/mod.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -596,6 +596,28 @@ async fn issue_asset_nia(node_address: SocketAddr) -> AssetNIA {
596596
.asset
597597
}
598598

599+
async fn issue_second_asset_nia(node_address: SocketAddr) -> AssetNIA {
600+
println!("issuing second NIA asset on node {node_address}");
601+
let payload = IssueAssetNIARequest {
602+
amounts: vec![1000],
603+
ticker: s!("TEST"),
604+
name: s!("Testasset"),
605+
precision: 0,
606+
};
607+
let res = reqwest::Client::new()
608+
.post(format!("http://{node_address}/issueassetnia"))
609+
.json(&payload)
610+
.send()
611+
.await
612+
.unwrap();
613+
_check_response_is_ok(res)
614+
.await
615+
.json::<IssueAssetNIAResponse>()
616+
.await
617+
.unwrap()
618+
.asset
619+
}
620+
599621
async fn issue_asset_uda(node_address: SocketAddr, file_path: Option<&str>) -> AssetUDA {
600622
println!("issuing UDA asset on node {node_address}");
601623
let mut media_file_digest = None;
@@ -1706,6 +1728,7 @@ mod payment;
17061728
mod refuse_high_fees;
17071729
mod restart;
17081730
mod send_receive;
1731+
mod swap_bought_asset;
17091732
mod swap_reverse_same_channel;
17101733
mod swap_roundtrip_assets;
17111734
mod swap_roundtrip_buy;

src/test/swap_bought_asset.rs

Lines changed: 207 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,207 @@
1+
use super::*;
2+
3+
const TEST_DIR_BASE: &str = "tmp/swap_bought_asset/";
4+
5+
#[serial_test::serial]
6+
#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
7+
#[traced_test]
8+
async fn swap_bought_asset() {
9+
initialize();
10+
11+
let test_dir_node1 = format!("{TEST_DIR_BASE}node1");
12+
let test_dir_node2 = format!("{TEST_DIR_BASE}node2");
13+
let (node1_addr, _) = start_node(&test_dir_node1, NODE1_PEER_PORT, false).await;
14+
let (node2_addr, _) = start_node(&test_dir_node2, NODE2_PEER_PORT, false).await;
15+
16+
fund_and_create_utxos(node1_addr, None).await;
17+
fund_and_create_utxos(node2_addr, None).await;
18+
19+
let asset_id = issue_asset_nia(node1_addr).await.asset_id;
20+
let asset_id_2 = issue_second_asset_nia(node1_addr).await.asset_id;
21+
22+
let _node1_pubkey = node_info(node1_addr).await.pubkey;
23+
let node2_pubkey = node_info(node2_addr).await.pubkey;
24+
25+
let _channel_12_asset1 = open_channel(
26+
node1_addr,
27+
&node2_pubkey,
28+
Some(NODE2_PEER_PORT),
29+
Some(100000),
30+
Some(50000000),
31+
Some(600),
32+
Some(&asset_id),
33+
)
34+
.await;
35+
let _channel_12_asset2 = open_channel(
36+
node1_addr,
37+
&node2_pubkey,
38+
Some(NODE2_PEER_PORT),
39+
Some(100000),
40+
Some(50000000),
41+
Some(600),
42+
Some(&asset_id_2),
43+
)
44+
.await;
45+
46+
println!("\nsetup swap buy usdt");
47+
let maker_addr = node1_addr;
48+
let taker_addr = node2_addr;
49+
let qty_from = 25000;
50+
let qty_to = 10;
51+
let maker_init_response =
52+
maker_init(maker_addr, qty_from, None, qty_to, Some(&asset_id), 3600).await;
53+
taker(taker_addr, maker_init_response.swapstring.clone()).await;
54+
55+
let swap_maker = get_swap(maker_addr, &maker_init_response.payment_hash, false).await;
56+
assert_eq!(swap_maker.qty_from, qty_from);
57+
assert_eq!(swap_maker.qty_to, qty_to);
58+
assert_eq!(swap_maker.from_asset, None);
59+
assert_eq!(swap_maker.to_asset, Some(asset_id.clone()));
60+
assert_eq!(swap_maker.payment_hash, maker_init_response.payment_hash);
61+
assert_eq!(swap_maker.status, SwapStatus::Waiting);
62+
63+
let swap_taker = get_swap(taker_addr, &maker_init_response.payment_hash, true).await;
64+
assert_eq!(swap_taker.qty_from, qty_from);
65+
assert_eq!(swap_taker.qty_to, qty_to);
66+
assert_eq!(swap_taker.from_asset, None);
67+
assert_eq!(swap_taker.to_asset, Some(asset_id.clone()));
68+
assert_eq!(swap_taker.payment_hash, maker_init_response.payment_hash);
69+
assert_eq!(swap_taker.status, SwapStatus::Waiting);
70+
71+
println!("\nexecute swap");
72+
maker_execute(
73+
maker_addr,
74+
maker_init_response.swapstring,
75+
maker_init_response.payment_secret,
76+
node2_pubkey.clone(),
77+
)
78+
.await;
79+
80+
let swap_maker = get_swap(maker_addr, &maker_init_response.payment_hash, false).await;
81+
assert_eq!(swap_maker.status, SwapStatus::Pending);
82+
wait_for_swap_status(
83+
taker_addr,
84+
&maker_init_response.payment_hash,
85+
SwapStatus::Pending,
86+
)
87+
.await;
88+
89+
wait_for_ln_balance(maker_addr, &asset_id, 590).await;
90+
wait_for_ln_balance(taker_addr, &asset_id, 10).await;
91+
92+
let swap_maker = get_swap(maker_addr, &maker_init_response.payment_hash, false).await;
93+
assert_eq!(swap_maker.status, SwapStatus::Succeeded);
94+
let swap_taker = get_swap(taker_addr, &maker_init_response.payment_hash, true).await;
95+
assert_eq!(swap_taker.status, SwapStatus::Succeeded);
96+
97+
println!("\nsetup swap buy test");
98+
let maker_addr = node1_addr;
99+
let taker_addr = node2_addr;
100+
let qty_from = 25000;
101+
let qty_to = 10;
102+
let maker_init_response =
103+
maker_init(maker_addr, qty_from, None, qty_to, Some(&asset_id_2), 3600).await;
104+
taker(taker_addr, maker_init_response.swapstring.clone()).await;
105+
106+
let swap_maker = get_swap(maker_addr, &maker_init_response.payment_hash, false).await;
107+
assert_eq!(swap_maker.qty_from, qty_from);
108+
assert_eq!(swap_maker.qty_to, qty_to);
109+
assert_eq!(swap_maker.from_asset, None);
110+
assert_eq!(swap_maker.to_asset, Some(asset_id_2.clone()));
111+
assert_eq!(swap_maker.payment_hash, maker_init_response.payment_hash);
112+
assert_eq!(swap_maker.status, SwapStatus::Waiting);
113+
114+
let swap_taker = get_swap(taker_addr, &maker_init_response.payment_hash, true).await;
115+
assert_eq!(swap_taker.qty_from, qty_from);
116+
assert_eq!(swap_taker.qty_to, qty_to);
117+
assert_eq!(swap_taker.from_asset, None);
118+
assert_eq!(swap_taker.to_asset, Some(asset_id_2.clone()));
119+
assert_eq!(swap_taker.payment_hash, maker_init_response.payment_hash);
120+
assert_eq!(swap_taker.status, SwapStatus::Waiting);
121+
122+
println!("\nexecute swap");
123+
maker_execute(
124+
maker_addr,
125+
maker_init_response.swapstring,
126+
maker_init_response.payment_secret,
127+
node2_pubkey.clone(),
128+
)
129+
.await;
130+
131+
let swap_maker = get_swap(maker_addr, &maker_init_response.payment_hash, false).await;
132+
assert_eq!(swap_maker.status, SwapStatus::Pending);
133+
wait_for_swap_status(
134+
taker_addr,
135+
&maker_init_response.payment_hash,
136+
SwapStatus::Pending,
137+
)
138+
.await;
139+
140+
wait_for_ln_balance(maker_addr, &asset_id_2, 590).await;
141+
wait_for_ln_balance(taker_addr, &asset_id_2, 10).await;
142+
143+
let swap_maker = get_swap(maker_addr, &maker_init_response.payment_hash, false).await;
144+
assert_eq!(swap_maker.status, SwapStatus::Succeeded);
145+
let swap_taker = get_swap(taker_addr, &maker_init_response.payment_hash, true).await;
146+
assert_eq!(swap_taker.status, SwapStatus::Succeeded);
147+
148+
println!("\nsetup asset-to-asset swap: usdt to test");
149+
let maker_addr = node1_addr;
150+
let taker_addr = node2_addr;
151+
let qty_from = 5;
152+
let qty_to = 5;
153+
let maker_init_response = maker_init(
154+
maker_addr,
155+
qty_from,
156+
Some(&asset_id),
157+
qty_to,
158+
Some(&asset_id_2),
159+
3600,
160+
)
161+
.await;
162+
taker(taker_addr, maker_init_response.swapstring.clone()).await;
163+
164+
let swap_maker = get_swap(maker_addr, &maker_init_response.payment_hash, false).await;
165+
assert_eq!(swap_maker.qty_from, qty_from);
166+
assert_eq!(swap_maker.qty_to, qty_to);
167+
assert_eq!(swap_maker.from_asset, Some(asset_id.clone()));
168+
assert_eq!(swap_maker.to_asset, Some(asset_id_2.clone()));
169+
assert_eq!(swap_maker.payment_hash, maker_init_response.payment_hash);
170+
assert_eq!(swap_maker.status, SwapStatus::Waiting);
171+
172+
let swap_taker = get_swap(taker_addr, &maker_init_response.payment_hash, true).await;
173+
assert_eq!(swap_taker.qty_from, qty_from);
174+
assert_eq!(swap_taker.qty_to, qty_to);
175+
assert_eq!(swap_taker.from_asset, Some(asset_id.clone()));
176+
assert_eq!(swap_taker.to_asset, Some(asset_id_2.clone()));
177+
assert_eq!(swap_taker.payment_hash, maker_init_response.payment_hash);
178+
assert_eq!(swap_taker.status, SwapStatus::Waiting);
179+
180+
println!("\nexecute swap");
181+
maker_execute(
182+
maker_addr,
183+
maker_init_response.swapstring,
184+
maker_init_response.payment_secret,
185+
node2_pubkey.clone(),
186+
)
187+
.await;
188+
189+
let swap_maker = get_swap(maker_addr, &maker_init_response.payment_hash, false).await;
190+
assert_eq!(swap_maker.status, SwapStatus::Pending);
191+
wait_for_swap_status(
192+
taker_addr,
193+
&maker_init_response.payment_hash,
194+
SwapStatus::Pending,
195+
)
196+
.await;
197+
198+
wait_for_ln_balance(maker_addr, &asset_id, 585).await;
199+
wait_for_ln_balance(maker_addr, &asset_id_2, 595).await;
200+
wait_for_ln_balance(taker_addr, &asset_id, 15).await;
201+
wait_for_ln_balance(taker_addr, &asset_id_2, 5).await;
202+
203+
let swap_maker = get_swap(maker_addr, &maker_init_response.payment_hash, false).await;
204+
assert_eq!(swap_maker.status, SwapStatus::Succeeded);
205+
let swap_taker = get_swap(taker_addr, &maker_init_response.payment_hash, true).await;
206+
assert_eq!(swap_taker.status, SwapStatus::Succeeded);
207+
}

0 commit comments

Comments
 (0)