github.com/hashgraph/hedera-sdk-go/v2@v2.48.0/schedule_create_transaction_e2e_test.go (about)

     1  //go:build all || e2e
     2  // +build all e2e
     3  
     4  package hedera
     5  
     6  import (
     7  	"testing"
     8  	"time"
     9  
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  /*-
    14   *
    15   * Hedera Go SDK
    16   *
    17   * Copyright (C) 2020 - 2024 Hedera Hashgraph, LLC
    18   *
    19   * Licensed under the Apache License, Version 2.0 (the "License");
    20   * you may not use this file except in compliance with the License.
    21   * You may obtain a copy of the License at
    22   *
    23   *      http://www.apache.org/licenses/LICENSE-2.0
    24   *
    25   * Unless required by applicable law or agreed to in writing, software
    26   * distributed under the License is distributed on an "AS IS" BASIS,
    27   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    28   * See the License for the specific language governing permissions and
    29   * limitations under the License.
    30   *
    31   */
    32  
    33  func TestIntegrationScheduleCreateTransactionCanExecute(t *testing.T) {
    34  	t.Parallel()
    35  	env := NewIntegrationTestEnv(t)
    36  
    37  	keys := make([]PrivateKey, 2)
    38  	pubKeys := make([]PublicKey, 2)
    39  
    40  	for i := range keys {
    41  		newKey, err := PrivateKeyGenerateEd25519()
    42  		require.NoError(t, err)
    43  
    44  		keys[i] = newKey
    45  		pubKeys[i] = newKey.PublicKey()
    46  	}
    47  
    48  	keyList := NewKeyList().
    49  		AddAllPublicKeys(pubKeys)
    50  
    51  	createResponse, err := NewAccountCreateTransaction().
    52  		SetKey(keyList).
    53  		SetNodeAccountIDs(env.NodeAccountIDs).
    54  		SetInitialBalance(NewHbar(10)).
    55  		Execute(env.Client)
    56  	require.NoError(t, err)
    57  
    58  	transactionReceipt, err := createResponse.SetValidateStatus(true).GetReceipt(env.Client)
    59  	require.NoError(t, err)
    60  
    61  	transactionID := TransactionIDGenerate(env.OperatorID)
    62  	newAccountID := *transactionReceipt.AccountID
    63  
    64  	transferTx := NewTransferTransaction().
    65  		SetTransactionID(transactionID).
    66  		AddHbarTransfer(newAccountID, HbarFrom(-1, HbarUnits.Hbar)).
    67  		AddHbarTransfer(env.Client.GetOperatorAccountID(), HbarFrom(1, HbarUnits.Hbar))
    68  
    69  	scheduled, err := transferTx.Schedule()
    70  	require.NoError(t, err)
    71  
    72  	scheduleResponse, err := scheduled.
    73  		SetExpirationTime(time.Now().Add(30 * time.Minute)).
    74  		Execute(env.Client)
    75  	require.NoError(t, err)
    76  
    77  	scheduleRecord, err := scheduleResponse.GetRecord(env.Client)
    78  	require.NoError(t, err)
    79  
    80  	scheduleID := *scheduleRecord.Receipt.ScheduleID
    81  
    82  	signTransaction, err := NewScheduleSignTransaction().
    83  		SetNodeAccountIDs(env.NodeAccountIDs).
    84  		SetScheduleID(scheduleID).
    85  		FreezeWith(env.Client)
    86  
    87  	signTransaction.Sign(keys[0])
    88  
    89  	resp, err := signTransaction.Execute(env.Client)
    90  	require.NoError(t, err)
    91  
    92  	// Getting the receipt to make sure the signing executed properly
    93  	_, err = resp.SetValidateStatus(true).GetReceipt(env.Client)
    94  	require.NoError(t, err)
    95  
    96  	// Making sure the scheduled transaction executed properly with schedule info query
    97  	info, err := NewScheduleInfoQuery().
    98  		SetScheduleID(scheduleID).
    99  		SetNodeAccountIDs(env.NodeAccountIDs).
   100  		Execute(env.Client)
   101  	require.NoError(t, err)
   102  
   103  	signTransaction, err = NewScheduleSignTransaction().
   104  		SetNodeAccountIDs(env.NodeAccountIDs).
   105  		SetScheduleID(scheduleID).
   106  		FreezeWith(env.Client)
   107  
   108  	// Signing the scheduled transaction
   109  	signTransaction.Sign(keys[1])
   110  
   111  	resp, err = signTransaction.Execute(env.Client)
   112  	require.NoError(t, err)
   113  
   114  	_, err = resp.SetValidateStatus(true).GetReceipt(env.Client)
   115  	require.NoError(t, err)
   116  
   117  	info, err = NewScheduleInfoQuery().
   118  		SetScheduleID(scheduleID).
   119  		SetNodeAccountIDs(env.NodeAccountIDs).
   120  		Execute(env.Client)
   121  	require.NoError(t, err)
   122  
   123  	require.NotNil(t, info.ExecutedAt)
   124  }
   125  
   126  //
   127  // func DisabledTestIntegrationScheduleCreateTransactionMultiSign(t *testing.T) {
   128  // env := NewIntegrationTestEnv(t)
   129  //
   130  //	keys := make([]PrivateKey, 3)
   131  //	pubKeys := make([]PublicKey, 3)
   132  //
   133  //	for i := range keys {
   134  //		newKey, err := PrivateKeyGenerateEd25519()
   135  //		require.NoError(t, err)
   136  //
   137  //		keys[i] = newKey
   138  //		pubKeys[i] = newKey.PublicKey()
   139  //	}
   140  //
   141  //	keyList := NewKeyList().
   142  //		AddAllPublicKeys(pubKeys)
   143  //
   144  //	createResponse, err := NewAccountCreateTransaction().
   145  //		SetKey(keyList).
   146  //		SetInitialBalance(NewHbar(10)).
   147  //		SetNodeAccountIDs(env.NodeAccountIDs).
   148  //		Execute(env.Client)
   149  //	require.NoError(t, err)
   150  //
   151  //	transactionReceipt, err := createResponse.GetReceipt(env.Client)
   152  //	require.NoError(t, err)
   153  //
   154  //	transactionID := TransactionIDGenerate(env.Client.GetOperatorAccountID())
   155  //
   156  //	newAccountID := *transactionReceipt.AccountID
   157  //
   158  //	transferTx := NewTransferTransaction().
   159  //		SetTransactionID(transactionID).
   160  //		AddHbarTransfer(newAccountID, HbarFrom(-1, HbarUnits.Hbar)).
   161  //		AddHbarTransfer(env.Client.GetOperatorAccountID(), HbarFrom(1, HbarUnits.Hbar))
   162  //
   163  //	scheduled, err := transferTx.Schedule()
   164  //	require.NoError(t, err)
   165  //
   166  //	scheduleResponse, err := scheduled.Execute(env.Client)
   167  //	require.NoError(t, err)
   168  //
   169  //	scheduleReceipt, err := scheduleResponse.GetReceipt(env.Client)
   170  //	require.NoError(t, err)
   171  //
   172  //	scheduleID := *scheduleReceipt.ScheduleID
   173  //
   174  //	info, err := NewScheduleInfoQuery().
   175  //		SetNodeAccountIDs([]AccountID{createResponse.NodeID}).
   176  //		SetScheduleID(scheduleID).
   177  //		Execute(env.Client)
   178  //	require.NoError(t, err)
   179  //
   180  //	transfer, err := info.GetScheduledTransaction()
   181  //	require.NoError(t, err)
   182  //	assert.NotNil(t, transfer)
   183  //
   184  //	signTransaction, err := NewScheduleSignTransaction().
   185  //		SetNodeAccountIDs([]AccountID{createResponse.NodeID}).
   186  //		SetScheduleID(scheduleID).
   187  //		FreezeWith(env.Client)
   188  //	require.NoError(t, err)
   189  //
   190  //	signTransaction.Sign(keys[0])
   191  //	signTransaction.Sign(keys[1])
   192  //	signTransaction.Sign(keys[2])
   193  //
   194  //	resp, err := signTransaction.Execute(env.Client)
   195  //	require.NoError(t, err)
   196  //
   197  //	_, err = resp.SetValidateStatus(true).GetReceipt(env.Client)
   198  //	require.NoError(t, err)
   199  //
   200  //	info2, err := NewScheduleInfoQuery().
   201  //		SetScheduleID(scheduleID).
   202  //		SetNodeAccountIDs([]AccountID{createResponse.NodeID}).
   203  //		Execute(env.Client)
   204  //	require.NoError(t, err)
   205  //	assert.False(t, info2.ExecutedAt.IsZero())
   206  //}
   207  //
   208  // func DisabledTestIntegrationScheduleDeleteTransactionCanExecute(t *testing.T) {
   209  // env := NewIntegrationTestEnv(t)
   210  //
   211  //	key, err := GeneratePrivateKey()
   212  //	key2, err := GeneratePrivateKey()
   213  //	require.NoError(t, err)
   214  //
   215  //	createResponse, err := NewAccountCreateTransaction().
   216  //		SetKey(key).
   217  //		SetInitialBalance(NewHbar(10)).
   218  //		SetNodeAccountIDs(env.NodeAccountIDs).
   219  //		Execute(env.Client)
   220  //	require.NoError(t, err)
   221  //
   222  //	transactionReceipt, err := createResponse.GetReceipt(env.Client)
   223  //	require.NoError(t, err)
   224  //
   225  //	transactionID := TransactionIDGenerate(env.Client.GetOperatorAccountID())
   226  //
   227  //	newAccountID := *transactionReceipt.AccountID
   228  //
   229  //	transferTx := NewTransferTransaction().
   230  //		SetTransactionID(transactionID).
   231  //		AddHbarTransfer(newAccountID, HbarFrom(-1, HbarUnits.Hbar)).
   232  //		AddHbarTransfer(env.Client.GetOperatorAccountID(), HbarFrom(1, HbarUnits.Hbar))
   233  //
   234  //	scheduled, err := transferTx.Schedule()
   235  //	require.NoError(t, err)
   236  //
   237  //	fr, err := scheduled.SetAdminKey(key2).FreezeWith(env.Client)
   238  //	require.NoError(t, err)
   239  //
   240  //	scheduleResponse, err := fr.Sign(key2).Execute(env.Client)
   241  //	require.NoError(t, err)
   242  //
   243  //	scheduleReceipt, err := scheduleResponse.GetReceipt(env.Client)
   244  //	require.NoError(t, err)
   245  //
   246  //	scheduleID := *scheduleReceipt.ScheduleID
   247  //
   248  //	info, err := NewScheduleInfoQuery().
   249  //		SetNodeAccountIDs([]AccountID{createResponse.NodeID}).
   250  //		SetScheduleID(scheduleID).
   251  //		Execute(env.Client)
   252  //	require.NoError(t, err)
   253  //
   254  //	transfer, err := info.GetScheduledTransaction()
   255  //	require.NoError(t, err)
   256  //	assert.NotNil(t, transfer)
   257  //	assert.Nil(t, info.ExecutedAt)
   258  //	assert.Nil(t, info.DeletedAt)
   259  //
   260  //	tx2, err := NewScheduleDeleteTransaction().
   261  //		SetScheduleID(scheduleID).
   262  //		FreezeWith(env.Client)
   263  //	require.NoError(t, err)
   264  //
   265  //	resp, err := tx2.
   266  //		Sign(key2).
   267  //		Execute(env.Client)
   268  //	require.NoError(t, err)
   269  //
   270  //	_, err = resp.SetValidateStatus(true).GetReceipt(env.Client)
   271  //	require.NoError(t, err)
   272  //
   273  //	info2, err := NewScheduleInfoQuery().
   274  //		SetScheduleID(scheduleID).
   275  //		SetNodeAccountIDs([]AccountID{createResponse.NodeID}).
   276  //		Execute(env.Client)
   277  //	require.NoError(t, err)
   278  //	assert.False(t, info2.DeletedAt.IsZero())
   279  //}
   280  //
   281  // func DisabledTestIntegrationScheduleCreateTransactionCheckValidGetTransaction(t *testing.T) {
   282  //	env := NewIntegrationTestEnv(t)
   283  //
   284  //	newKey, err := PrivateKeyGenerateEd25519()
   285  //	require.NoError(t, err)
   286  //
   287  //	newBalance := NewHbar(1)
   288  //
   289  //	assert.Equal(t, HbarUnits.Hbar._NumberOfTinybar(), newBalance.tinybar)
   290  //
   291  //	transactionID := TransactionIDGenerate(env.Client.GetOperatorAccountID())
   292  //
   293  //	tx := NewAccountCreateTransaction().
   294  //		SetTransactionID(transactionID).
   295  //		SetKey(newKey.PublicKey()).
   296  //		SetNodeAccountIDs(env.NodeAccountIDs).
   297  //		SetMaxTransactionFee(NewHbar(2)).
   298  //		SetInitialBalance(newBalance)
   299  //
   300  //	require.NoError(t, err)
   301  //
   302  //	scheduleTx, err := tx.Schedule()
   303  //	require.NoError(t, err)
   304  //
   305  //	resp, err := scheduleTx.
   306  //		SetPayerAccountID(env.Client.GetOperatorAccountID()).
   307  //		SetAdminKey(env.Client.GetOperatorPublicKey()).
   308  //		Execute(env.Client)
   309  //	require.NoError(t, err)
   310  //
   311  //	receipt, err := resp.SetValidateStatus(true).GetReceipt(env.Client)
   312  //	require.NoError(t, err)
   313  //
   314  //	info, err := NewScheduleInfoQuery().
   315  //		SetScheduleID(*receipt.ScheduleID).
   316  //		SetQueryPayment(NewHbar(2)).
   317  //		Execute(env.Client)
   318  //	require.NoError(t, err)
   319  //
   320  //	infoTx, err := info.GetScheduledTransaction()
   321  //	require.NoError(t, err)
   322  //
   323  //	assert.NotNil(t, infoTx)
   324  //
   325  //	switch createTx := infoTx.(type) {
   326  //	case *AccountCreateTransaction:
   327  //		assert.Equal(t, createTx.pbBody.GetCryptoCreateAccount().InitialBalance, uint64(NewHbar(1).tinybar))
   328  //	}
   329  //
   330  //	tx2, err := NewScheduleDeleteTransaction().
   331  //		SetScheduleID(*receipt.ScheduleID).
   332  //		FreezeWith(env.Client)
   333  //	require.NoError(t, err)
   334  //
   335  //	resp, err = tx2.
   336  //		Sign(newKey).
   337  //		Execute(env.Client)
   338  //	require.NoError(t, err)
   339  //
   340  //	_, err = resp.SetValidateStatus(true).GetReceipt(env.Client)
   341  //	assert.Error(t, err)
   342  //	if err != nil {
   343  //		assert.Equal(t, "exceptional receipt status: SCHEDULE_ALREADY_EXECUTED", err.Error())
   344  //	}
   345  //}
   346  //
   347  // func DisabledTestIntegrationScheduleCreateTransactionDuplicateFails(t *testing.T) {
   348  //	env := NewIntegrationTestEnv(t)
   349  //
   350  //	key, err := GeneratePrivateKey()
   351  //	key2, err := GeneratePrivateKey()
   352  //	require.NoError(t, err)
   353  //
   354  //	createResponse, err := NewAccountCreateTransaction().
   355  //		SetKey(key).
   356  //		SetInitialBalance(NewHbar(10)).
   357  //		SetNodeAccountIDs(env.NodeAccountIDs).
   358  //		Execute(env.Client)
   359  //	require.NoError(t, err)
   360  //
   361  //	transactionReceipt, err := createResponse.GetReceipt(env.Client)
   362  //	require.NoError(t, err)
   363  //
   364  //	transactionID := TransactionIDGenerate(env.Client.GetOperatorAccountID())
   365  //
   366  //	newAccountID := *transactionReceipt.AccountID
   367  //
   368  //	transferTx := NewTransferTransaction().
   369  //		SetTransactionID(transactionID).
   370  //		AddHbarTransfer(newAccountID, HbarFrom(-1, HbarUnits.Hbar)).
   371  //		AddHbarTransfer(env.Client.GetOperatorAccountID(), HbarFrom(1, HbarUnits.Hbar))
   372  //
   373  //	scheduled, err := transferTx.Schedule()
   374  //	require.NoError(t, err)
   375  //
   376  //	fr, err := scheduled.SetAdminKey(key2).FreezeWith(env.Client)
   377  //	require.NoError(t, err)
   378  //
   379  //	fr.Sign(key2)
   380  //
   381  //	scheduleResponse, err := fr.Execute(env.Client)
   382  //	require.NoError(t, err)
   383  //
   384  //	_, err = scheduleResponse.GetReceipt(env.Client)
   385  //	require.NoError(t, err)
   386  //
   387  //	resp, err := fr.Execute(env.Client)
   388  //	assert.Error(t, err)
   389  //	if err != nil {
   390  //		assert.Equal(t, fmt.Sprintf("exceptional precheck status DUPLICATE_TRANSACTION received for transaction %s", resp.TransactionID), err.Error())
   391  //	}
   392  //}
   393  //
   394  // func DisabledTestIntegrationScheduleCreateTransactionWithTransferTransaction(t *testing.T) {
   395  //	env := NewIntegrationTestEnv(t)
   396  //
   397  //	key, err := GeneratePrivateKey()
   398  //	require.NoError(t, err)
   399  //
   400  //	_Response, err := NewAccountCreateTransaction().
   401  //		SetKey(key).
   402  //		SetInitialBalance(NewHbar(2)).
   403  //		Execute(env.Client)
   404  //	require.NoError(t, err)
   405  //
   406  //	receipt, err := _Response.GetReceipt(env.Client)
   407  //	require.NoError(t, err)
   408  //
   409  //	accountID := *receipt.AccountID
   410  //
   411  //	tx := NewTransferTransaction().
   412  //		AddHbarTransfer(accountID, NewHbar(1).Negated()).
   413  //		AddHbarTransfer(env.Client.GetOperatorAccountID(), NewHbar(1))
   414  //
   415  //	scheduleTx, err := tx.Schedule()
   416  //	require.NoError(t, err)
   417  //
   418  //	scheduleTx = scheduleTx.
   419  //		SetNodeAccountIDs(env.NodeAccountIDs).
   420  //		SetPayerAccountID(env.Client.GetOperatorAccountID()).
   421  //		SetAdminKey(env.Client.GetOperatorPublicKey()).
   422  //		SetTransactionID(TransactionIDGenerate(env.Client.GetOperatorAccountID()))
   423  //
   424  //	_Response, err = scheduleTx.Execute(env.Client)
   425  //	require.NoError(t, err)
   426  //
   427  //	receipt, err = _Response.GetReceipt(env.Client)
   428  //	require.NoError(t, err)
   429  //
   430  //	scheduleID := *receipt.ScheduleID
   431  //
   432  //	scheduleSignTx, err := NewScheduleSignTransaction().
   433  //		SetNodeAccountIDs(env.NodeAccountIDs).
   434  //		SetScheduleID(scheduleID).
   435  //		FreezeWith(env.Client)
   436  //	require.NoError(t, err)
   437  //
   438  //	scheduleSignTx.Sign(key)
   439  //
   440  //	_Response, err = scheduleSignTx.Execute(env.Client)
   441  //	require.NoError(t, err)
   442  //
   443  //	_, err = _Response.GetReceipt(env.Client)
   444  //	require.NoError(t, err)
   445  //
   446  //	info, err := NewScheduleInfoQuery().
   447  //		SetNodeAccountIDs(env.NodeAccountIDs).
   448  //		SetScheduleID(scheduleID).
   449  //		Execute(env.Client)
   450  //	require.NoError(t, err)
   451  //	assert.NotNil(t, info.ExecutedAt)
   452  //
   453  //	err = CloseIntegrationTestEnv(env, nil)
   454  //	require.NoError(t, err)
   455  //}
   456  //
   457  // func DisabledTestIntegrationScheduledTokenNftTransferTransaction(t *testing.T) {
   458  //	env := NewIntegrationTestEnv(t)
   459  //
   460  //	keys := make([]PrivateKey, 3)
   461  //	pubKeys := make([]PublicKey, 3)
   462  //
   463  //	for i := range keys {
   464  //		newKey, err := PrivateKeyGenerateEd25519()
   465  //		require.NoError(t, err)
   466  //
   467  //		keys[i] = newKey
   468  //		pubKeys[i] = newKey.PublicKey()
   469  //	}
   470  //
   471  //	keyList := NewKeyList().
   472  //		AddAllPublicKeys(pubKeys)
   473  //
   474  //	newBalance := NewHbar(2)
   475  //
   476  //	assert.Equal(t, 2*HbarUnits.Hbar._NumberOfTinybar(), newBalance.tinybar)
   477  //
   478  //	resp, err := NewAccountCreateTransaction().
   479  //		SetNodeAccountIDs(env.NodeAccountIDs).
   480  //		SetKey(keyList).
   481  //		SetInitialBalance(newBalance).
   482  //		Execute(env.Client)
   483  //	require.NoError(t, err)
   484  //
   485  //	receipt, err := resp.SetValidateStatus(true).GetReceipt(env.Client)
   486  //	require.NoError(t, err)
   487  //
   488  //	accountID := *receipt.AccountID
   489  //
   490  //	resp, err = fixme
   491  //		SetNodeAccountIDs(env.NodeAccountIDs).
   492  //		SetTokenName("ffff").
   493  //		SetTokenSymbol("F").
   494  //		SetTokenType(TokenTypeNonFungibleUnique).
   495  //		SetSupplyType(TokenSupplyTypeFinite).
   496  //		SetMaxSupply(5).
   497  //		SetTreasuryAccountID(env.Client.GetOperatorAccountID()).
   498  //		SetAdminKey(env.Client.GetOperatorPublicKey()).
   499  //		SetFreezeKey(env.Client.GetOperatorPublicKey()).
   500  //		SetWipeKey(env.Client.GetOperatorPublicKey()).
   501  //		SetKycKey(env.Client.GetOperatorPublicKey()).
   502  //		SetSupplyKey(env.Client.GetOperatorPublicKey()).
   503  //		SetFreezeDefault(false).
   504  //		Execute(env.Client)
   505  //	require.NoError(t, err)
   506  //
   507  //	receipt, err = resp.SetValidateStatus(true).GetReceipt(env.Client)
   508  //	require.NoError(t, err)
   509  //
   510  //	tokenID := *receipt.TokenID
   511  //	metaData := [][]byte{{50}, {50}}
   512  //
   513  //	mint, err := NewTokenMintTransaction().
   514  //		SetNodeAccountIDs([]AccountID{resp.NodeID}).
   515  //		SetTokenID(tokenID).
   516  //		SetMetadatas(metaData).
   517  //		Execute(env.Client)
   518  //	require.NoError(t, err)
   519  //
   520  //	mintReceipt, err := mint.GetReceipt(env.Client)
   521  //	require.NoError(t, err)
   522  //
   523  //	transaction, err := NewTokenAssociateTransaction().
   524  //		SetNodeAccountIDs([]AccountID{resp.NodeID}).
   525  //		SetAccountID(accountID).
   526  //		SetTokenIDs(tokenID).
   527  //		FreezeWith(env.Client)
   528  //	require.NoError(t, err)
   529  //
   530  //	resp, err = transaction.
   531  //		Sign(keys[0]).
   532  //		Sign(keys[1]).
   533  //		Sign(keys[2]).
   534  //		Execute(env.Client)
   535  //	require.NoError(t, err)
   536  //
   537  //	_, err = resp.SetValidateStatus(true).GetReceipt(env.Client)
   538  //	require.NoError(t, err)
   539  //
   540  //	resp, err = NewTokenGrantKycTransaction().
   541  //		SetNodeAccountIDs([]AccountID{resp.NodeID}).
   542  //		SetAccountID(accountID).
   543  //		SetTokenID(tokenID).
   544  //		Execute(env.Client)
   545  //	require.NoError(t, err)
   546  //
   547  //	_, err = resp.SetValidateStatus(true).GetReceipt(env.Client)
   548  //	require.NoError(t, err)
   549  //
   550  //	tx := NewTransferTransaction().
   551  //		SetNodeAccountIDs([]AccountID{resp.NodeID}).
   552  //		AddNftTransfer(tokenID.Nft(mintReceipt.SerialNumbers[0]), env.OperatorID, accountID).
   553  //		AddNftTransfer(tokenID.Nft(mintReceipt.SerialNumbers[1]), env.OperatorID, accountID)
   554  //
   555  //	scheduleTx, err := tx.Schedule()
   556  //	require.NoError(t, err)
   557  //
   558  //	scheduleTx = scheduleTx.
   559  //		SetNodeAccountIDs(env.NodeAccountIDs).
   560  //		SetPayerAccountID(accountID).
   561  //		SetAdminKey(env.OperatorKey).
   562  //		SetTransactionID(TransactionIDGenerate(env.Client.GetOperatorAccountID()))
   563  //
   564  //	resp, err = scheduleTx.Execute(env.Client)
   565  //	require.NoError(t, err)
   566  //
   567  //	receipt, err = resp.SetValidateStatus(true).GetReceipt(env.Client)
   568  //	require.NoError(t, err)
   569  //
   570  //	scheduleID := *receipt.ScheduleID
   571  //
   572  //	info, err := NewScheduleInfoQuery().
   573  //		SetNodeAccountIDs(env.NodeAccountIDs).
   574  //		SetScheduleID(scheduleID).
   575  //		Execute(env.Client)
   576  //	require.NoError(t, err)
   577  //	assert.Equal(t, info.CreatorAccountID.String(), env.OperatorID.String())
   578  //
   579  //	signTransaction, err := NewScheduleSignTransaction().
   580  //		SetNodeAccountIDs(env.NodeAccountIDs).
   581  //		SetScheduleID(scheduleID).
   582  //		FreezeWith(env.Client)
   583  //	require.NoError(t, err)
   584  //
   585  //	signTransaction.Sign(keys[0])
   586  //	signTransaction.Sign(keys[1])
   587  //	signTransaction.Sign(keys[2])
   588  //
   589  //	resp, err = signTransaction.Execute(env.Client)
   590  //	require.NoError(t, err)
   591  //
   592  //	_, err = resp.SetValidateStatus(true).GetReceipt(env.Client)
   593  //	require.NoError(t, err)
   594  //
   595  //	info2, err := NewScheduleInfoQuery().
   596  //		SetNodeAccountIDs(env.NodeAccountIDs).
   597  //		SetScheduleID(scheduleID).
   598  //		Execute(env.Client)
   599  //	require.NoError(t, err)
   600  //	assert.NotNil(t, info2.ExecutedAt)
   601  //
   602  //	nftInfo, err := NewTokenNftInfoQuery().
   603  //		ByNftID(tokenID.Nft(mintReceipt.SerialNumbers[0])).
   604  //		SetNodeAccountIDs([]AccountID{resp.NodeID}).
   605  //		Execute(env.Client)
   606  //	require.NoError(t, err)
   607  //
   608  //	assert.Equal(t, accountID.String(), nftInfo[0].AccountID.String())
   609  //
   610  //	err = CloseIntegrationTestEnv(env, &tokenID)
   611  //	require.NoError(t, err)
   612  //}
   613  //
   614  // func DisabledTestIntegrationScheduledTokenNftTransferTransactionSigned(t *testing.T) {
   615  //	env := NewIntegrationTestEnv(t)
   616  //
   617  //	keys := make([]PrivateKey, 3)
   618  //	pubKeys := make([]PublicKey, 3)
   619  //
   620  //	for i := range keys {
   621  //		newKey, err := PrivateKeyGenerateEd25519()
   622  //		require.NoError(t, err)
   623  //
   624  //		keys[i] = newKey
   625  //		pubKeys[i] = newKey.PublicKey()
   626  //	}
   627  //
   628  //	keyList := NewKeyList().
   629  //		AddAllPublicKeys(pubKeys)
   630  //
   631  //	newBalance := NewHbar(2)
   632  //
   633  //	assert.Equal(t, 2*HbarUnits.Hbar._NumberOfTinybar(), newBalance.tinybar)
   634  //
   635  //	resp, err := NewAccountCreateTransaction().
   636  //		SetNodeAccountIDs(env.NodeAccountIDs).
   637  //		SetKey(keyList).
   638  //		SetInitialBalance(newBalance).
   639  //		Execute(env.Client)
   640  //	require.NoError(t, err)
   641  //
   642  //	receipt, err := resp.SetValidateStatus(true).GetReceipt(env.Client)
   643  //	require.NoError(t, err)
   644  //
   645  //	accountID := *receipt.AccountID
   646  //
   647  //	resp, err = fixme
   648  //		SetNodeAccountIDs(env.NodeAccountIDs).
   649  //		SetTokenName("ffff").
   650  //		SetTokenSymbol("F").
   651  //		SetTokenType(TokenTypeNonFungibleUnique).
   652  //		SetSupplyType(TokenSupplyTypeFinite).
   653  //		SetMaxSupply(5).
   654  //		SetTreasuryAccountID(env.Client.GetOperatorAccountID()).
   655  //		SetAdminKey(env.Client.GetOperatorPublicKey()).
   656  //		SetFreezeKey(env.Client.GetOperatorPublicKey()).
   657  //		SetWipeKey(env.Client.GetOperatorPublicKey()).
   658  //		SetKycKey(env.Client.GetOperatorPublicKey()).
   659  //		SetSupplyKey(env.Client.GetOperatorPublicKey()).
   660  //		SetFreezeDefault(false).
   661  //		Execute(env.Client)
   662  //	require.NoError(t, err)
   663  //
   664  //	receipt, err = resp.SetValidateStatus(true).GetReceipt(env.Client)
   665  //	require.NoError(t, err)
   666  //
   667  //	tokenID := *receipt.TokenID
   668  //	metaData := [][]byte{{50}, {50}}
   669  //
   670  //	mint, err := NewTokenMintTransaction().
   671  //		SetNodeAccountIDs([]AccountID{resp.NodeID}).
   672  //		SetTokenID(tokenID).
   673  //		SetMetadatas(metaData).
   674  //		Execute(env.Client)
   675  //	require.NoError(t, err)
   676  //
   677  //	mintReceipt, err := mint.GetReceipt(env.Client)
   678  //	require.NoError(t, err)
   679  //
   680  //	transaction, err := NewTokenAssociateTransaction().
   681  //		SetNodeAccountIDs([]AccountID{resp.NodeID}).
   682  //		SetAccountID(accountID).
   683  //		SetTokenIDs(tokenID).
   684  //		FreezeWith(env.Client)
   685  //	require.NoError(t, err)
   686  //
   687  //	resp, err = transaction.
   688  //		Sign(keys[0]).
   689  //		Sign(keys[1]).
   690  //		Sign(keys[2]).
   691  //		Execute(env.Client)
   692  //	require.NoError(t, err)
   693  //
   694  //	_, err = resp.SetValidateStatus(true).GetReceipt(env.Client)
   695  //	require.NoError(t, err)
   696  //
   697  //	resp, err = NewTokenGrantKycTransaction().
   698  //		SetNodeAccountIDs([]AccountID{resp.NodeID}).
   699  //		SetAccountID(accountID).
   700  //		SetTokenID(tokenID).
   701  //		Execute(env.Client)
   702  //	require.NoError(t, err)
   703  //
   704  //	_, err = resp.SetValidateStatus(true).GetReceipt(env.Client)
   705  //	require.NoError(t, err)
   706  //
   707  //	tx := NewTransferTransaction().
   708  //		SetNodeAccountIDs([]AccountID{resp.NodeID}).
   709  //		AddNftTransfer(tokenID.Nft(mintReceipt.SerialNumbers[0]), env.OperatorID, accountID).
   710  //		AddNftTransfer(tokenID.Nft(mintReceipt.SerialNumbers[1]), env.OperatorID, accountID)
   711  //
   712  //	scheduleTx, err := tx.Schedule()
   713  //	require.NoError(t, err)
   714  //
   715  //	scheduleTx, err = scheduleTx.
   716  //		SetNodeAccountIDs(env.NodeAccountIDs).
   717  //		SetPayerAccountID(accountID).
   718  //		SetAdminKey(env.OperatorKey).
   719  //		SetTransactionID(TransactionIDGenerate(env.Client.GetOperatorAccountID())).
   720  //		FreezeWith(env.Client)
   721  //	require.NoError(t, err)
   722  //
   723  //	scheduleTx.Sign(keys[0])
   724  //	scheduleTx.Sign(keys[1])
   725  //	scheduleTx.Sign(keys[2])
   726  //
   727  //	resp, err = scheduleTx.Execute(env.Client)
   728  //	require.NoError(t, err)
   729  //
   730  //	receipt, err = resp.SetValidateStatus(true).GetReceipt(env.Client)
   731  //	require.NoError(t, err)
   732  //
   733  //	scheduleID := *receipt.ScheduleID
   734  //
   735  //	info2, err := NewScheduleInfoQuery().
   736  //		SetNodeAccountIDs(env.NodeAccountIDs).
   737  //		SetScheduleID(scheduleID).
   738  //		Execute(env.Client)
   739  //	require.NoError(t, err)
   740  //	assert.NotNil(t, info2.ExecutedAt)
   741  //
   742  //	nftInfo, err := NewTokenNftInfoQuery().
   743  //		ByNftID(tokenID.Nft(mintReceipt.SerialNumbers[0])).
   744  //		SetNodeAccountIDs([]AccountID{resp.NodeID}).
   745  //		Execute(env.Client)
   746  //	require.NoError(t, err)
   747  //
   748  //	assert.Equal(t, accountID.String(), nftInfo[0].AccountID.String())
   749  //
   750  //	err = CloseIntegrationTestEnv(env, &tokenID)
   751  //	require.NoError(t, err)
   752  //}