11import pytest
22
33from hiero_sdk_python .hbar import Hbar
4- from tests .integration .utils_for_test import IntegrationTestEnv
4+ from tests .integration .utils_for_test import IntegrationTestEnv , create_fungible_token , create_nft_token
55from hiero_sdk_python .tokens .token_create_transaction import (
66 TokenCreateTransaction ,
77 TokenParams ,
2121from hiero_sdk_python .tokens .token_id import TokenId
2222from hiero_sdk_python .tokens .token_delete_transaction import TokenDeleteTransaction
2323
24- # --- Helper function for consistent token creation ---
25- def _create_test_fungible_token (env , admin_key , fee_schedule_key ):
26- """Helper to create a fungible token with admin and fee keys."""
27- token_params = TokenParams (
28- token_name = "Test Fungible" ,
29- token_symbol = "FT" ,
30- treasury_account_id = env .operator_id ,
31- initial_supply = 1000 ,
32- token_type = TokenType .FUNGIBLE_COMMON ,
33- )
34- keys = TokenKeys (
35- admin_key = admin_key ,
36- supply_key = admin_key ,
37- fee_schedule_key = fee_schedule_key
38- )
39- # Use the setter as well, aligning with PR #409's test
40- create_tx = TokenCreateTransaction (token_params = token_params , keys = keys )
41- create_tx .set_fee_schedule_key (fee_schedule_key )
42-
43- receipt = create_tx .execute (env .client )
44- assert receipt .status == ResponseCode .SUCCESS , "Fungible token creation failed"
45- return receipt .token_id
46-
47- # --- Helper function for consistent token creation ---
48- def _create_test_nft (env , admin_key , fee_schedule_key ):
49- """Helper to create an NFT with admin and fee keys."""
50- token_params = TokenParams (
51- token_name = "Test NFT" ,
52- token_symbol = "NFT" ,
53- treasury_account_id = env .operator_id ,
54- initial_supply = 0 ,
55- decimals = 0 ,
56- token_type = TokenType .NON_FUNGIBLE_UNIQUE ,
57- supply_type = SupplyType .FINITE ,
58- max_supply = 1000 ,
59- )
60- keys = TokenKeys (
61- admin_key = admin_key ,
62- supply_key = admin_key ,
63- fee_schedule_key = fee_schedule_key
64- )
65- # Use the setter as well, aligning with PR #409's test
66- create_tx = TokenCreateTransaction (token_params = token_params , keys = keys )
67- create_tx .set_fee_schedule_key (fee_schedule_key )
68-
69- receipt = create_tx .execute (env .client )
70- assert receipt .status == ResponseCode .SUCCESS , "NFT creation failed"
71- return receipt .token_id
72-
73-
7424@pytest .mark .integration
7525def test_token_fee_schedule_update_e2e_fungible ():
7626 """Test updating fee schedule successfully for a Fungible Token."""
7727 env = IntegrationTestEnv ()
7828 try :
7929 fee_schedule_key = env .operator_key
80- admin_key = env .operator_key
81- token_id = _create_test_fungible_token (env , admin_key , fee_schedule_key )
30+ token_id = create_fungible_token (
31+ env ,
32+ opts = [lambda tx : tx .set_fee_schedule_key (fee_schedule_key )]
33+ )
8234 assert token_id is not None
8335
8436 new_fee = CustomFixedFee (
@@ -108,8 +60,10 @@ def test_token_fee_schedule_update_e2e_nft():
10860 env = IntegrationTestEnv ()
10961 try :
11062 fee_schedule_key = env .operator_key
111- admin_key = env .operator_key
112- token_id = _create_test_nft (env , admin_key , fee_schedule_key )
63+ token_id = create_nft_token (
64+ env ,
65+ opts = [lambda tx : tx .set_fee_schedule_key (fee_schedule_key )]
66+ )
11367 assert token_id is not None
11468
11569 new_fee = CustomRoyaltyFee (
@@ -139,8 +93,10 @@ def test_token_fee_schedule_update_fails_with_invalid_signature():
13993 env = IntegrationTestEnv ()
14094 try :
14195 fee_schedule_key = PrivateKey .generate () # Must be a new key
142- admin_key = env .operator_key
143- token_id = _create_test_fungible_token (env , admin_key , fee_schedule_key )
96+ token_id = create_fungible_token (
97+ env ,
98+ opts = [lambda tx : tx .set_fee_schedule_key (fee_schedule_key )]
99+ )
144100 assert token_id is not None
145101
146102 wrong_key = PrivateKey .generate ()
@@ -188,7 +144,13 @@ def test_token_fee_schedule_update_fails_for_deleted_token():
188144 try :
189145 admin_key = env .operator_key
190146 fee_schedule_key = env .operator_key
191- token_id = _create_test_fungible_token (env , admin_key , fee_schedule_key )
147+ token_id = create_fungible_token (
148+ env ,
149+ opts = [
150+ lambda tx : tx .set_admin_key (admin_key ),
151+ lambda tx : tx .set_fee_schedule_key (fee_schedule_key )
152+ ]
153+ )
192154 assert token_id is not None
193155
194156 delete_receipt = TokenDeleteTransaction ().set_token_id (token_id ).execute (env .client )
@@ -212,9 +174,11 @@ def test_token_fee_schedule_update_fails_royalty_on_fungible():
212174 """Test failure when adding a royalty fee to a fungible token."""
213175 env = IntegrationTestEnv ()
214176 try :
215- admin_key = env .operator_key
216177 fee_schedule_key = env .operator_key
217- token_id = _create_test_fungible_token (env , admin_key , fee_schedule_key )
178+ token_id = create_fungible_token (
179+ env ,
180+ opts = [lambda tx : tx .set_fee_schedule_key (fee_schedule_key )]
181+ )
218182 assert token_id is not None
219183
220184 new_fee = CustomRoyaltyFee (numerator = 1 , denominator = 10 , fee_collector_account_id = env .operator_id )
@@ -236,9 +200,11 @@ def test_token_fee_schedule_update_fails_fractional_on_nft():
236200 """Test failure when adding a fractional fee to an NFT."""
237201 env = IntegrationTestEnv ()
238202 try :
239- admin_key = env .operator_key
240203 fee_schedule_key = env .operator_key
241- token_id = _create_test_nft (env , admin_key , fee_schedule_key )
204+ token_id = create_nft_token (
205+ env ,
206+ opts = [lambda tx : tx .set_fee_schedule_key (fee_schedule_key )]
207+ )
242208 assert token_id is not None
243209
244210 new_fee = CustomFractionalFee (
@@ -270,21 +236,15 @@ def test_token_fee_schedule_update_clears_fees():
270236 fee_schedule_key = env .operator_key
271237
272238 initial_fee = CustomFixedFee (amount = 10 , fee_collector_account_id = env .operator_id )
273- token_params = TokenParams (
274- token_name = "Test Clear Fees" ,
275- token_symbol = "CLEAR" ,
276- treasury_account_id = env . operator_id ,
277- initial_supply = 1000 ,
278- token_type = TokenType . FUNGIBLE_COMMON ,
279- custom_fees = [ initial_fee ],
239+ token_id = create_fungible_token (
240+ env ,
241+ opts = [
242+ lambda tx : tx . set_custom_fees ([ initial_fee ]) ,
243+ lambda tx : tx . set_admin_key ( admin_key ) ,
244+ lambda tx : tx . set_fee_schedule_key ( fee_schedule_key )
245+ ]
280246 )
281- keys = TokenKeys (admin_key = admin_key , fee_schedule_key = fee_schedule_key )
282- create_tx = TokenCreateTransaction (token_params = token_params , keys = keys )
283- create_tx .set_fee_schedule_key (fee_schedule_key )
284-
285- create_receipt = create_tx .execute (env .client )
286- assert create_receipt .status == ResponseCode .SUCCESS , "Token creation failed"
287- token_id = create_receipt .token_id
247+ assert token_id is not None
288248
289249 token_info = TokenInfoQuery ().set_token_id (token_id ).execute (env .client )
290250 assert len (token_info .custom_fees ) == 1
@@ -303,4 +263,4 @@ def test_token_fee_schedule_update_clears_fees():
303263 token_info_cleared = TokenInfoQuery ().set_token_id (token_id ).execute (env .client )
304264 assert len (token_info_cleared .custom_fees ) == 0
305265 finally :
306- env .close ()
266+ env .close ()
0 commit comments