22// SPDX-License-Identifier: Apache-2.0
33
44use aptos_cached_packages:: aptos_framework_sdk_builder;
5- use aptos_language_e2e_tests:: account:: { Account , AccountData } ;
6- use aptos_language_e2e_tests:: executor:: FakeExecutor ;
7- use aptos_types:: on_chain_config:: FeatureFlag ;
8- use aptos_types:: transaction:: automation:: { AutomationTaskMetaData , RegistrationParams } ;
9- use aptos_types:: transaction:: {
10- EntryFunction , ExecutionStatus , SignedTransaction , TransactionOutput , TransactionPayload ,
11- TransactionStatus ,
5+ use aptos_language_e2e_tests:: {
6+ account:: { Account , AccountData } ,
7+ executor:: FakeExecutor ,
128} ;
13- use move_core_types:: account_address:: AccountAddress ;
14- use move_core_types:: value:: MoveValue ;
15- use move_core_types:: vm_status:: StatusCode ;
9+ use aptos_types:: {
10+ on_chain_config:: FeatureFlag ,
11+ transaction:: {
12+ automation:: { AutomationTaskMetaData , RegistrationParams } ,
13+ EntryFunction , ExecutionStatus , SignedTransaction , TransactionOutput , TransactionPayload ,
14+ TransactionStatus ,
15+ } ,
16+ } ;
17+ use move_core_types:: { account_address:: AccountAddress , value:: MoveValue , vm_status:: StatusCode } ;
1618use std:: ops:: { Deref , DerefMut } ;
1719
1820const TIMESTAMP_NOW_SECONDS : & str = "0x1::timestamp::now_seconds" ;
@@ -31,6 +33,7 @@ impl AutomationRegistrationTestContext {
3133 pub ( crate ) fn sender_account_data ( & self ) -> & AccountData {
3234 & self . txn_sender
3335 }
36+
3437 pub ( crate ) fn sender_account_address ( & self ) -> AccountAddress {
3538 * self . txn_sender . address ( )
3639 }
@@ -63,16 +66,12 @@ impl AutomationRegistrationTestContext {
6366 } else {
6467 ( vec ! [ ] , flag_value)
6568 } ;
66- self . executor . exec (
67- "features" ,
68- "change_feature_flags_internal" ,
69- vec ! [ ] ,
70- vec ! [
69+ self . executor
70+ . exec ( "features" , "change_feature_flags_internal" , vec ! [ ] , vec ! [
7171 MoveValue :: Signer ( acc) . simple_serialize( ) . unwrap( ) ,
7272 bcs:: to_bytes( & enabled) . unwrap( ) ,
7373 bcs:: to_bytes( & disabled) . unwrap( ) ,
74- ] ,
75- ) ;
74+ ] ) ;
7675 }
7776
7877 pub ( crate ) fn new_account_data ( & mut self , amount : u64 , seq_num : u64 ) -> AccountData {
@@ -124,6 +123,7 @@ impl AutomationRegistrationTestContext {
124123 _ => panic ! ( "Unexpected transaction status: {output:?}" ) ,
125124 }
126125 }
126+
127127 pub ( crate ) fn check_discarded_output (
128128 output : TransactionOutput ,
129129 expected_status_code : StatusCode ,
@@ -161,11 +161,10 @@ impl AutomationRegistrationTestContext {
161161 }
162162
163163 pub ( crate ) fn account_sequence_number ( & mut self , account_address : AccountAddress ) -> u64 {
164- let view_output = self . execute_view_function (
165- str:: parse ( ACCOUNT_SEQ_NUM ) . unwrap ( ) ,
166- vec ! [ ] ,
167- vec ! [ account_address. to_vec( ) ] ,
168- ) ;
164+ let view_output =
165+ self . execute_view_function ( str:: parse ( ACCOUNT_SEQ_NUM ) . unwrap ( ) , vec ! [ ] , vec ! [
166+ account_address. to_vec( ) ,
167+ ] ) ;
169168 let result = view_output. values . expect ( "Valid result" ) ;
170169 assert_eq ! ( result. len( ) , 1 ) ;
171170 bcs:: from_bytes :: < u64 > ( & result[ 0 ] ) . unwrap ( )
@@ -183,13 +182,12 @@ impl AutomationRegistrationTestContext {
183182 }
184183
185184 pub ( crate ) fn get_task_details ( & mut self , index : u64 ) -> AutomationTaskMetaData {
186- let view_output = self . execute_view_function (
187- str:: parse ( AUTOMATION_TASK_DETAILS ) . unwrap ( ) ,
188- vec ! [ ] ,
189- vec ! [ MoveValue :: U64 ( index)
190- . simple_serialize( )
191- . expect( "Successful serialization" ) ] ,
192- ) ;
185+ let view_output =
186+ self . execute_view_function ( str:: parse ( AUTOMATION_TASK_DETAILS ) . unwrap ( ) , vec ! [ ] , vec ! [
187+ MoveValue :: U64 ( index)
188+ . simple_serialize( )
189+ . expect( "Successful serialization" ) ,
190+ ] ) ;
193191 let result = view_output. values . expect ( "Valid result" ) ;
194192 assert ! ( !result. is_empty( ) ) ;
195193 bcs:: from_bytes :: < AutomationTaskMetaData > ( & result[ 0 ] )
@@ -237,11 +235,20 @@ fn check_successful_registration() {
237235 let sender_address = test_context. sender_account_address ( ) ;
238236 let sender_seq_num_old = test_context. account_sequence_number ( sender_address) ;
239237
240- // when flag is not enabled although registry in initialized, registration will fail.
238+ // When the SUPRA_NATIVE_AUTOMATION feature flag is not enabled registration requests must fail
239+ // to validate. This ensures that they won't be accepted by the RPC nodes or the Mempool.
240+ let validation_result = test_context. validate_transaction ( automation_txn. clone ( ) ) ;
241+ assert_eq ! (
242+ validation_result. status( ) ,
243+ Some ( StatusCode :: FEATURE_UNDER_GATING )
244+ ) ;
245+
246+ // When the SUPRA_NATIVE_AUTOMATION feature flag is not enabled registration requests must fail
247+ // to execute.
241248 let result = test_context. execute_transaction ( automation_txn. clone ( ) ) ;
242249 assert ! ( matches!(
243250 result. status( ) . status( ) ,
244- Ok ( ExecutionStatus :: MoveAbort { .. } )
251+ Err ( StatusCode :: FEATURE_UNDER_GATING )
245252 ) ) ;
246253
247254 // enable the supra native automation, registration should succeed.
0 commit comments