Skip to content

Commit e441e12

Browse files
authored
Merge pull request #200 from algorandfoundation/pr-feedback
Pr feedback
2 parents 9d40782 + 3ac6f02 commit e441e12

File tree

6 files changed

+670
-1099
lines changed

6 files changed

+670
-1099
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
use crate::{Address, AssetFreezeTransactionBuilder, Byte32, TransactionHeaderBuilder};
2+
use base64::{prelude::BASE64_STANDARD, Engine};
3+
4+
pub struct AssetFreezeTransactionMother {}
5+
6+
impl AssetFreezeTransactionMother {
7+
pub fn asset_freeze() -> AssetFreezeTransactionBuilder {
8+
// mainnet-2XFGVOHMFYLAWBHOSIOI67PBT5LDRHBTD3VLX5EYBDTFNVKMCJIA
9+
let sender = "E4A6FVIHXSZ3F7QXRCOTYDDILVQYEBFH56HYDIIYX4SVXS2QX5GUTBVZHY"
10+
.parse::<Address>()
11+
.unwrap();
12+
let freeze_address = "ZJU3X2B2QN3BUBIJ64JZ565V363ANGBUDOLXAJHDXGIIMYK6WV3NSNCBQQ"
13+
.parse::<Address>()
14+
.unwrap();
15+
let genesis_hash: Byte32 = BASE64_STANDARD
16+
.decode("wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=")
17+
.unwrap()
18+
.try_into()
19+
.unwrap();
20+
let note = BASE64_STANDARD
21+
.decode("TkZUIGZyZWV6ZWQgYnkgbG9mdHkuYWk=")
22+
.unwrap();
23+
let group = BASE64_STANDARD
24+
.decode("xERjxVTlNb8jeHa16qmpxDMh4+dcDCokO69QnNESbFk=")
25+
.unwrap()
26+
.try_into()
27+
.unwrap();
28+
29+
AssetFreezeTransactionBuilder::default()
30+
.header(
31+
TransactionHeaderBuilder::default()
32+
.sender(sender)
33+
.fee(1000)
34+
.first_valid(37463562)
35+
.last_valid(37464562)
36+
.genesis_hash(genesis_hash)
37+
.genesis_id("mainnet-v1.0".to_string())
38+
.note(note)
39+
.group(group)
40+
.build()
41+
.unwrap(),
42+
)
43+
.asset_id(1707148495)
44+
.freeze_target(freeze_address)
45+
.frozen(true)
46+
.to_owned()
47+
}
48+
49+
pub fn asset_unfreeze() -> AssetFreezeTransactionBuilder {
50+
// testnet-LZ2ODDAT4ATAVJUEQW34DIKMPCMBXCCHOSIYKMWGBPEVNHLSEV2A
51+
let sender = "WLH5LELVSEVQL45LBRQYCLJAX6KQPGWUY5WHJXVRV2NPYZUBQAFPH22Q7A"
52+
.parse::<Address>()
53+
.unwrap();
54+
let freeze_address = "ZYQX7BZ6LGTD7UCS7J5RVEAKHUJPK3FNJFZV2GPUYS2TFIADVFHDBKTN7I"
55+
.parse::<Address>()
56+
.unwrap();
57+
let genesis_hash: Byte32 = BASE64_STANDARD
58+
.decode("SGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9/cOUJOiI=")
59+
.unwrap()
60+
.try_into()
61+
.unwrap();
62+
let note = BASE64_STANDARD.decode("th4JDxFROQw=").unwrap();
63+
64+
AssetFreezeTransactionBuilder::default()
65+
.header(
66+
TransactionHeaderBuilder::default()
67+
.sender(sender)
68+
.fee(1000)
69+
.first_valid(3277583)
70+
.last_valid(3278583)
71+
.genesis_hash(genesis_hash)
72+
.note(note)
73+
.build()
74+
.unwrap(),
75+
)
76+
.asset_id(185)
77+
.freeze_target(freeze_address)
78+
.frozen(false)
79+
.to_owned()
80+
}
81+
}

