Skip to content

Commit 6e42f32

Browse files
This PR refactors several address registration and multisig tests to align with the new
1 parent 323a2a5 commit 6e42f32

File tree

1 file changed

+71
-93
lines changed

1 file changed

+71
-93
lines changed

cardano_node_tests/tests/test_addr_registration.py

Lines changed: 71 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)