Skip to content

Commit ab3cf2a

Browse files
author
Nikita Khateev
committed
Add tests for get_utxo and add_request_fees
Signed-off-by: Nikita Khateev <[email protected]>
1 parent 68eb381 commit ab3cf2a

File tree

2 files changed

+117
-53
lines changed

2 files changed

+117
-53
lines changed

libnullpay/tests/payments.rs

Lines changed: 103 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -72,98 +72,156 @@ mod high_cases {
7272
}
7373
}
7474

75-
mod fees {
75+
mod get_utxo {
7676
use super::*;
7777

7878
#[test]
79-
pub fn set_request_fees_works() {
79+
pub fn get_utxo_works() {
8080
test_utils::cleanup_storage();
8181
plugin::init_plugin();
8282
let wallet_handle = wallet::create_and_open_wallet(POOL_NAME, None).unwrap();
8383
let pool_handle = pool::create_and_open_pool_ledger(POOL_NAME).unwrap();
8484

85-
let fees_req = payments::build_set_txn_fees_req(wallet_handle, SUBMITTER_DID, PAYMENT_METHOD_NAME, FEES).unwrap();
86-
let fees_resp = ledger::submit_request(pool_handle, fees_req.as_str()).unwrap();
85+
let addresses = payments_utils::create_addresses(vec!["{}", "{}"], wallet_handle, PAYMENT_METHOD_NAME);
86+
let mint: Vec<(String, i32, Option<&str>)> = addresses.clone().into_iter().enumerate().map(|(i, addr)| (addr, (i+1) as i32, None)).collect();
8787

88-
let fees_stored = payments_utils::get_request_fees(wallet_handle, pool_handle, SUBMITTER_DID, PAYMENT_METHOD_NAME);
88+
payments_utils::mint_tokens(mint, wallet_handle, pool_handle, PAYMENT_METHOD_NAME, SUBMITTER_DID);
8989

90-
let fee_1 = fees_stored.get("1").unwrap();
91-
assert_eq!(fee_1, &1);
92-
let fee_2 = fees_stored.get("101").unwrap();
93-
assert_eq!(fee_2, &2);
90+
let (req_utxo_1, payment_method) = payments::build_get_utxo_request(wallet_handle, SUBMITTER_DID, addresses.get(0).unwrap().as_str()).unwrap();
91+
let resp_utxo_1 = ledger::submit_request(pool_handle, req_utxo_1.as_str()).unwrap();
92+
let resp_utxo_1 = payments::parse_get_utxo_response(payment_method.as_str(), resp_utxo_1.as_str()).unwrap();
93+
94+
let (req_utxo_2, payment_method) = payments::build_get_utxo_request(wallet_handle, SUBMITTER_DID, addresses.get(1).unwrap().as_str()).unwrap();
95+
let resp_utxo_2 = ledger::submit_request(pool_handle, req_utxo_2.as_str()).unwrap();
96+
let resp_utxo_2 = payments::parse_get_utxo_response(payment_method.as_str(), resp_utxo_2.as_str()).unwrap();
97+
98+
let utxos_1: Vec<UTXOInfo> = serde_json::from_str(resp_utxo_1.as_str()).unwrap();
99+
assert_eq!(utxos_1.len(), 1);
100+
let utxo_info: &UTXOInfo = utxos_1.get(0).unwrap();
101+
assert_eq!(utxo_info.amount, 1);
102+
103+
let utxos_2: Vec<UTXOInfo> = serde_json::from_str(resp_utxo_2.as_str()).unwrap();
104+
assert_eq!(utxos_2.len(), 1);
105+
let utxo_info: &UTXOInfo = utxos_2.get(0).unwrap();
106+
assert_eq!(utxo_info.amount, 2);
94107

95108
pool::close(pool_handle).unwrap();
96109
wallet::close_wallet(wallet_handle).unwrap();
97110
test_utils::cleanup_storage();
98111
}
112+
}
113+
114+
mod mint {
115+
use super::*;
99116

100117
#[test]
101-
pub fn get_request_fees_works() {
118+
pub fn mint_works() {
102119
test_utils::cleanup_storage();
103120
plugin::init_plugin();
104121
let wallet_handle = wallet::create_and_open_wallet(POOL_NAME, None).unwrap();
105122
let pool_handle = pool::create_and_open_pool_ledger(POOL_NAME).unwrap();
106123

107-
payments_utils::set_request_fees(wallet_handle, pool_handle, SUBMITTER_DID, PAYMENT_METHOD_NAME, FEES);
124+
let addresses = payments_utils::create_addresses(vec!["{}", "{}"], wallet_handle, PAYMENT_METHOD_NAME);
125+
let mint: Vec<UTXOOutput> = addresses.clone().into_iter().enumerate().map(|(i, payment_address)| UTXOOutput {
126+
payment_address,
127+
amount: ((i+1)*10) as i32,
128+
extra: None
129+
}).collect();
108130

109-
let req = payments::build_get_txn_fees_req(wallet_handle, SUBMITTER_DID, PAYMENT_METHOD_NAME).unwrap();
110-
let resp = ledger::submit_request(pool_handle, req.as_str()).unwrap();
111-
let resp = payments::parse_get_utxo_response(PAYMENT_METHOD_NAME, resp.as_str()).unwrap();
112-
let map = serde_json::from_str::<HashMap<String, i32>>(resp.as_str()).unwrap();
131+
let outputs = serde_json::to_string(&mint).unwrap();
113132

114-
let fee_1 = map.get("1").unwrap();
115-
assert_eq!(fee_1, &1);
116-
let fee_2 = map.get("101").unwrap();
117-
assert_eq!(fee_2, &2);
133+
let (req, payment_method) = payments::build_mint_req(wallet_handle, SUBMITTER_DID, outputs.as_str()).unwrap();
134+
135+
let mint_resp = ledger::submit_request(pool_handle, req.as_str()).unwrap();
136+
137+
let utxos = payments_utils::get_utxos_with_balance(addresses.clone(), wallet_handle, pool_handle,SUBMITTER_DID);
138+
139+
let utxo_1 = utxos.get(addresses.get(0).unwrap()).unwrap();
140+
assert_eq!(utxo_1.len(), 1);
141+
let utxo_info: &UTXOInfo = utxo_1.get(0).unwrap();
142+
assert_eq!(utxo_info.amount, 10);
143+
144+
let utxo_2 = utxos.get(addresses.get(1).unwrap()).unwrap();
145+
assert_eq!(utxo_2.len(), 1);
146+
let utxo_info: &UTXOInfo = utxo_2.get(0).unwrap();
147+
assert_eq!(utxo_info.amount, 20);
118148

119149
pool::close(pool_handle).unwrap();
120150
wallet::close_wallet(wallet_handle).unwrap();
121151
test_utils::cleanup_storage();
122152
}
123153
}
124154

125-
mod mint {
155+
mod add_request_fees {
126156
use super::*;
127157

128158
#[test]
129-
pub fn mint_works() {
159+
pub fn add_request_fees_works() {
130160
test_utils::cleanup_storage();
131161
plugin::init_plugin();
132162
let wallet_handle = wallet::create_and_open_wallet(POOL_NAME, None).unwrap();
133163
let pool_handle = pool::create_and_open_pool_ledger(POOL_NAME).unwrap();
134164

135-
let payment_address_1 = payments::create_payment_address(wallet_handle, PAYMENT_METHOD_NAME, EMPTY_OBJECT).unwrap();
136-
let payment_address_2 = payments::create_payment_address(wallet_handle, PAYMENT_METHOD_NAME, EMPTY_OBJECT).unwrap();
165+
let addresses = payments_utils::create_addresses(vec!["{}", "{}"], wallet_handle, PAYMENT_METHOD_NAME);
137166

138-
let mint = vec![UTXOOutput {
139-
payment_address: payment_address_1.clone(),
140-
amount: 10,
141-
extra: None,
142-
}, UTXOOutput {
143-
payment_address: payment_address_2.clone(),
144-
amount: 20,
145-
extra: None,
146-
}];
167+
let mint: Vec<(String, i32, Option<&str>)> = addresses.clone().into_iter().enumerate().map(|(i, addr)| (addr, ((i+2)*10) as i32, None)).collect();
168+
payments_utils::mint_tokens(mint, wallet_handle, pool_handle, PAYMENT_METHOD_NAME, SUBMITTER_DID);
147169

148-
let outputs = serde_json::to_string(&mint).unwrap();
170+
let utxos = payments_utils::get_utxos_with_balance(addresses, wallet_handle, pool_handle, SUBMITTER_DID);
149171

150-
let (req, payment_method) = payments::build_mint_req(wallet_handle, SUBMITTER_DID, outputs.as_str()).unwrap();
172+
payments_utils::set_request_fees(wallet_handle, pool_handle, SUBMITTER_DID, PAYMENT_METHOD_NAME, FEES);
151173

152-
assert_eq!(payment_method, "null");
174+
//TODO: add request fees
153175

154-
let mint_resp = ledger::submit_request(pool_handle, req.as_str()).unwrap();
176+
pool::close(pool_handle).unwrap();
177+
wallet::close_wallet(wallet_handle).unwrap();
178+
test_utils::cleanup_storage();
179+
}
180+
}
155181

156-
let utxos = payments_utils::get_utxos_with_balance(vec![payment_address_1.as_str(), payment_address_2.as_str()], wallet_handle, pool_handle,SUBMITTER_DID);
182+
mod fees {
183+
use super::*;
157184

158-
let utxo_1 = utxos.get(&payment_address_1).unwrap();
159-
assert_eq!(utxo_1.len(), 1);
160-
let utxo_info: &UTXOInfo = utxo_1.get(0).unwrap();
161-
assert_eq!(utxo_info.amount, 10);
185+
#[test]
186+
pub fn set_request_fees_works() {
187+
test_utils::cleanup_storage();
188+
plugin::init_plugin();
189+
let wallet_handle = wallet::create_and_open_wallet(POOL_NAME, None).unwrap();
190+
let pool_handle = pool::create_and_open_pool_ledger(POOL_NAME).unwrap();
162191

163-
let utxo_2 = utxos.get(&payment_address_2).unwrap();
164-
assert_eq!(utxo_2.len(), 1);
165-
let utxo_info: &UTXOInfo = utxo_2.get(0).unwrap();
166-
assert_eq!(utxo_info.amount, 20);
192+
let fees_req = payments::build_set_txn_fees_req(wallet_handle, SUBMITTER_DID, PAYMENT_METHOD_NAME, FEES).unwrap();
193+
let fees_resp = ledger::submit_request(pool_handle, fees_req.as_str()).unwrap();
194+
195+
let fees_stored = payments_utils::get_request_fees(wallet_handle, pool_handle, SUBMITTER_DID, PAYMENT_METHOD_NAME);
196+
197+
let fee_1 = fees_stored.get("1").unwrap();
198+
assert_eq!(fee_1, &1);
199+
let fee_2 = fees_stored.get("101").unwrap();
200+
assert_eq!(fee_2, &2);
201+
202+
pool::close(pool_handle).unwrap();
203+
wallet::close_wallet(wallet_handle).unwrap();
204+
test_utils::cleanup_storage();
205+
}
206+
207+
#[test]
208+
pub fn get_request_fees_works() {
209+
test_utils::cleanup_storage();
210+
plugin::init_plugin();
211+
let wallet_handle = wallet::create_and_open_wallet(POOL_NAME, None).unwrap();
212+
let pool_handle = pool::create_and_open_pool_ledger(POOL_NAME).unwrap();
213+
214+
payments_utils::set_request_fees(wallet_handle, pool_handle, SUBMITTER_DID, PAYMENT_METHOD_NAME, FEES);
215+
216+
let req = payments::build_get_txn_fees_req(wallet_handle, SUBMITTER_DID, PAYMENT_METHOD_NAME).unwrap();
217+
let resp = ledger::submit_request(pool_handle, req.as_str()).unwrap();
218+
let resp = payments::parse_get_utxo_response(PAYMENT_METHOD_NAME, resp.as_str()).unwrap();
219+
let map = serde_json::from_str::<HashMap<String, i32>>(resp.as_str()).unwrap();
220+
221+
let fee_1 = map.get("1").unwrap();
222+
assert_eq!(fee_1, &1);
223+
let fee_2 = map.get("101").unwrap();
224+
assert_eq!(fee_2, &2);
167225

168226
pool::close(pool_handle).unwrap();
169227
wallet::close_wallet(wallet_handle).unwrap();

libnullpay/tests/utils/payments_utils.rs

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,16 @@ use serde_json;
55
use utils::ledger;
66
use std::collections::HashMap;
77

8-
pub fn mint_tokens(addresses: Vec<(&str, i32, &str, Option<&str>)>, wallet_handle: i32, pool_handle: i32, payment_method: &str, submitter_did: &str){
9-
let mint: Vec<UTXOOutput> = addresses.into_iter().map(|(payment_address, amount, config, extra)| {
8+
pub fn create_addresses(cfgs: Vec<&str>, wallet_handle: i32, payment_method: &str) -> Vec<String> {
9+
cfgs.into_iter().map(|cfg| {
10+
payments::create_payment_address(wallet_handle, payment_method, cfg).unwrap()
11+
}).collect()
12+
}
13+
14+
pub fn mint_tokens(addresses: Vec<(String, i32, Option<&str>)>, wallet_handle: i32, pool_handle: i32, payment_method: &str, submitter_did: &str){
15+
let mint: Vec<UTXOOutput> = addresses.into_iter().map(|(payment_address, amount, extra)| {
1016
UTXOOutput {
11-
payment_address: payment_address.to_string(),
17+
payment_address: payment_address,
1218
amount,
1319
extra: extra.map(|s| s.to_string()),
1420
}
@@ -20,13 +26,13 @@ pub fn mint_tokens(addresses: Vec<(&str, i32, &str, Option<&str>)>, wallet_handl
2026
let mint_resp = ledger::submit_request(pool_handle, req.as_str()).unwrap();
2127
}
2228

23-
pub fn get_utxos_with_balance(payment_addresses: Vec<&str>, wallet_handle: i32, pool_handle: i32, submitter_did: &str) -> HashMap<String, Vec<UTXOInfo>> {
29+
pub fn get_utxos_with_balance(payment_addresses: Vec<String>, wallet_handle: i32, pool_handle: i32, submitter_did: &str) -> HashMap<String, Vec<UTXOInfo>> {
2430
payment_addresses.into_iter().map(|addr| {
25-
let (req_utxo_1, payment_method) = payments::build_get_utxo_request(wallet_handle, submitter_did, addr).unwrap();
26-
let resp_utxo_1 = ledger::submit_request(pool_handle, req_utxo_1.as_str()).unwrap();
27-
let resp_utxo_1 = payments::parse_get_utxo_response(payment_method.as_str(), resp_utxo_1.as_str()).unwrap();
31+
let (req_utxo, payment_method) = payments::build_get_utxo_request(wallet_handle, submitter_did, addr.as_str()).unwrap();
32+
let resp_utxo = ledger::submit_request(pool_handle, req_utxo.as_str()).unwrap();
33+
let resp_utxo = payments::parse_get_utxo_response(payment_method.as_str(), resp_utxo.as_str()).unwrap();
2834

29-
(addr.to_string(), serde_json::from_str::<Vec<UTXOInfo>>(resp_utxo_1.as_str()).unwrap())
35+
(addr.to_string(), serde_json::from_str::<Vec<UTXOInfo>>(resp_utxo.as_str()).unwrap())
3036
}).collect()
3137
}
3238

0 commit comments

Comments
 (0)