crates/algokit_transact/src/test_utils/mod.rs

Lines changed: 19 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
mod application_call;
22
mod asset_config;
3+
mod asset_freeze;
34
mod key_registration;
45

56
use crate::{
6-
transactions::{
7-
AssetFreezeTransactionBuilder, AssetTransferTransactionBuilder, PaymentTransactionBuilder,
8-
},
7+
transactions::{AssetTransferTransactionBuilder, PaymentTransactionBuilder},
98
Address, AlgorandMsgpack, Byte32, SignedTransaction, Transaction, TransactionHeaderBuilder,
109
TransactionId, ALGORAND_PUBLIC_KEY_BYTE_LENGTH, HASH_BYTES_LENGTH,
1110
};
@@ -19,6 +18,7 @@ use std::{fs::File, str::FromStr};
1918

2019
pub use application_call::ApplicationCallTransactionMother;
2120
pub use asset_config::AssetConfigTransactionMother;
21+
pub use asset_freeze::AssetFreezeTransactionMother;
2222
pub use key_registration::KeyRegistrationTransactionMother;
2323

2424
pub struct TransactionHeaderMother {}
@@ -160,90 +160,6 @@ impl TransactionMother {
160160
.receiver(AddressMother::neil())
161161
.to_owned()
162162
}
163-
164-
pub fn asset_freeze() -> AssetFreezeTransactionBuilder {
165-
// mainnet-2XFGVOHMFYLAWBHOSIOI67PBT5LDRHBTD3VLX5EYBDTFNVKMCJIA
166-
let sender = "E4A6FVIHXSZ3F7QXRCOTYDDILVQYEBFH56HYDIIYX4SVXS2QX5GUTBVZHY"
167-
.parse::<Address>()
168-
.unwrap();
169-
let freeze_address = "ZJU3X2B2QN3BUBIJ64JZ565V363ANGBUDOLXAJHDXGIIMYK6WV3NSNCBQQ"
170-
.parse::<Address>()
171-
.unwrap();
172-
let genesis_hash: Byte32 = BASE64_STANDARD
173-
.decode("wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=")
174-
.unwrap()
175-
.try_into()
176-
.unwrap();
177-
let note = BASE64_STANDARD
178-
.decode("TkZUIGZyZWV6ZWQgYnkgbG9mdHkuYWk=")
179-
.unwrap();
180-
let group = BASE64_STANDARD
181-
.decode("xERjxVTlNb8jeHa16qmpxDMh4+dcDCokO69QnNESbFk=")
182-
.unwrap()
183-
.try_into()
184-
.unwrap();
185-
186-
AssetFreezeTransactionBuilder::default()
187-
.header(
188-
TransactionHeaderBuilder::default()
189-
.sender(sender)
190-
.fee(1000)
191-
.first_valid(37463562)
192-
.last_valid(37464562)
193-
.genesis_hash(genesis_hash)
194-
.genesis_id("mainnet-v1.0".to_string())
195-
.note(note)
196-
.group(group)
197-
.build()
198-
.unwrap(),
199-
)
200-
.asset_id(1707148495)
201-
.freeze_target(freeze_address)
202-
.frozen(true)
203-
.to_owned()
204-
}
205-
206-
pub fn asset_unfreeze() -> AssetFreezeTransactionBuilder {
207-
// Same as asset_freeze but with frozen=false
208-
let sender = "E4A6FVIHXSZ3F7QXRCOTYDDILVQYEBFH56HYDIIYX4SVXS2QX5GUTBVZHY"
209-
.parse::<Address>()
210-
.unwrap();
211-
let freeze_address = "ZJU3X2B2QN3BUBIJ64JZ565V363ANGBUDOLXAJHDXGIIMYK6WV3NSNCBQQ"
212-
.parse::<Address>()
213-
.unwrap();
214-
let genesis_hash: Byte32 = BASE64_STANDARD
215-
.decode("wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=")
216-
.unwrap()
217-
.try_into()
218-
.unwrap();
219-
let note = BASE64_STANDARD
220-
.decode("TkZUIGZyZWV6ZWQgYnkgbG9mdHkuYWk=")
221-
.unwrap();
222-
let group = BASE64_STANDARD
223-
.decode("xERjxVTlNb8jeHa16qmpxDMh4+dcDCokO69QnNESbFk=")
224-
.unwrap()
225-
.try_into()
226-
.unwrap();
227-
228-
AssetFreezeTransactionBuilder::default()
229-
.header(
230-
TransactionHeaderBuilder::default()
231-
.sender(sender)
232-
.fee(1000)
233-
.first_valid(37463562)
234-
.last_valid(37464562)
235-
.genesis_hash(genesis_hash)
236-
.genesis_id("mainnet-v1.0".to_string())
237-
.note(note)
238-
.group(group)
239-
.build()
240-
.unwrap(),
241-
)
242-
.asset_id(1707148495)
243-
.freeze_target(freeze_address)
244-
.frozen(false)
245-
.to_owned()
246-
}
247163
}
248164

