Skip to content

Commit c7ca0b1

Browse files
support mock_all_auths_allowing_non_root_auth in client
1 parent 54b94fa commit c7ca0b1

File tree

3 files changed

+141
-2
lines changed

3 files changed

+141
-2
lines changed

soroban-sdk-macros/src/derive_client.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,11 @@ pub fn derive_client_impl(crate_path: &Path, name: &str, fns: &[syn_ext::Fn]) ->
304304
self.env.mock_auths(mock_auths);
305305
}
306306
if self.mock_all_auths {
307-
self.env.mock_all_auths();
307+
if self.allow_non_root_auth {
308+
self.env.mock_all_auths_allowing_non_root_auth();
309+
} else {
310+
self.env.mock_all_auths();
311+
}
308312
}
309313
}
310314
use #crate_path::{IntoVal,FromVal};

soroban-sdk/src/tests/token_client.rs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,31 @@ fn test_mock_all_auth() {
110110
);
111111

112112
assert_eq!(client.allowance(&from, &spender), 20);
113+
114+
// Also test `try_` with `mock_all_auths_allowing_non_root_auth` succeeds.
115+
let from2 = Address::generate(&env);
116+
assert!(client
117+
.mock_all_auths_allowing_non_root_auth()
118+
.try_approve(&from2, &spender, &30, &200)
119+
.is_ok());
120+
121+
let auths = env.auths();
122+
assert_eq!(
123+
auths,
124+
std::vec![(
125+
from2.clone(),
126+
AuthorizedInvocation {
127+
function: AuthorizedFunction::Contract((
128+
token_contract_id.clone(),
129+
Symbol::new(&env, "approve"),
130+
(&from2, &spender, 30_i128, 200_u32).into_val(&env)
131+
)),
132+
sub_invocations: std::vec![]
133+
}
134+
)]
135+
);
136+
137+
assert_eq!(client.allowance(&from2, &spender), 30);
113138
}
114139

115140
#[test]

soroban-sdk/test_snapshots/tests/token_client/test_mock_all_auth.1.json

Lines changed: 111 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"generators": {
3-
"address": 5,
3+
"address": 6,
44
"nonce": 0,
55
"mux_id": 0
66
},
@@ -57,6 +57,35 @@
5757
}
5858
]
5959
],
60+
[],
61+
[
62+
[
63+
"CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4",
64+
{
65+
"function": {
66+
"contract_fn": {
67+
"contract_address": "CBEPDNVYXQGWB5YUBXKJWYJA7OXTZW5LFLNO5JRRGE6Z6C5OSUZPCCEL",
68+
"function_name": "approve",
69+
"args": [
70+
{
71+
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
72+
},
73+
{
74+
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
75+
},
76+
{
77+
"i128": "30"
78+
},
79+
{
80+
"u32": 200
81+
}
82+
]
83+
}
84+
},
85+
"sub_invocations": []
86+
}
87+
]
88+
],
6089
[]
6190
],
6291
"ledger": {
@@ -177,6 +206,26 @@
177206
},
178207
"live_until": 6311999
179208
},
209+
{
210+
"entry": {
211+
"last_modified_ledger_seq": 0,
212+
"data": {
213+
"contract_data": {
214+
"ext": "v0",
215+
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4",
216+
"key": {
217+
"ledger_key_nonce": {
218+
"nonce": "1033654523790656264"
219+
}
220+
},
221+
"durability": "temporary",
222+
"val": "void"
223+
}
224+
},
225+
"ext": "v0"
226+
},
227+
"live_until": 6311999
228+
},
180229
{
181230
"entry": {
182231
"last_modified_ledger_seq": 0,
@@ -238,6 +287,67 @@
238287
},
239288
"live_until": 200
240289
},
290+
{
291+
"entry": {
292+
"last_modified_ledger_seq": 0,
293+
"data": {
294+
"contract_data": {
295+
"ext": "v0",
296+
"contract": "CBEPDNVYXQGWB5YUBXKJWYJA7OXTZW5LFLNO5JRRGE6Z6C5OSUZPCCEL",
297+
"key": {
298+
"vec": [
299+
{
300+
"symbol": "Allowance"
301+
},
302+
{
303+
"map": [
304+
{
305+
"key": {
306+
"symbol": "from"
307+
},
308+
"val": {
309+
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
310+
}
311+
},
312+
{
313+
"key": {
314+
"symbol": "spender"
315+
},
316+
"val": {
317+
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
318+
}
319+
}
320+
]
321+
}
322+
]
323+
},
324+
"durability": "temporary",
325+
"val": {
326+
"map": [
327+
{
328+
"key": {
329+
"symbol": "amount"
330+
},
331+
"val": {
332+
"i128": "30"
333+
}
334+
},
335+
{
336+
"key": {
337+
"symbol": "live_until_ledger"
338+
},
339+
"val": {
340+
"u32": 200
341+
}
342+
}
343+
]
344+
}
345+
}
346+
},
347+
"ext": "v0"
348+
},
349+
"live_until": 200
350+
},
241351
{
242352
"entry": {
243353
"last_modified_ledger_seq": 0,

0 commit comments

Comments
 (0)