Skip to content

Commit a5f94d6

Browse files
committed
refactor(tck): centralize transaction receipt validation in execute_validated helper
Signed-off-by: Abhijeet Saharan <abhijeetsaharan2236@gmail.com>
1 parent 043dbb7 commit a5f94d6

9 files changed

Lines changed: 118 additions & 85 deletions

File tree

tck/handlers/account.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
from tck.util.client_utils import get_client
4242
from tck.util.constants import DEFAULT_GRPC_TIMEOUT
4343
from tck.util.key_utils import get_key_from_string, key_to_string
44+
from tck.util.transaction_utils import execute_validated
4445

4546

4647
def _build_create_account_transaction(params: CreateAccountParams) -> AccountCreateTransaction:
@@ -89,17 +90,15 @@ def create_account(params: CreateAccountParams) -> CreateAccountResponse:
8990
if params.commonTransactionParams is not None:
9091
params.commonTransactionParams.apply_common_params(transaction, client)
9192

92-
response = transaction.execute(client, wait_for_receipt=False)
93-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
93+
receipt = execute_validated(transaction, client)
9494

9595
account_id = ""
96-
if receipt.status == ResponseCode.SUCCESS:
97-
account_id = str(receipt.account_id)
96+
account_id = str(receipt.account_id)
9897

9998
return CreateAccountResponse(
10099
account_id,
101100
ResponseCode(receipt.status).name,
102-
str(response.transaction_id) if response.transaction_id is not None else None,
101+
str(receipt.transaction_id) if receipt.transaction_id is not None else None,
103102
)
104103

105104

@@ -150,8 +149,7 @@ def update_account(params: UpdateAccountParams) -> UpdateAccountResponse:
150149
if params.commonTransactionParams is not None:
151150
params.commonTransactionParams.apply_common_params(transaction, client)
152151

153-
response = transaction.execute(client, wait_for_receipt=False)
154-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
152+
receipt = execute_validated(transaction, client)
155153

156154
return UpdateAccountResponse(ResponseCode(receipt.status).name)
157155

@@ -258,8 +256,7 @@ def delete_account(params: DeleteAccountParams) -> DeleteAccountResponse:
258256
if params.commonTransactionParams is not None:
259257
params.commonTransactionParams.apply_common_params(transaction, client)
260258

261-
response = transaction.execute(client, wait_for_receipt=False)
262-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
259+
receipt = execute_validated(transaction, client)
263260

264261
return DeleteAccountResponse(status=ResponseCode(receipt.status).name)
265262