249165
pub struct AddressMother {}
@@ -501,7 +417,9 @@ impl TestDataMother {
501417
2, 205, 103, 33, 67, 14, 82, 196, 115, 196, 206, 254, 50, 110, 63, 182, 149, 229, 184,
502418
216, 93, 11, 13, 99, 69, 213, 218, 165, 134, 118, 47, 44,
503419
];
504-
let transaction = TransactionMother::asset_freeze().build().unwrap();
420+
let transaction = AssetFreezeTransactionMother::asset_freeze()
421+
.build()
422+
.unwrap();
505423
TransactionTestData::new(transaction, signing_private_key)
506424
}
507425

@@ -510,7 +428,9 @@ impl TestDataMother {
510428
2, 205, 103, 33, 67, 14, 82, 196, 115, 196, 206, 254, 50, 110, 63, 182, 149, 229, 184,
511429
216, 93, 11, 13, 99, 69, 213, 218, 165, 134, 118, 47, 44,
512430
];
513-
let transaction = TransactionMother::asset_unfreeze().build().unwrap();
431+
let transaction = AssetFreezeTransactionMother::asset_unfreeze()
432+
.build()
433+
.unwrap();
514434
TransactionTestData::new(transaction, signing_private_key)
515435
}
516436

@@ -554,17 +474,12 @@ fn normalise_json(value: serde_json::Value) -> serde_json::Value {
554474
"num_uints",
555475
];
556476

557-
// Boolean fields that should always be included, even when false
558-
const BOOLEAN_FIELDS_TO_KEEP: &[&str] = &["frozen"];
559-
560477
match value {
561478
serde_json::Value::Object(map) => serde_json::Value::Object(
562479
map.into_iter()
563480
.filter(|(k, v)| {
564481
!(v.is_null()
565-
|| v.is_boolean()
566-
&& v.as_bool() == Some(false)
567-
&& !BOOLEAN_FIELDS_TO_KEEP.contains(&k.to_case(Case::Snake).as_str())
482+
|| v.is_boolean() && v.as_bool() == Some(false)
568483
|| v.is_number()
569484
&& v.as_u64() == Some(0)
570485
&& !ZERO_VALUE_EXCLUDED_FIELDS
@@ -708,4 +623,13 @@ mod tests {
708623
String::from("2XFGVOHMFYLAWBHOSIOI67PBT5LDRHBTD3VLX5EYBDTFNVKMCJIA")
709624
);
710625
}
626+
627+
#[test]
628+
fn test_asset_unfreeze_snapshot() {
629+
let data = TestDataMother::asset_unfreeze();
630+
assert_eq!(
631+
data.id,
632+
String::from("LZ2ODDAT4ATAVJUEQW34DIKMPCMBXCCHOSIYKMWGBPEVNHLSEV2A")
633+
);
634+
}
711635
}

0 commit comments

Comments
 (0)