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 //}