tck/handlers/allowance.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
from hiero_sdk_python.response_code import ResponseCode
1414
from hiero_sdk_python.tokens.nft_id import NftId
1515
from hiero_sdk_python.tokens.token_id import TokenId
16-
from hiero_sdk_python.transaction.transaction_receipt import TransactionReceipt
1716
from tck.handlers.registry import rpc_method
1817
from tck.param.allowance import (
1918
AllowanceEntry,
@@ -24,6 +23,7 @@
2423
from tck.response.allowance import ApproveAllowanceResponse, DeleteAllowanceResponse
2524
from tck.util.client_utils import get_client
2625
from tck.util.constants import DEFAULT_GRPC_TIMEOUT
26+
from tck.util.transaction_utils import execute_validated
2727

2828

2929
def _build_approve_allowance_transaction(
@@ -130,8 +130,7 @@ def approve_allowance(params: ApproveAllowanceParams) -> ApproveAllowanceRespons
130130
if params.commonTransactionParams is not None:
131131
params.commonTransactionParams.apply_common_params(transaction, client)
132132

133-
response = transaction.execute(client, wait_for_receipt=False)
134-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
133+
receipt = execute_validated(transaction, client)
135134

136135
return ApproveAllowanceResponse(status=ResponseCode(receipt.status).name)
137136

@@ -178,7 +177,6 @@ def delete_allowance(params: DeleteAllowanceParams) -> DeleteAllowanceResponse:
178177
if params.commonTransactionParams is not None:
179178
params.commonTransactionParams.apply_common_params(transaction, client)
180179

181-
response = transaction.execute(client, wait_for_receipt=False)
182-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
180+
receipt = execute_validated(transaction, client)
183181

184182
return DeleteAllowanceResponse(status=ResponseCode(receipt.status).name)

tck/handlers/file.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
from hiero_sdk_python.hbar import Hbar
1010
from hiero_sdk_python.response_code import ResponseCode
1111
from hiero_sdk_python.timestamp import Timestamp
12-
from hiero_sdk_python.transaction.transaction_receipt import TransactionReceipt
1312
from tck.errors import JsonRpcError
1413
from tck.handlers.registry import rpc_method
1514
from tck.param.file import CreateFileParams, DeleteFileParams, GetFileContentsParams, GetFileInfoParams
@@ -18,6 +17,7 @@
1817
from tck.util.constants import DEFAULT_GRPC_TIMEOUT
1918
from tck.util.key_utils import get_key_from_string, key_to_string
2019
from tck.util.param_utils import to_int
20+
from tck.util.transaction_utils import execute_validated
2121

2222

2323
def _build_create_file_transaction(params: CreateFileParams) -> FileCreateTransaction:
@@ -51,11 +51,10 @@ def create_file(params: CreateFileParams) -> CreateFileResponse:
5151
if params.commonTransactionParams is not None:
5252
params.commonTransactionParams.apply_common_params(transaction, client)
5353

54-
response = transaction.execute(client, wait_for_receipt=False)
55-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
54+
receipt = execute_validated(transaction, client)
5655

5756
file_id = ""
58-
if receipt.status == ResponseCode.SUCCESS and receipt.file_id is not None:
57+
if receipt.file_id is not None:
5958
file_id = str(receipt.file_id)
6059

6160
return CreateFileResponse(file_id, ResponseCode(receipt.status).name)
@@ -122,7 +121,6 @@ def delete_file(params: DeleteFileParams) -> DeleteFileResponse:
122121
if params.commonTransactionParams is not None:
123122
params.commonTransactionParams.apply_common_params(transaction, client)
124123

125-
response = transaction.execute(client, wait_for_receipt=False)
126-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
124+
receipt = execute_validated(transaction, client)
127125

128126
return DeleteFileResponse(ResponseCode(receipt.status).name)

tck/handlers/schedule.py

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
from hiero_sdk_python.schedule.schedule_sign_transaction import ScheduleSignTransaction
1212
from hiero_sdk_python.timestamp import Timestamp
1313
from hiero_sdk_python.transaction.transaction import Transaction
14-
from hiero_sdk_python.transaction.transaction_receipt import TransactionReceipt
1514
from tck.errors import JsonRpcError
1615
from tck.handlers.account import _build_create_account_transaction
1716
from tck.handlers.allowance import _build_approve_allowance_transaction
@@ -37,6 +36,7 @@
3736
from tck.util.constants import DEFAULT_GRPC_TIMEOUT
3837
from tck.util.key_utils import get_key_from_string
3938
from tck.util.param_utils import to_int
39+
from tck.util.transaction_utils import execute_validated
4040

4141

4242
# Maps a scheduled transaction method name to its params class and builder.
@@ -154,16 +154,14 @@ def create_schedule(params: CreateScheduleParams) -> CreateScheduleResponse:
154154
if params.commonTransactionParams is not None:
155155
params.commonTransactionParams.apply_common_params(transaction, client)
156156

157-
response = transaction.execute(client, wait_for_receipt=False)
158-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
157+
receipt = execute_validated(transaction, client)
159158

160159
schedule_id = ""
161160
scheduled_transaction_id = None
162-
if receipt.status == ResponseCode.SUCCESS:
163-
if receipt.schedule_id is not None:
164-
schedule_id = str(receipt.schedule_id)
165-
if receipt.scheduled_transaction_id is not None:
166-
scheduled_transaction_id = str(receipt.scheduled_transaction_id)
161+
if receipt.schedule_id is not None:
162+
schedule_id = str(receipt.schedule_id)
163+
if receipt.scheduled_transaction_id is not None:
164+
scheduled_transaction_id = str(receipt.scheduled_transaction_id)
167165

168166
return CreateScheduleResponse(schedule_id, scheduled_transaction_id, ResponseCode(receipt.status).name)
169167

@@ -188,8 +186,7 @@ def sign_schedule(params: SignScheduleParams) -> SignScheduleResponse:
188186
if common_params is not None:
189187
common_params.apply_common_params(transaction, client)
190188

191-
response = transaction.execute(client, wait_for_receipt=False)
192-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
189+
receipt = execute_validated(transaction, client)
193190

194191
return SignScheduleResponse(status=ResponseCode(receipt.status).name)
195192

@@ -204,7 +201,6 @@ def delete_schedule(params: DeleteScheduleParams) -> DeleteScheduleResponse:
204201
if params.commonTransactionParams is not None:
205202
params.commonTransactionParams.apply_common_params(transaction, client)
206203

207-
response = transaction.execute(client, wait_for_receipt=False)
208-
receipt = response.get_receipt(client, validate_status=True)
204+
receipt = execute_validated(transaction, client)
209205

210206
return DeleteScheduleResponse(status=ResponseCode(receipt.status).name)

tck/handlers/token.py

Lines changed: 19 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
from hiero_sdk_python.tokens.token_unpause_transaction import TokenUnpauseTransaction
4343
from hiero_sdk_python.tokens.token_update_transaction import TokenUpdateTransaction
4444
from hiero_sdk_python.tokens.token_wipe_transaction import TokenWipeTransaction
45-
from hiero_sdk_python.transaction.transaction_receipt import TransactionReceipt
4645
from tck.handlers.registry import rpc_method
4746
from tck.param.custom_fee import CustomFeeParams, FixedFeeParams
4847
from tck.param.token import (
@@ -94,6 +93,7 @@
9493
from tck.util.constants import DEFAULT_GRPC_TIMEOUT
9594
from tck.util.key_utils import get_key_from_string
9695
from tck.util.param_utils import to_int
96+
from tck.util.transaction_utils import execute_validated
9797

9898

9999
def _parse_hex(value: str, field_name: str) -> bytes:
@@ -252,8 +252,7 @@ def create_token(params: CreateTokenParams) -> CreateTokenResponse:
252252
if params.commonTransactionParams is not None:
253253
params.commonTransactionParams.apply_common_params(transaction, client)
254254

255-
response = transaction.execute(client, wait_for_receipt=False)
256-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
255+
receipt = execute_validated(transaction, client)
257256

258257
token_id = str(receipt.token_id) if receipt.token_id else ""
259258

@@ -305,8 +304,7 @@ def cancel_airdrop(params: CancelAirdropParams) -> CancelAirdropResponse:
305304
if params.commonTransactionParams is not None:
306305
params.commonTransactionParams.apply_common_params(transaction, client)
307306

308-
response = transaction.execute(client, wait_for_receipt=False)
309-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
307+
receipt = execute_validated(transaction, client)
310308

311309
return CancelAirdropResponse(status=ResponseCode(receipt.status).name)
312310

@@ -339,8 +337,7 @@ def mint_token(params: MintTokenParams) -> MintTokenResponse:
339337
if params.commonTransactionParams is not None:
340338
params.commonTransactionParams.apply_common_params(transaction, client)
341339

342-
response = transaction.execute(client, wait_for_receipt=False)
343-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
340+
receipt = execute_validated(transaction, client)
344341

345342
serial_numbers = [str(s) for s in receipt.serial_numbers] if receipt.serial_numbers else []
346343

@@ -452,8 +449,7 @@ def associate_token(params: AssociateTokenParams) -> AssociateTokenResponse:
452449
if params.commonTransactionParams is not None:
453450
params.commonTransactionParams.apply_common_params(transaction, client)
454451

455-
response = transaction.execute(client, wait_for_receipt=False)
456-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
452+
receipt = execute_validated(transaction, client)
457453

458454
return AssociateTokenResponse(status=ResponseCode(receipt.status).name)
459455

@@ -468,8 +464,7 @@ def delete_token(params: DeleteTokenParams) -> DeleteTokenResponse:
468464
if params.commonTransactionParams is not None:
469465
params.commonTransactionParams.apply_common_params(transaction, client)
470466

471-
response = transaction.execute(client, wait_for_receipt=False)
472-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
467+
receipt = execute_validated(transaction, client)
473468

474469
return DeleteTokenResponse(status=ResponseCode(receipt.status).name)
475470

@@ -484,8 +479,7 @@ def dissociate_token(params: DissociateTokenParams) -> DissociateTokenResponse:
484479
if params.commonTransactionParams is not None:
485480
params.commonTransactionParams.apply_common_params(transaction, client)
486481

487-
response = transaction.execute(client, wait_for_receipt=False)
488-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
482+
receipt = execute_validated(transaction, client)
489483

490484
return DissociateTokenResponse(status=ResponseCode(receipt.status).name)
491485

@@ -515,8 +509,7 @@ def unfreeze_token(params: UnfreezeTokenParams) -> UnfreezeTokenResponse:
515509
if params.commonTransactionParams is not None:
516510
params.commonTransactionParams.apply_common_params(transaction, client)
517511

518-
response = transaction.execute(client, wait_for_receipt=False)
519-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
512+
receipt = execute_validated(transaction, client)
520513

521514
return UnfreezeTokenResponse(status=ResponseCode(receipt.status).name)
522515

@@ -531,8 +524,7 @@ def freeze_token(params: FreezeTokenParams) -> FreezeTokenResponse:
531524
if params.commonTransactionParams is not None:
532525
params.commonTransactionParams.apply_common_params(transaction, client)
533526

534-
response = transaction.execute(client, wait_for_receipt=False)
535-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
527+
receipt = execute_validated(transaction, client)
536528

537529
return FreezeTokenResponse(status=ResponseCode(receipt.status).name)
538530

@@ -547,8 +539,7 @@ def pause_token(params: PauseTokenParams) -> PauseTokenResponse:
547539
if params.commonTransactionParams is not None:
548540
params.commonTransactionParams.apply_common_params(transaction, client)
549541

550-
response = transaction.execute(client, wait_for_receipt=False)
551-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
542+
receipt = execute_validated(transaction, client)
552543

553544
return PauseTokenResponse(status=ResponseCode(receipt.status).name)
554545

@@ -563,8 +554,7 @@ def unpause_token(params: UnpauseTokenParams) -> UnpauseTokenResponse:
563554
if params.commonTransactionParams is not None:
564555
params.commonTransactionParams.apply_common_params(transaction, client)
565556

566-
response = transaction.execute(client, wait_for_receipt=False)
567-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
557+
receipt = execute_validated(transaction, client)
568558

569559
return UnpauseTokenResponse(status=ResponseCode(receipt.status).name)
570560

@@ -579,8 +569,7 @@ def grant_token_kyc(params: GrantTokenKycParams) -> GrantTokenKycResponse:
579569
if params.commonTransactionParams is not None:
580570
params.commonTransactionParams.apply_common_params(transaction, client)
581571

582-
response = transaction.execute(client, wait_for_receipt=False)
583-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
572+
receipt = execute_validated(transaction, client)
584573

585574
return GrantTokenKycResponse(status=ResponseCode(receipt.status).name)
586575

@@ -595,8 +584,7 @@ def revoke_token_kyc(params: RevokeTokenKycParams) -> RevokeTokenKycResponse:
595584
if params.commonTransactionParams is not None:
596585
params.commonTransactionParams.apply_common_params(transaction, client)
597586

598-
response = transaction.execute(client, wait_for_receipt=False)
599-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
587+
receipt = execute_validated(transaction, client)
600588

601589
return RevokeTokenKycResponse(status=ResponseCode(receipt.status).name)
602590

@@ -657,10 +645,7 @@ def airdrop_token(params: AirdropTokenParams) -> AirdropTokenResponse:
657645
if params.commonTransactionParams is not None:
658646
params.commonTransactionParams.apply_common_params(tx, client)
659647

660-
receipt = tx.execute(client, wait_for_receipt=False).get_receipt(
661-
client,
662-
validate_status=True,
663-
)
648+
receipt = execute_validated(tx, client)
664649

665650
return AirdropTokenResponse(status=ResponseCode(receipt.status).name)
666651

@@ -704,8 +689,7 @@ def claim_token(params: ClaimTokenParams) -> ClaimTokenResponse:
704689
if params.commonTransactionParams is not None:
705690
params.commonTransactionParams.apply_common_params(transaction, client)
706691

707-
response = transaction.execute(client, wait_for_receipt=False)
708-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
692+
receipt = execute_validated(transaction, client)
709693

710694
return ClaimTokenResponse(status=ResponseCode(receipt.status).name)
711695

@@ -897,8 +881,7 @@ def reject_token(params: RejectTokenParams) -> RejectTokenResponse:
897881
if params.commonTransactionParams is not None:
898882
params.commonTransactionParams.apply_common_params(transaction, client)
899883

900-
response = transaction.execute(client, wait_for_receipt=False)
901-
receipt = response.get_receipt(client, validate_status=True)
884+
receipt = execute_validated(transaction, client)
902885

903886
return RejectTokenResponse(
904887
status=ResponseCode(receipt.status).name,
@@ -973,8 +956,7 @@ def update_token(params: UpdateTokenParams) -> UpdateTokenResponse:
973956
if params.commonTransactionParams is not None:
974957
params.commonTransactionParams.apply_common_params(transaction, client)
975958

976-
response = transaction.execute(client, wait_for_receipt=False)
977-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
959+
receipt = execute_validated(transaction, client)
978960

979961
return UpdateTokenResponse(status=ResponseCode(receipt.status).name)
980962

@@ -1011,8 +993,7 @@ def wipe_token(params: WipeTokenParams) -> WipeTokenResponse:
1011993
if params.commonTransactionParams is not None:
1012994
params.commonTransactionParams.apply_common_params(transaction, client)
1013995

1014-
response = transaction.execute(client, wait_for_receipt=False)
1015-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
996+
receipt = execute_validated(transaction, client)
1016997

1017998
return WipeTokenResponse(status=ResponseCode(receipt.status).name)
1018999

@@ -1045,8 +1026,7 @@ def burn_token(params: BurnTokenParams) -> BurnTokenResponse:
10451026
if params.commonTransactionParams is not None:
10461027
params.commonTransactionParams.apply_common_params(transaction, client)
10471028

1048-
response = transaction.execute(client, wait_for_receipt=False)
1049-
receipt: TransactionReceipt = response.get_receipt(client, validate_status=True)
1029+
receipt = execute_validated(transaction, client)
10501030

10511031
return BurnTokenResponse(
10521032
newTotalSupply=str(receipt.new_total_supply),

0 commit comments

Comments
 (0)