@@ -150,11 +150,6 @@ impl Encoder {
150150 self . networks . clear ( ) ;
151151 self . compressed . push ( CompressedMessage :: Reset ) ;
152152 }
153- Message :: ChangeOwnership { new_owner_address } => {
154- self . compressed . push ( CompressedMessage :: ChangeOwnership {
155- new_owner_address : * new_owner_address,
156- } ) ;
157- }
158153 Message :: RegisterNetworksAndAliases { remove, add } => {
159154 for index in remove {
160155 self . remove_network ( * index) ;
@@ -169,6 +164,20 @@ impl Encoder {
169164 add : add. clone ( ) ,
170165 } ) ;
171166 }
167+ Message :: ChangePermissions {
168+ address,
169+ valid_through,
170+ permissions,
171+ } => {
172+ self . compressed . push ( CompressedMessage :: ChangePermissions {
173+ address : * address,
174+ valid_through : * valid_through,
175+ permissions : permissions
176+ . iter ( )
177+ . map ( |x| Message :: str_to_u64 ( x. as_str ( ) ) )
178+ . collect ( ) ,
179+ } ) ;
180+ }
172181 } ;
173182 Ok ( ( ) )
174183 }
@@ -451,4 +460,39 @@ mod tests {
451460 assert_ne ! ( networks_before, encoder. networks) ;
452461 assert_ne ! ( encoder. networks. last( ) . unwrap( ) . 1 . block_delta, 0 ) ;
453462 }
463+
464+ #[ test]
465+ fn change_permissions_message ( ) {
466+ let mut encoder = Encoder :: new ( CURRENT_ENCODING_VERSION , vec ! [ ] ) . unwrap ( ) ;
467+
468+ let test_permissions = vec ! [
469+ "RegisterNetworksAndAliasesMessage" . to_string( ) ,
470+ "CorrectEpochsMessage" . to_string( ) ,
471+ ] ;
472+
473+ let result_permissions = vec ! [ 6 , 1 ] ;
474+
475+ let compressed = encoder
476+ . compress ( & [ Message :: ChangePermissions {
477+ address : [ 1u8 ; 20 ] ,
478+ valid_through : 123u64 ,
479+ permissions : test_permissions. clone ( ) ,
480+ } ] )
481+ . unwrap ( ) ;
482+
483+ assert_eq ! ( compressed. len( ) , 1 ) ;
484+
485+ match & compressed[ 0 ] {
486+ CompressedMessage :: ChangePermissions {
487+ address,
488+ valid_through,
489+ permissions,
490+ } => {
491+ assert_eq ! ( * address, [ 1u8 ; 20 ] ) ;
492+ assert_eq ! ( * valid_through, 123u64 ) ;
493+ assert_eq ! ( * permissions, result_permissions) ;
494+ }
495+ _ => panic ! ( "Expected ChangePermissions message" ) ,
496+ }
497+ }
454498}
0 commit comments