1
1
mod application_call;
2
2
mod asset_config;
3
+ mod asset_freeze;
3
4
mod key_registration;
4
5
5
6
use crate :: {
6
- transactions:: {
7
- AssetFreezeTransactionBuilder , AssetTransferTransactionBuilder , PaymentTransactionBuilder ,
8
- } ,
7
+ transactions:: { AssetTransferTransactionBuilder , PaymentTransactionBuilder } ,
9
8
Address , AlgorandMsgpack , Byte32 , SignedTransaction , Transaction , TransactionHeaderBuilder ,
10
9
TransactionId , ALGORAND_PUBLIC_KEY_BYTE_LENGTH , HASH_BYTES_LENGTH ,
11
10
} ;
@@ -19,6 +18,7 @@ use std::{fs::File, str::FromStr};
19
18
20
19
pub use application_call:: ApplicationCallTransactionMother ;
21
20
pub use asset_config:: AssetConfigTransactionMother ;
21
+ pub use asset_freeze:: AssetFreezeTransactionMother ;
22
22
pub use key_registration:: KeyRegistrationTransactionMother ;
23
23
24
24
pub struct TransactionHeaderMother { }
@@ -160,90 +160,6 @@ impl TransactionMother {
160
160
. receiver ( AddressMother :: neil ( ) )
161
161
. to_owned ( )
162
162
}
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
- }
247
163
}
248
164
249
165
pub struct AddressMother { }
@@ -501,7 +417,9 @@ impl TestDataMother {
501
417
2 , 205 , 103 , 33 , 67 , 14 , 82 , 196 , 115 , 196 , 206 , 254 , 50 , 110 , 63 , 182 , 149 , 229 , 184 ,
502
418
216 , 93 , 11 , 13 , 99 , 69 , 213 , 218 , 165 , 134 , 118 , 47 , 44 ,
503
419
] ;
504
- let transaction = TransactionMother :: asset_freeze ( ) . build ( ) . unwrap ( ) ;
420
+ let transaction = AssetFreezeTransactionMother :: asset_freeze ( )
421
+ . build ( )
422
+ . unwrap ( ) ;
505
423
TransactionTestData :: new ( transaction, signing_private_key)
506
424
}
507
425
@@ -510,7 +428,9 @@ impl TestDataMother {
510
428
2 , 205 , 103 , 33 , 67 , 14 , 82 , 196 , 115 , 196 , 206 , 254 , 50 , 110 , 63 , 182 , 149 , 229 , 184 ,
511
429
216 , 93 , 11 , 13 , 99 , 69 , 213 , 218 , 165 , 134 , 118 , 47 , 44 ,
512
430
] ;
513
- let transaction = TransactionMother :: asset_unfreeze ( ) . build ( ) . unwrap ( ) ;
431
+ let transaction = AssetFreezeTransactionMother :: asset_unfreeze ( )
432
+ . build ( )
433
+ . unwrap ( ) ;
514
434
TransactionTestData :: new ( transaction, signing_private_key)
515
435
}
516
436
@@ -554,17 +474,12 @@ fn normalise_json(value: serde_json::Value) -> serde_json::Value {
554
474
"num_uints" ,
555
475
] ;
556
476
557
- // Boolean fields that should always be included, even when false
558
- const BOOLEAN_FIELDS_TO_KEEP : & [ & str ] = & [ "frozen" ] ;
559
-
560
477
match value {
561
478
serde_json:: Value :: Object ( map) => serde_json:: Value :: Object (
562
479
map. into_iter ( )
563
480
. filter ( |( k, v) | {
564
481
!( 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 )
568
483
|| v. is_number ( )
569
484
&& v. as_u64 ( ) == Some ( 0 )
570
485
&& !ZERO_VALUE_EXCLUDED_FIELDS
@@ -708,4 +623,13 @@ mod tests {
708
623
String :: from( "2XFGVOHMFYLAWBHOSIOI67PBT5LDRHBTD3VLX5EYBDTFNVKMCJIA" )
709
624
) ;
710
625
}
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
+ }
711
635
}
0 commit comments