@@ -55,7 +55,7 @@ class TestRegisterAddr:
5555 """Tests for stake address registration and deregistration."""
5656
5757 @allure .link (helpers .get_vcs_link ())
58- @common .PARAM_USE_BUILD_CMD
58+ @common .PARAM_BUILD_METHOD
5959 @pytest .mark .smoke
6060 @pytest .mark .testnets
6161 @pytest .mark .dbsync
@@ -64,7 +64,7 @@ def test_deregister_registered(
6464 cluster : clusterlib .ClusterLib ,
6565 pool_users : list [clusterlib .PoolUser ],
6666 pool_users_disposable : list [clusterlib .PoolUser ],
67- use_build_cmd : bool ,
67+ build_method : str ,
6868 ):
6969 """Deregister a registered stake address.
7070
@@ -75,6 +75,12 @@ def test_deregister_registered(
7575 * check that the balance for source address was correctly updated
7676 * (optional) check records in db-sync
7777 """
78+
79+ # skip-known broken path
80+ if build_method == clusterlib_utils .BuildMethods .BUILD_EST :
81+ pytest .skip ("Cannot use BUILD_EST for stake address cert txs (cardano-cli #1199)" )
82+
83+
7884 temp_template = common .get_test_id (cluster )
7985
8086 user_registered = pool_users_disposable [0 ]
@@ -96,26 +102,14 @@ def test_deregister_registered(
96102 signing_key_files = [user_payment .skey_file , user_registered .stake .skey_file ],
97103 )
98104
99- if use_build_cmd :
100- tx_raw_output_reg = cluster .g_transaction .build_tx (
101- src_address = user_payment .address ,
102- tx_name = f"{ temp_template } _reg" ,
103- tx_files = tx_files_reg ,
104- fee_buffer = 2_000_000 ,
105- witness_override = len (tx_files_reg .signing_key_files ),
106- )
107- tx_signed = cluster .g_transaction .sign_tx (
108- tx_body_file = tx_raw_output_reg .out_file ,
109- signing_key_files = tx_files_reg .signing_key_files ,
110- tx_name = f"{ temp_template } _reg" ,
111- )
112- cluster .g_transaction .submit_tx (tx_file = tx_signed , txins = tx_raw_output_reg .txins )
113- else :
114- tx_raw_output_reg = cluster .g_transaction .send_tx (
115- src_address = user_payment .address ,
116- tx_name = f"{ temp_template } _reg" ,
117- tx_files = tx_files_reg ,
118- )
105+ tx_output_reg = clusterlib_utils .build_and_submit_tx (
106+ cluster_obj = cluster ,
107+ name_template = f"{ temp_template } _reg" ,
108+ src_address = user_payment .address ,
109+ tx_files = tx_files_reg ,
110+ build_method = build_method ,
111+ witness_override = len (tx_files_reg .signing_key_files ),
112+ )
119113
120114 assert cluster .g_query .get_stake_addr_info (user_registered .stake .address ).address , (
121115 f"Stake address is NOT registered: { user_registered .stake .address } "
@@ -134,35 +128,14 @@ def test_deregister_registered(
134128 signing_key_files = [user_payment .skey_file , user_registered .stake .skey_file ],
135129 )
136130
137- if use_build_cmd :
138-
139- def _build_dereg () -> clusterlib .TxRawOutput :
140- return cluster .g_transaction .build_tx (
141- src_address = user_payment .address ,
142- tx_name = f"{ temp_template } _dereg" ,
143- tx_files = tx_files_dereg ,
144- fee_buffer = 2_000_000 ,
145- witness_override = len (tx_files_dereg .signing_key_files ),
146- )
147-
148- tx_raw_output_dereg : clusterlib .TxRawOutput = common .match_blocker (func = _build_dereg )
149- tx_signed = cluster .g_transaction .sign_tx (
150- tx_body_file = tx_raw_output_dereg .out_file ,
151- signing_key_files = tx_files_dereg .signing_key_files ,
152- tx_name = f"{ temp_template } _dereg" ,
153- )
154- try :
155- cluster .g_transaction .submit_tx (tx_file = tx_signed , txins = tx_raw_output_dereg .txins )
156- except clusterlib .CLIError as exc :
157- if "ValueNotConservedUTxO" in str (exc ):
158- issues .cli_942 .finish_test ()
159- raise
160- else :
161- tx_raw_output_dereg = cluster .g_transaction .send_tx (
162- src_address = user_payment .address ,
163- tx_name = f"{ temp_template } _dereg" ,
164- tx_files = tx_files_dereg ,
165- )
131+ tx_output_dereg = clusterlib_utils .build_and_submit_tx (
132+ cluster_obj = cluster ,
133+ name_template = f"{ temp_template } _dereg" ,
134+ src_address = user_payment .address ,
135+ tx_files = tx_files_dereg ,
136+ build_method = build_method ,
137+ witness_override = len (tx_files_dereg .signing_key_files ),
138+ )
166139
167140 assert not cluster .g_query .get_stake_addr_info (user_registered .stake .address ).address , (
168141 f"Stake address is registered: { user_registered .stake .address } "
@@ -171,24 +144,26 @@ def _build_dereg() -> clusterlib.TxRawOutput:
171144 # Check that the balance for source address was correctly updated
172145 assert (
173146 cluster .g_query .get_address_balance (user_payment .address )
174- == src_init_balance - tx_raw_output_reg .fee - tx_raw_output_dereg .fee
147+ == src_init_balance - tx_output_reg .fee - tx_output_dereg .fee
175148 ), f"Incorrect balance for source address `{ user_payment .address } `"
176149
177150 # Check records in db-sync
178151 tx_db_record_reg = dbsync_utils .check_tx (
179- cluster_obj = cluster , tx_raw_output = tx_raw_output_reg
152+ cluster_obj = cluster , tx_raw_output = tx_output_reg
180153 )
181154 if tx_db_record_reg :
182155 assert user_registered .stake .address in tx_db_record_reg .stake_registration
183156
184157 tx_db_record_dereg = dbsync_utils .check_tx (
185- cluster_obj = cluster , tx_raw_output = tx_raw_output_dereg
158+ cluster_obj = cluster , tx_raw_output = tx_output_dereg
186159 )
187160 if tx_db_record_dereg :
188161 assert user_registered .stake .address in tx_db_record_dereg .stake_deregistration
189162
163+
164+
190165 @allure .link (helpers .get_vcs_link ())
191- @common .PARAM_USE_BUILD_CMD
166+ @common .PARAM_BUILD_METHOD
192167 @pytest .mark .smoke
193168 @pytest .mark .testnets
194169 @pytest .mark .dbsync
@@ -197,8 +172,14 @@ def test_addr_registration_deregistration(
197172 cluster : clusterlib .ClusterLib ,
198173 pool_users : list [clusterlib .PoolUser ],
199174 pool_users_disposable : list [clusterlib .PoolUser ],
200- use_build_cmd : bool ,
175+ build_method : str ,
201176 ):
177+
178+ # skip known-broken build_estimate
179+ if build_method == clusterlib_utils .BuildMethods .BUILD_EST :
180+ pytest .skip ("Cannot use BUILD_EST for stake address cert txs (cardano-cli #1199)" )
181+
182+
202183 """Submit registration and deregistration certificates in single TX.
203184
204185 * create stake address registration cert
@@ -240,28 +221,15 @@ def test_addr_registration_deregistration(
240221 signing_key_files = [user_payment .skey_file , user_registered .stake .skey_file ],
241222 )
242223
243- if use_build_cmd :
244- tx_raw_output = cluster .g_transaction .build_tx (
245- src_address = user_payment .address ,
246- tx_name = f"{ temp_template } _reg_dereg" ,
247- tx_files = tx_files ,
248- fee_buffer = 2_000_000 ,
249- deposit = 0 ,
250- witness_override = len (tx_files .signing_key_files ),
251- )
252- tx_signed = cluster .g_transaction .sign_tx (
253- tx_body_file = tx_raw_output .out_file ,
254- signing_key_files = tx_files .signing_key_files ,
255- tx_name = f"{ temp_template } _reg_dereg" ,
256- )
257- cluster .g_transaction .submit_tx (tx_file = tx_signed , txins = tx_raw_output .txins )
258- else :
259- tx_raw_output = cluster .g_transaction .send_tx (
260- src_address = user_payment .address ,
261- tx_name = f"{ temp_template } _reg_dereg" ,
262- tx_files = tx_files ,
263- deposit = 0 ,
264- )
224+ tx_output = clusterlib_utils .build_and_submit_tx (
225+ cluster_obj = cluster ,
226+ name_template = f"{ temp_template } _reg_dereg" ,
227+ src_address = user_payment .address ,
228+ tx_files = tx_files ,
229+ build_method = build_method ,
230+ deposit = 0 ,
231+ witness_override = len (tx_files .signing_key_files ),
232+ )
265233
266234 # Check that the stake address is not registered
267235 assert not cluster .g_query .get_stake_addr_info (user_registered .stake .address ).address , (
@@ -272,10 +240,10 @@ def test_addr_registration_deregistration(
272240 # was not needed
273241 assert (
274242 cluster .g_query .get_address_balance (user_payment .address )
275- == src_init_balance - tx_raw_output .fee
243+ == src_init_balance - tx_output .fee
276244 ), f"Incorrect balance for source address `{ user_payment .address } `"
277245
278- tx_db_record = dbsync_utils .check_tx (cluster_obj = cluster , tx_raw_output = tx_raw_output )
246+ tx_db_record = dbsync_utils .check_tx (cluster_obj = cluster , tx_raw_output = tx_output )
279247 if tx_db_record :
280248 assert user_registered .stake .address in tx_db_record .stake_registration
281249 assert user_registered .stake .address in tx_db_record .stake_deregistration
@@ -380,7 +348,7 @@ def test_addr_registration_certificate_order(
380348 assert user_registered .stake .address in tx_db_record .stake_deregistration
381349
382350 @allure .link (helpers .get_vcs_link ())
383- @common .PARAM_USE_BUILD_CMD
351+ @common .PARAM_BUILD_METHOD
384352 @pytest .mark .parametrize ("key_type" , ("stake" , "payment" ))
385353 @pytest .mark .smoke
386354 @pytest .mark .testnets
@@ -389,7 +357,7 @@ def test_multisig_deregister_registered(
389357 self ,
390358 cluster : clusterlib .ClusterLib ,
391359 pool_users : list [clusterlib .PoolUser ],
392- use_build_cmd : bool ,
360+ build_method : str ,
393361 key_type : str ,
394362 ):
395363 """Deregister a registered multisig stake address.
@@ -454,15 +422,16 @@ def test_multisig_deregister_registered(
454422 def _submit_tx (
455423 name_template : str , complex_certs : list [clusterlib .ComplexCert ]
456424 ) -> clusterlib .TxRawOutput :
457- if use_build_cmd :
425+ if build_method == clusterlib_utils . BuildMethods . BUILD :
458426 tx_output = cluster .g_transaction .build_tx (
459427 src_address = payment_addr .address ,
460428 tx_name = name_template ,
461429 complex_certs = complex_certs ,
462430 fee_buffer = 2_000_000 ,
463431 witness_override = witness_len ,
464432 )
465- else :
433+
434+ elif build_method == clusterlib_utils .BuildMethods .BUILD_RAW :
466435 fee = cluster .g_transaction .calculate_tx_fee (
467436 src_address = payment_addr .address ,
468437 tx_name = name_template ,
@@ -476,6 +445,9 @@ def _submit_tx(
476445 fee = fee ,
477446 )
478447
448+ elif build_method == clusterlib_utils .BuildMethods .BUILD_EST :
449+ pytest .skip ("Cannot use BUILD_EST for multisig stake cert txs (cardano-cli #1199)" )
450+
479451 # Create witness file for each key
480452 witness_files = [
481453 cluster .g_transaction .witness_tx (
@@ -610,15 +582,15 @@ def test_register_addr_with_wrong_key(
610582 assert "MissingVKeyWitnessesUTXOW" in err_msg , err_msg
611583
612584 @allure .link (helpers .get_vcs_link ())
613- @common .PARAM_USE_BUILD_CMD
585+ @common .PARAM_BUILD_METHOD
614586 @pytest .mark .smoke
615587 @pytest .mark .testnets
616588 def test_deregister_not_registered_addr (
617589 self ,
618590 cluster : clusterlib .ClusterLib ,
619591 pool_users : list [clusterlib .PoolUser ],
620592 pool_users_disposable : list [clusterlib .PoolUser ],
621- use_build_cmd : bool ,
593+ build_method : str ,
622594 ):
623595 """Deregister not registered stake address."""
624596 temp_template = common .get_test_id (cluster )
@@ -638,8 +610,7 @@ def test_deregister_not_registered_addr(
638610 )
639611
640612 with pytest .raises (clusterlib .CLIError ) as excinfo :
641- if use_build_cmd :
642-
613+ if build_method == clusterlib_utils .BuildMethods .BUILD_RAW :
643614 def _build_dereg () -> clusterlib .TxRawOutput :
644615 return cluster .g_transaction .build_tx (
645616 src_address = user_payment .address ,
@@ -656,25 +627,28 @@ def _build_dereg() -> clusterlib.TxRawOutput:
656627 tx_name = f"{ temp_template } _dereg_fail" ,
657628 )
658629 cluster .g_transaction .submit_tx (tx_file = tx_signed , txins = tx_raw_output .txins )
659- else :
630+ elif build_method == clusterlib_utils . BuildMethods . BUILD :
660631 cluster .g_transaction .send_tx (
661632 src_address = user_payment .address ,
662633 tx_name = f"{ temp_template } _dereg_fail" ,
663634 tx_files = tx_files ,
664635 )
636+ elif build_method == clusterlib_utils .BuildMethods .BUILD_EST :
637+ pytest .skip ("Cannot use BUILD_EST for stake address cert txs (cardano-cli #1199)" )
638+
665639 err_msg = str (excinfo .value )
666640 assert "StakeKeyNotRegisteredDELEG" in err_msg , err_msg
667641
668642 @allure .link (helpers .get_vcs_link ())
669- @common .PARAM_USE_BUILD_CMD
643+ @common .PARAM_BUILD_METHOD
670644 @pytest .mark .parametrize ("issue" , ("missing_script" , "missing_skey" ))
671645 @pytest .mark .smoke
672646 @pytest .mark .testnets
673647 def test_incomplete_multisig (
674648 self ,
675649 cluster : clusterlib .ClusterLib ,
676650 pool_users : list [clusterlib .PoolUser ],
677- use_build_cmd : bool ,
651+ build_method : str ,
678652 issue : str ,
679653 ):
680654 """Try to register a multisig stake address while missing either a script or an skey.
@@ -690,6 +664,10 @@ def test_incomplete_multisig(
690664 * Incrementally sign the Tx and submit the registration certificate
691665 * Check the expected failure
692666 """
667+
668+ if build_method == clusterlib_utils .BuildMethods .BUILD_EST :
669+ pytest .skip ("Cannot use BUILD_EST for multisig stake cert txs (cardano-cli #1199)" )
670+
693671 temp_template = common .get_test_id (cluster )
694672 payment_addr = pool_users [0 ].payment
695673
@@ -724,7 +702,7 @@ def _submit_tx(
724702 ) -> clusterlib .TxRawOutput :
725703 witness_len = len (signing_key_files )
726704
727- if use_build_cmd :
705+ if build_method == clusterlib_utils . BuildMethods . BUILD :
728706 tx_output = cluster .g_transaction .build_tx (
729707 src_address = payment_addr .address ,
730708 tx_name = name_template ,
@@ -733,7 +711,7 @@ def _submit_tx(
733711 fee_buffer = 2_000_000 ,
734712 witness_override = witness_len ,
735713 )
736- else :
714+ elif build_method == clusterlib_utils . BuildMethods . BUILD_RAW :
737715 fee = cluster .g_transaction .calculate_tx_fee (
738716 src_address = payment_addr .address ,
739717 tx_name = name_template ,
0 commit comments