diff --git a/account_records_query_test.go b/account_records_query_test.go index dde1d8bc7..450f8154d 100644 --- a/account_records_query_test.go +++ b/account_records_query_test.go @@ -50,6 +50,4 @@ func TestAccountRecordQuery_Execute(t *testing.T) { assert.NoError(t, err) assert.Equal(t, 0, len(recordsQuery)) - - //assert.Equal(t, `cryptoGetAccountRecords:{header:{payment:{bodyBytes:"\n\x0e\n\x08\x08\xdc\xc9\x07\x10۟\t\x12\x02\x18\x03\x12\x02\x18\x03\x18\x80\xc2\xd7/\"\x02\x08xr\x14\n\x12\n\x07\n\x02\x18\x02\x10\xc7\x01\n\x07\n\x02\x18\x03\x10\xc8\x01"sigMap:{sigPair:{pubKeyPrefix:"\xe4\xf1\xc0\xebL}\xcd\xc3\xe7\xeb\x11p\xb3\x08\x8a=\x12\xa2\x97\xf4\xa3\xeb\xe2\xf2\x85\x03\xfdg5F\xed\x8e"ed25519:"\x12&5\x96\xfb\xb4\x1c]P\xbb%\xecP\x9bk͙\x0b߼\xac)\xa6+\xd2<\x97+\xbb\x8c\x8af\xcb\xdai\x17T4{\xf7\xf3UYn\n\x8f\xabep\x04\xf6\x83\x0f\xbaFUP\xa3\xd1/\x1d\x9d\x1a\x0b"}}}}accountID:{accountNum:3}}`, strings.ReplaceAll(query.QueryBuilder.pb.String(), " ", "")) } diff --git a/account_update_transaction_test.go b/account_update_transaction_test.go index 4e71ec600..fbbd4e937 100644 --- a/account_update_transaction_test.go +++ b/account_update_transaction_test.go @@ -80,3 +80,72 @@ func TestAccountUpdateTransaction_Execute(t *testing.T) { assert.NoError(t, err) } + +func TestAccountUpdateTransactionNoSigning_Execute(t *testing.T) { + client := newTestClient(t) + + newKey, err := GeneratePrivateKey() + assert.NoError(t, err) + + newKey2, err := GeneratePrivateKey() + assert.NoError(t, err) + + newBalance := NewHbar(1) + + assert.Equal(t, HbarUnits.Hbar.numberOfTinybar(), newBalance.tinybar) + + resp, err := NewAccountCreateTransaction(). + SetKey(newKey.PublicKey()). + SetMaxTransactionFee(NewHbar(2)). + SetInitialBalance(newBalance). + Execute(client) + + assert.NoError(t, err) + + receipt, err := resp.GetReceipt(client) + assert.NoError(t, err) + + accountID := *receipt.AccountID + assert.NoError(t, err) + + nodeIDs := make([]AccountID, 1) + nodeIDs[0] = resp.NodeID + + _, err = NewAccountUpdateTransaction(). + SetAccountID(accountID). + SetNodeAccountIDs(nodeIDs). + SetKey(newKey2.PublicKey()). + SetMaxTransactionFee(NewHbar(1)). + Execute(client) + assert.NoError(t, err) + + _, err = resp.GetReceipt(client) + assert.Error(t, err) + + info, err := NewAccountInfoQuery(). + SetAccountID(accountID). + SetNodeAccountIDs(nodeIDs). + SetMaxQueryPayment(NewHbar(1)). + Execute(client) + assert.NoError(t, err) + + assert.Equal(t, newKey.PublicKey().String(), info.Key.String()) + + txDelete, err := NewAccountDeleteTransaction(). + SetAccountID(accountID). + SetTransferAccountID(client.GetOperatorAccountID()). + SetNodeAccountIDs(nodeIDs). + SetMaxTransactionFee(NewHbar(1)). + FreezeWith(client) + + assert.NoError(t, err) + + txDelete.Sign(newKey2) + + resp, err = txDelete.Execute(client) + assert.NoError(t, err) + + _, err = resp.GetReceipt(client) + + assert.NoError(t, err) +} diff --git a/contract_bytecode_query_test.go b/contract_bytecode_query_test.go index 85eac4818..c9049a790 100644 --- a/contract_bytecode_query_test.go +++ b/contract_bytecode_query_test.go @@ -43,9 +43,11 @@ func TestContractBytecodeQuery_Execute(t *testing.T) { Execute(client) assert.NoError(t, err) - contractReceipt, err := contractResponse.TransactionID.GetReceipt(client) + contractReceipt, err := contractResponse.GetReceipt(client) assert.NoError(t, err) + assert.NotNil(t, contractReceipt.ContractID) + assert.True(t, contractReceipt.ContractID.Contract > 0) contractID := *contractReceipt.ContractID diff --git a/contract_call_query_test.go b/contract_call_query_test.go index 01c13fddf..da342b03b 100644 --- a/contract_call_query_test.go +++ b/contract_call_query_test.go @@ -48,6 +48,8 @@ func TestNewContractCallQuery_Execute(t *testing.T) { assert.True(t, contractReceipt.ContractID.Contract > 0) + assert.NotNil(t, contractReceipt.ContractID) + contractID := *contractReceipt.ContractID result, err := NewContractCallQuery(). diff --git a/contract_create_transaction_test.go b/contract_create_transaction_test.go index 31b2ba6cb..dfef583ec 100644 --- a/contract_create_transaction_test.go +++ b/contract_create_transaction_test.go @@ -43,8 +43,8 @@ func TestContractCreateTransaction_Execute(t *testing.T) { receipt, err = resp.GetReceipt(client) assert.NoError(t, err) + assert.NotNil(t, receipt.ContractID) contractID := *receipt.ContractID - assert.NotNil(t, contractID) resp, err = NewContractDeleteTransaction(). SetContractID(contractID). diff --git a/contract_delete_transaction_test.go b/contract_delete_transaction_test.go index 2f6b5ce9e..12ccb67c3 100644 --- a/contract_delete_transaction_test.go +++ b/contract_delete_transaction_test.go @@ -43,8 +43,8 @@ func TestContractDeleteTransaction_Execute(t *testing.T) { receipt, err = resp.GetReceipt(client) assert.NoError(t, err) + assert.NotNil(t, receipt.ContractID) contractID := *receipt.ContractID - assert.NotNil(t, contractID) resp, err = NewContractDeleteTransaction(). SetContractID(contractID). diff --git a/contract_execute_transaction_test.go b/contract_execute_transaction_test.go index 40af500b2..f1145e3a7 100644 --- a/contract_execute_transaction_test.go +++ b/contract_execute_transaction_test.go @@ -42,8 +42,8 @@ func TestContractExecuteTransaction_Execute(t *testing.T) { receipt, err = resp.GetReceipt(client) assert.NoError(t, err) + assert.NotNil(t, receipt.ContractID) contractID := *receipt.ContractID - assert.NotNil(t, contractID) resp, err = NewContractExecuteTransaction(). SetContractID(contractID). diff --git a/contract_info_query_test.go b/contract_info_query_test.go index 716ad4dcd..656b35f23 100644 --- a/contract_info_query_test.go +++ b/contract_info_query_test.go @@ -53,8 +53,8 @@ func TestContractInfoQuery_Execute(t *testing.T) { receipt, err = resp.GetReceipt(client) assert.NoError(t, err) + assert.NotNil(t, receipt.ContractID) contractID := *receipt.ContractID - assert.NotNil(t, contractID) info, err := NewContractInfoQuery(). SetContractID(contractID). diff --git a/contract_update_transaction_test.go b/contract_update_transaction_test.go index 0d5152333..a9f8976d5 100644 --- a/contract_update_transaction_test.go +++ b/contract_update_transaction_test.go @@ -39,22 +39,25 @@ func TestContractUpdateTransaction_Execute(t *testing.T) { receipt, err = resp.GetReceipt(client) assert.NoError(t, err) + assert.NotNil(t, receipt.ContractID) contractID := *receipt.ContractID - assert.NotNil(t, contractID) info, err := NewContractInfoQuery(). SetContractID(contractID). SetNodeAccountIDs([]AccountID{resp.NodeID}). SetQueryPayment(NewHbar(1)). Execute(client) + assert.NoError(t, err) + assert.NotNil(t, info) assert.NotNil(t, info, info.Storage) + assert.NotNil(t, info.ContractID) assert.Equal(t, info.ContractID, contractID) assert.NotNil(t, info.AccountID) assert.Equal(t, info.AccountID.String(), contractID.String()) assert.NotNil(t, info.AdminKey) assert.Equal(t, info.AdminKey.String(), client.GetOperatorPublicKey().String()) - //assert.Equal(t, info.Storage, uint64(926)) + assert.Equal(t, info.Storage, uint64(523)) assert.Equal(t, info.ContractMemo, "[e2e::ContractCreateTransaction]") resp, err = NewContractUpdateTransaction(). @@ -71,14 +74,16 @@ func TestContractUpdateTransaction_Execute(t *testing.T) { SetNodeAccountIDs([]AccountID{resp.NodeID}). SetQueryPayment(NewHbar(5)). Execute(client) + assert.NoError(t, err) assert.NotNil(t, info) + assert.NotNil(t, info.ContractID) assert.Equal(t, info.ContractID, contractID) assert.NotNil(t, info.AccountID) assert.Equal(t, info.AccountID.String(), contractID.String()) assert.NotNil(t, info.AdminKey) assert.Equal(t, info.AdminKey.String(), client.GetOperatorPublicKey().String()) - //assert.Equal(t, info.Storage, uint64(926)) + assert.Equal(t, info.Storage, uint64(523)) assert.Equal(t, info.ContractMemo, "[e2e::ContractUpdateTransaction]") resp, err = NewContractDeleteTransaction(). diff --git a/file_delete_transaction_test.go b/file_delete_transaction_test.go index f7f3f9299..437f3deac 100644 --- a/file_delete_transaction_test.go +++ b/file_delete_transaction_test.go @@ -35,3 +35,34 @@ func TestFileDeleteTransaction_Execute(t *testing.T) { _, err = resp.GetReceipt(client) assert.NoError(t, err) } + +func TestFileDeleteTransactionNothingSet_Execute(t *testing.T) { + client := newTestClient(t) + client.SetMaxTransactionFee(NewHbar(2)) + + resp, err := NewFileCreateTransaction(). + SetKeys(client.GetOperatorPublicKey()). + SetContents([]byte("Hello, World")). + SetTransactionMemo("go sdk e2e tests"). + Execute(client) + + assert.NoError(t, err) + + receipt, err := resp.GetReceipt(client) + assert.NoError(t, err) + + fileID := *receipt.FileID + assert.NotNil(t, fileID) + + nodeIDs := make([]AccountID, 1) + nodeIDs[0] = resp.NodeID + + resp, err = NewFileDeleteTransaction(). + SetFileID(fileID). + SetNodeAccountIDs(nodeIDs). + Execute(client) + assert.NoError(t, err) + + _, err = resp.GetReceipt(client) + assert.NoError(t, err) +} diff --git a/token_create_transaction_test.go b/token_create_transaction_test.go index 354b98aa0..9ba401ff3 100644 --- a/token_create_transaction_test.go +++ b/token_create_transaction_test.go @@ -37,3 +37,180 @@ func TestTokenCreateTransaction_Execute(t *testing.T) { _, err = resp.GetReceipt(client) assert.NoError(t, err) } + +func TestTokenCreateTransactionMultipleKeys_Execute(t *testing.T) { + client := newTestClient(t) + + keys := make([]PrivateKey, 5) + pubKeys := make([]PublicKey, 5) + + for i := range keys { + newKey, err := GeneratePrivateKey() + assert.NoError(t, err) + + keys[i] = newKey + pubKeys[i] = newKey.PublicKey() + } + + newBalance := NewHbar(1) + + assert.Equal(t, HbarUnits.Hbar.numberOfTinybar(), newBalance.tinybar) + + resp, err := NewAccountCreateTransaction(). + SetKey(pubKeys[0]). + SetMaxTransactionFee(NewHbar(2)). + SetInitialBalance(newBalance). + Execute(client) + assert.NoError(t, err) + + receipt, err := resp.GetReceipt(client) + assert.NoError(t, err) + + resp, err = NewTokenCreateTransaction(). + SetTokenName("ffff"). + SetTokenSymbol("F"). + SetDecimals(3). + SetInitialSupply(1000000). + SetTreasuryAccountID(client.GetOperatorAccountID()). + SetAdminKey(client.GetOperatorPublicKey()). + SetFreezeKey(pubKeys[1]). + SetWipeKey(pubKeys[2]). + SetKycKey(pubKeys[3]). + SetSupplyKey(pubKeys[4]). + SetFreezeDefault(false). + Execute(client) + assert.NoError(t, err) + + receipt, err = resp.GetReceipt(client) + assert.NoError(t, err) + + tokenID := *receipt.TokenID + + resp, err = NewTokenDeleteTransaction(). + SetNodeAccountIDs([]AccountID{resp.NodeID}). + SetTokenID(tokenID). + Execute(client) + assert.NoError(t, err) + + _, err = resp.GetReceipt(client) + assert.NoError(t, err) +} + +func TestTokenCreateTransactionNoKeys_Execute(t *testing.T) { + client := newTestClient(t) + + keys := make([]PrivateKey, 6) + pubKeys := make([]PublicKey, 6) + + for i := range keys { + newKey, err := GeneratePrivateKey() + assert.NoError(t, err) + + keys[i] = newKey + pubKeys[i] = newKey.PublicKey() + } + + newBalance := NewHbar(1) + + assert.Equal(t, HbarUnits.Hbar.numberOfTinybar(), newBalance.tinybar) + + resp, err := NewAccountCreateTransaction(). + SetKey(pubKeys[0]). + SetMaxTransactionFee(NewHbar(2)). + SetInitialBalance(newBalance). + Execute(client) + assert.NoError(t, err) + + receipt, err := resp.GetReceipt(client) + assert.NoError(t, err) + + resp, err = NewTokenCreateTransaction(). + SetTokenName("ffff"). + SetTokenSymbol("F"). + SetDecimals(3). + SetInitialSupply(1000000). + SetTreasuryAccountID(client.GetOperatorAccountID()). + SetFreezeDefault(false). + Execute(client) + assert.NoError(t, err) + + receipt, err = resp.GetReceipt(client) + assert.NoError(t, err) + + tokenID := *receipt.TokenID + + println("token ", tokenID.String()) + + resp, err = NewTokenDeleteTransaction(). + SetNodeAccountIDs([]AccountID{resp.NodeID}). + SetTokenID(tokenID). + Execute(client) + assert.NoError(t, err) + + _, err = resp.GetReceipt(client) + assert.NoError(t, err) +} + +func TestTokenCreateTransactionAdminSign_Execute(t *testing.T) { + client := newTestClient(t) + + keys := make([]PrivateKey, 6) + pubKeys := make([]PublicKey, 6) + + for i := range keys { + newKey, err := GeneratePrivateKey() + assert.NoError(t, err) + + keys[i] = newKey + pubKeys[i] = newKey.PublicKey() + } + + newBalance := NewHbar(1) + + assert.Equal(t, HbarUnits.Hbar.numberOfTinybar(), newBalance.tinybar) + + resp, err := NewAccountCreateTransaction(). + SetKey(pubKeys[0]). + SetMaxTransactionFee(NewHbar(2)). + SetInitialBalance(newBalance). + Execute(client) + assert.NoError(t, err) + + receipt, err := resp.GetReceipt(client) + assert.NoError(t, err) + + tokenCreate, err := NewTokenCreateTransaction(). + SetTokenName("ffff"). + SetTokenSymbol("F"). + SetDecimals(3). + SetInitialSupply(1000000). + SetTreasuryAccountID(client.GetOperatorAccountID()). + SetAdminKey(pubKeys[1]). + SetFreezeKey(pubKeys[1]). + SetWipeKey(pubKeys[2]). + SetKycKey(pubKeys[3]). + SetSupplyKey(pubKeys[4]). + SetFreezeDefault(false). + FreezeWith(client) + assert.NoError(t, err) + + resp, err = tokenCreate. + Sign(keys[0]). + Sign(keys[1]). + Execute(client) + assert.NoError(t, err) + + receipt, err = resp.GetReceipt(client) + assert.NoError(t, err) + + tokenID := *receipt.TokenID + + resp, err = NewTokenDeleteTransaction(). + SetNodeAccountIDs([]AccountID{resp.NodeID}). + SetTokenID(tokenID). + Execute(client) + assert.NoError(t, err) + + _, err = resp.GetReceipt(client) + assert.NoError(t, err) +} diff --git a/token_delete_transaction_test.go b/token_delete_transaction_test.go index 88efda825..0cc8c9525 100644 --- a/token_delete_transaction_test.go +++ b/token_delete_transaction_test.go @@ -37,3 +37,31 @@ func TestTokenDeleteTransaction_Execute(t *testing.T) { _, err = resp.GetReceipt(client) assert.NoError(t, err) } + +func TestTokenDeleteTransactionNoKeys_Execute(t *testing.T) { + client := newTestClient(t) + + resp, err := NewTokenCreateTransaction(). + SetTokenName("ffff"). + SetTokenSymbol("F"). + SetDecimals(3). + SetInitialSupply(1000000). + SetTreasuryAccountID(client.GetOperatorAccountID()). + SetFreezeDefault(false). + Execute(client) + assert.NoError(t, err) + + receipt, err := resp.GetReceipt(client) + assert.NoError(t, err) + + tokenID := *receipt.TokenID + + resp, err = NewTokenDeleteTransaction(). + SetNodeAccountIDs([]AccountID{resp.NodeID}). + SetTokenID(tokenID). + Execute(client) + assert.NoError(t, err) + + _, err = resp.GetReceipt(client) + assert.NoError(t, err) +} diff --git a/token_dissociate_transaction_test.go b/token_dissociate_transaction_test.go index ed5eeb024..e562aba7d 100644 --- a/token_dissociate_transaction_test.go +++ b/token_dissociate_transaction_test.go @@ -100,3 +100,84 @@ func TestTokenDissociateTransaction_Execute(t *testing.T) { _, err = resp.GetReceipt(client) assert.NoError(t, err) } + +func TestTokenDissociateTransactionNoSigningOne_Execute(t *testing.T) { + client := newTestClient(t) + + newKey, err := GeneratePrivateKey() + assert.NoError(t, err) + + newBalance := NewHbar(1) + + assert.Equal(t, HbarUnits.Hbar.numberOfTinybar(), newBalance.tinybar) + + resp, err := NewAccountCreateTransaction(). + SetKey(newKey.PublicKey()). + SetMaxTransactionFee(NewHbar(2)). + SetInitialBalance(newBalance). + Execute(client) + assert.NoError(t, err) + + receipt, err := resp.GetReceipt(client) + assert.NoError(t, err) + + accountID := *receipt.AccountID + + resp, err = NewTokenCreateTransaction(). + SetTokenName("ffff"). + SetTokenSymbol("F"). + SetDecimals(3). + SetInitialSupply(1000000). + SetTreasuryAccountID(client.GetOperatorAccountID()). + SetAdminKey(client.GetOperatorPublicKey()). + SetFreezeKey(client.GetOperatorPublicKey()). + SetWipeKey(client.GetOperatorPublicKey()). + SetKycKey(client.GetOperatorPublicKey()). + SetSupplyKey(client.GetOperatorPublicKey()). + SetFreezeDefault(false). + Execute(client) + assert.NoError(t, err) + + receipt, err = resp.GetReceipt(client) + assert.NoError(t, err) + + tokenID := *receipt.TokenID + + _, err = NewTokenAssociateTransaction(). + SetNodeAccountIDs([]AccountID{resp.NodeID}). + SetAccountID(accountID). + SetTokenIDs(tokenID). + Execute(client) + assert.NoError(t, err) + + _, err = resp.GetReceipt(client) + assert.NoError(t, err) + + _, err = NewTokenDissociateTransaction(). + SetNodeAccountIDs([]AccountID{resp.NodeID}). + SetAccountID(accountID). + SetTokenIDs(tokenID). + Execute(client) + assert.NoError(t, err) + + _, err = resp.GetReceipt(client) + assert.NoError(t, err) + + resp, err = NewTokenDeleteTransaction(). + SetNodeAccountIDs([]AccountID{resp.NodeID}). + SetTokenID(tokenID). + Execute(client) + assert.NoError(t, err) + + _, err = resp.GetReceipt(client) + assert.NoError(t, err) + + _, err = NewAccountDeleteTransaction(). + SetAccountID(accountID). + SetTransferAccountID(client.GetOperatorAccountID()). + Execute(client) + assert.NoError(t, err) + + _, err = resp.GetReceipt(client) + assert.NoError(t, err) +} diff --git a/token_freeze_transaction_test.go b/token_freeze_transaction_test.go index 1473831bb..fa483452b 100644 --- a/token_freeze_transaction_test.go +++ b/token_freeze_transaction_test.go @@ -67,6 +67,7 @@ func TestTokenFreezeTransaction_Execute(t *testing.T) { SetAccountID(accountID). SetTokenID(tokenID). Execute(client) + assert.NoError(t, err) _, err = resp.GetReceipt(client) assert.NoError(t, err) @@ -94,3 +95,69 @@ func TestTokenFreezeTransaction_Execute(t *testing.T) { _, err = resp.GetReceipt(client) assert.NoError(t, err) } + +func TestTokenFreezeTransactionNoAccountID_Execute(t *testing.T) { + client := newTestClient(t) + + newKey, err := GeneratePrivateKey() + assert.NoError(t, err) + + newBalance := NewHbar(1) + + assert.Equal(t, HbarUnits.Hbar.numberOfTinybar(), newBalance.tinybar) + + resp, err := NewAccountCreateTransaction(). + SetKey(newKey.PublicKey()). + SetMaxTransactionFee(NewHbar(2)). + SetInitialBalance(newBalance). + Execute(client) + assert.NoError(t, err) + + receipt, err := resp.GetReceipt(client) + assert.NoError(t, err) + + accountID := *receipt.AccountID + + resp, err = NewTokenCreateTransaction(). + SetTokenName("ffff"). + SetTokenSymbol("F"). + SetDecimals(3). + SetInitialSupply(1000000). + SetTreasuryAccountID(client.GetOperatorAccountID()). + SetAdminKey(client.GetOperatorPublicKey()). + SetFreezeKey(client.GetOperatorPublicKey()). + SetWipeKey(client.GetOperatorPublicKey()). + SetKycKey(client.GetOperatorPublicKey()). + SetSupplyKey(client.GetOperatorPublicKey()). + SetFreezeDefault(false). + Execute(client) + assert.NoError(t, err) + + receipt, err = resp.GetReceipt(client) + assert.NoError(t, err) + + tokenID := *receipt.TokenID + + transaction, err := NewTokenAssociateTransaction(). + SetNodeAccountIDs([]AccountID{resp.NodeID}). + SetAccountID(accountID). + SetTokenIDs(tokenID). + FreezeWith(client) + assert.NoError(t, err) + + resp, err = transaction. + Sign(newKey). + Execute(client) + assert.NoError(t, err) + + _, err = resp.GetReceipt(client) + assert.NoError(t, err) + + resp, err = NewTokenFreezeTransaction(). + SetNodeAccountIDs([]AccountID{resp.NodeID}). + Execute(client) + assert.Error(t, err) + + _, err = resp.GetReceipt(client) + assert.Error(t, err) +} diff --git a/token_info_query_test.go b/token_info_query_test.go index 452eac8de..4b415cd20 100644 --- a/token_info_query_test.go +++ b/token_info_query_test.go @@ -50,6 +50,11 @@ func TestTokenInfoQuery_Execute(t *testing.T) { assert.Equal(t, info.Symbol, "F") assert.Equal(t, info.Decimals, uint32(3)) assert.Equal(t, info.Treasury, client.GetOperatorAccountID()) + assert.NotNil(t, *info.AdminKey) + assert.NotNil(t, *info.KycKey) + assert.NotNil(t, *info.FreezeKey) + assert.NotNil(t, *info.WipeKey) + assert.NotNil(t, *info.SupplyKey) assert.Equal(t, (*info.AdminKey).String(), client.GetOperatorPublicKey().String()) assert.Equal(t, (*info.KycKey).String(), client.GetOperatorPublicKey().String()) assert.Equal(t, (*info.FreezeKey).String(), client.GetOperatorPublicKey().String()) @@ -67,3 +72,48 @@ func TestTokenInfoQuery_Execute(t *testing.T) { _, err = resp.GetReceipt(client) assert.NoError(t, err) } + +func TestTokenInfoQueryNoPayment_Execute(t *testing.T) { + client := newTestClient(t) + + resp, err := NewTokenCreateTransaction(). + SetTokenName("ffff"). + SetTokenSymbol("F"). + SetDecimals(3). + SetInitialSupply(1000000). + SetTreasuryAccountID(client.GetOperatorAccountID()). + SetFreezeKey(client.GetOperatorPublicKey()). + SetKycKey(client.GetOperatorPublicKey()). + SetFreezeDefault(false). + Execute(client) + assert.NoError(t, err) + + receipt, err := resp.GetReceipt(client) + assert.NoError(t, err) + + tokenID := *receipt.TokenID + + info, err := NewTokenInfoQuery(). + SetNodeAccountIDs([]AccountID{resp.NodeID}). + SetQueryPayment(NewHbar(2)). + SetTokenID(tokenID). + Execute(client) + assert.NoError(t, err) + + assert.Equal(t, info.TokenID, tokenID) + assert.Equal(t, info.Name, "ffff") + assert.Equal(t, info.Symbol, "F") + assert.Equal(t, info.Decimals, uint32(3)) + assert.Equal(t, info.Treasury, client.GetOperatorAccountID()) + assert.False(t, *info.DefaultFreezeStatus) + assert.False(t, *info.DefaultKycStatus) + + resp, err = NewTokenDeleteTransaction(). + SetNodeAccountIDs([]AccountID{resp.NodeID}). + SetTokenID(tokenID). + Execute(client) + assert.NoError(t, err) + + _, err = resp.GetReceipt(client) + assert.NoError(t, err) +} diff --git a/token_mint_transaction_test.go b/token_mint_transaction_test.go index c69d6f3c8..1669eccaf 100644 --- a/token_mint_transaction_test.go +++ b/token_mint_transaction_test.go @@ -80,3 +80,50 @@ func TestTokenMintTransaction_Execute(t *testing.T) { _, err = resp.GetReceipt(client) assert.NoError(t, err) } + +func TestTokenMintTransactionNoAmount_Execute(t *testing.T) { + client := newTestClient(t) + + newKey, err := GeneratePrivateKey() + assert.NoError(t, err) + + newBalance := NewHbar(1) + + assert.Equal(t, HbarUnits.Hbar.numberOfTinybar(), newBalance.tinybar) + + resp, err := NewAccountCreateTransaction(). + SetKey(newKey.PublicKey()). + SetMaxTransactionFee(NewHbar(2)). + SetInitialBalance(newBalance). + Execute(client) + assert.NoError(t, err) + + receipt, err := resp.GetReceipt(client) + assert.NoError(t, err) + + resp, err = NewTokenCreateTransaction(). + SetTokenName("ffff"). + SetTokenSymbol("F"). + SetDecimals(3). + SetInitialSupply(1000000). + SetTreasuryAccountID(client.GetOperatorAccountID()). + SetAdminKey(client.GetOperatorPublicKey()). + SetFreezeKey(client.GetOperatorPublicKey()). + SetWipeKey(client.GetOperatorPublicKey()). + SetKycKey(client.GetOperatorPublicKey()). + SetSupplyKey(client.GetOperatorPublicKey()). + SetFreezeDefault(false). + Execute(client) + assert.NoError(t, err) + + receipt, err = resp.GetReceipt(client) + assert.NoError(t, err) + + tokenID := *receipt.TokenID + + resp, err = NewTokenMintTransaction(). + SetNodeAccountIDs([]AccountID{resp.NodeID}). + SetTokenID(tokenID). + Execute(client) + assert.Error(t, err) +} diff --git a/token_transfer_transaction_test.go b/token_transfer_transaction_test.go index 9933b9f25..753c1c02f 100644 --- a/token_transfer_transaction_test.go +++ b/token_transfer_transaction_test.go @@ -109,3 +109,216 @@ func TestTokenTransferTransaction_Execute(t *testing.T) { _, err = resp.GetReceipt(client) assert.NoError(t, err) } + +func TestTokenTransferTransactionNotZeroSum_Execute(t *testing.T) { + client := newTestClient(t) + + newKey, err := GeneratePrivateKey() + assert.NoError(t, err) + + newBalance := NewHbar(1) + + assert.Equal(t, HbarUnits.Hbar.numberOfTinybar(), newBalance.tinybar) + + resp, err := NewAccountCreateTransaction(). + SetKey(newKey.PublicKey()). + SetMaxTransactionFee(NewHbar(2)). + SetInitialBalance(newBalance). + Execute(client) + assert.NoError(t, err) + + receipt, err := resp.GetReceipt(client) + assert.NoError(t, err) + + accountID := *receipt.AccountID + + resp, err = NewTokenCreateTransaction(). + SetTokenName("ffff"). + SetTokenSymbol("F"). + SetDecimals(3). + SetInitialSupply(1000000). + SetTreasuryAccountID(client.GetOperatorAccountID()). + SetAdminKey(client.GetOperatorPublicKey()). + SetFreezeKey(client.GetOperatorPublicKey()). + SetWipeKey(client.GetOperatorPublicKey()). + SetKycKey(client.GetOperatorPublicKey()). + SetSupplyKey(client.GetOperatorPublicKey()). + SetFreezeDefault(false). + Execute(client) + assert.NoError(t, err) + + receipt, err = resp.GetReceipt(client) + assert.NoError(t, err) + + tokenID := *receipt.TokenID + + nodeId := resp.NodeID + + transaction, err := NewTokenAssociateTransaction(). + SetNodeAccountIDs([]AccountID{nodeId}). + SetAccountID(accountID). + SetTokenIDs(tokenID). + FreezeWith(client) + assert.NoError(t, err) + + resp, err = transaction. + Sign(newKey). + Execute(client) + assert.NoError(t, err) + + _, err = resp.GetReceipt(client) + assert.NoError(t, err) + + resp, err = NewTokenGrantKycTransaction(). + SetNodeAccountIDs([]AccountID{nodeId}). + SetAccountID(accountID). + SetTokenID(tokenID). + Execute(client) + assert.NoError(t, err) + + _, err = resp.GetReceipt(client) + assert.NoError(t, err) + + resp, err = NewTransferTransaction(). + SetNodeAccountIDs([]AccountID{nodeId}). + AddTokenTransfer(tokenID, client.GetOperatorAccountID(), -10). + Execute(client) + assert.Error(t, err) + + _, err = resp.GetReceipt(client) + assert.Error(t, err) + + resp, err = NewTokenWipeTransaction(). + SetNodeAccountIDs([]AccountID{nodeId}). + SetTokenID(tokenID). + SetAccountID(accountID). + SetAmount(10). + Execute(client) + assert.NoError(t, err) + + _, err = resp.GetReceipt(client) + assert.NoError(t, err) + + tx, err := NewAccountDeleteTransaction(). + SetAccountID(accountID). + SetTransferAccountID(client.GetOperatorAccountID()). + FreezeWith(client) + assert.NoError(t, err) + + resp, err = tx. + Sign(newKey). + Execute(client) + assert.NoError(t, err) + + _, err = resp.GetReceipt(client) + assert.NoError(t, err) +} + +//func TestTokenTransferTransactionFrozen_Execute(t *testing.T) { +// client := newTestClient(t) +// +// newKey, err := GeneratePrivateKey() +// assert.NoError(t, err) +// +// newBalance := NewHbar(1) +// +// assert.Equal(t, HbarUnits.Hbar.numberOfTinybar(), newBalance.tinybar) +// +// resp, err := NewAccountCreateTransaction(). +// SetKey(newKey.PublicKey()). +// SetMaxTransactionFee(NewHbar(2)). +// SetInitialBalance(newBalance). +// Execute(client) +// assert.NoError(t, err) +// +// receipt, err := resp.GetReceipt(client) +// assert.NoError(t, err) +// +// accountID := *receipt.AccountID +// +// resp, err = NewTokenCreateTransaction(). +// SetTokenName("ffff"). +// SetTokenSymbol("F"). +// SetDecimals(3). +// SetInitialSupply(1000000). +// SetTreasuryAccountID(client.GetOperatorAccountID()). +// SetAdminKey(client.GetOperatorPublicKey()). +// SetFreezeKey(client.GetOperatorPublicKey()). +// SetWipeKey(client.GetOperatorPublicKey()). +// SetKycKey(client.GetOperatorPublicKey()). +// SetSupplyKey(client.GetOperatorPublicKey()). +// SetFreezeDefault(false). +// Execute(client) +// assert.NoError(t, err) +// +// receipt, err = resp.GetReceipt(client) +// assert.NoError(t, err) +// +// tokenID := *receipt.TokenID +// +// nodeId := resp.NodeID +// +// transaction, err := NewTokenAssociateTransaction(). +// SetNodeAccountIDs([]AccountID{nodeId}). +// SetAccountID(accountID). +// SetTokenIDs(tokenID). +// FreezeWith(client) +// assert.NoError(t, err) +// +// resp, err = transaction. +// Sign(newKey). +// Execute(client) +// assert.NoError(t, err) +// +// _, err = resp.GetReceipt(client) +// assert.NoError(t, err) +// +// resp, err = NewTokenGrantKycTransaction(). +// SetNodeAccountIDs([]AccountID{nodeId}). +// SetAccountID(accountID). +// SetTokenID(tokenID). +// Execute(client) +// assert.NoError(t, err) +// +// _, err = resp.GetReceipt(client) +// assert.NoError(t, err) +// +// transfer, err := NewTransferTransaction(). +// SetNodeAccountIDs([]AccountID{nodeId}). +// AddTokenTransfer(tokenID, client.GetOperatorAccountID(), -10). +// FreezeWith(client) +// assert.NoError(t, err) +// +// resp, err = transfer. +// AddTokenTransfer(tokenID, accountID, 10). +// Execute(client) +// assert.Error(t, err) +// +// _, err = resp.GetReceipt(client) +// assert.Error(t, err) +// +// resp, err = NewTokenWipeTransaction(). +// SetNodeAccountIDs([]AccountID{nodeId}). +// SetTokenID(tokenID). +// SetAccountID(accountID). +// SetAmount(10). +// Execute(client) +// assert.NoError(t, err) +// +// _, err = resp.GetReceipt(client) +// assert.NoError(t, err) +// +// tx, err := NewAccountDeleteTransaction(). +// SetAccountID(accountID). +// SetTransferAccountID(client.GetOperatorAccountID()). +// FreezeWith(client) +// assert.NoError(t, err) +// +// resp, err = tx. +// Sign(newKey). +// Execute(client) +// assert.NoError(t, err) +// +// _, err = resp.GetReceipt(client) +// assert.NoError(t, err) +//} diff --git a/topic_create_transaction_test.go b/topic_create_transaction_test.go index 9485a8a65..8db34a22c 100644 --- a/topic_create_transaction_test.go +++ b/topic_create_transaction_test.go @@ -49,3 +49,65 @@ func TestTopicCreateTransaction_Execute(t *testing.T) { _, err = resp.GetReceipt(client) assert.NoError(t, err) } + +func TestTopicCreateTransactionDifferentKeys_Execute(t *testing.T) { + client := newTestClient(t) + + topicMemo := "go-sdk::TestConsensusTopicCreateTransaction_Execute" + + keys := make([]PrivateKey, 2) + pubKeys := make([]PublicKey, 2) + + for i := range keys { + newKey, err := GeneratePrivateKey() + assert.NoError(t, err) + + keys[i] = newKey + pubKeys[i] = newKey.PublicKey() + } + + tx, err := NewTopicCreateTransaction(). + SetAdminKey(pubKeys[0]). + SetSubmitKey(pubKeys[1]). + SetTopicMemo(topicMemo). + SetMaxTransactionFee(NewHbar(5)). + FreezeWith(client) + assert.NoError(t, err) + + tx, err = tx.SignWithOperator(client) + assert.NoError(t, err) + tx.Sign(keys[0]) + resp, err := tx.Execute(client) + assert.NoError(t, err) + + receipt, err := resp.GetReceipt(client) + assert.NoError(t, err) + + topicID := *receipt.TopicID + assert.NotNil(t, topicID) + + nodeIDs := make([]AccountID, 1) + nodeIDs[0] = resp.NodeID + + info, err := NewTopicInfoQuery(). + SetTopicID(topicID). + SetNodeAccountIDs(nodeIDs). + SetQueryPayment(NewHbar(22)). + Execute(client) + assert.NoError(t, err) + assert.NotNil(t, info) + + assert.Equal(t, topicMemo, info.Memo) + assert.Equal(t, uint64(0), info.SequenceNumber) + assert.Equal(t, pubKeys[0].String(), info.AdminKey.String()) + + resp, err = NewTopicDeleteTransaction(). + SetTopicID(topicID). + SetNodeAccountIDs(nodeIDs). + SetMaxTransactionFee(NewHbar(5)). + Execute(client) + assert.NoError(t, err) + + _, err = resp.GetReceipt(client) + assert.NoError(t, err) +} diff --git a/transaction_receipt_query.go b/transaction_receipt_query.go index bbef608a3..f903725a8 100644 --- a/transaction_receipt_query.go +++ b/transaction_receipt_query.go @@ -71,6 +71,8 @@ func transactionReceiptQuery_shouldRetry(status Status, response response) bool status = Status(response.query.GetTransactionGetReceipt().Receipt.Status) + println("status:", status.String()) + switch status { case StatusBusy, StatusUnknown, StatusOk, StatusReceiptNotFound: return true