@@ -397,3 +397,53 @@ func TestAsyncMultiTransferOnCallAndOnCallback(t *testing.T) {
397
397
utils .CheckESDTNFTBalance (t , testContext , forwarderAddr , sftTokenID , 2 , halfBalance )
398
398
utils .CheckESDTNFTBalance (t , testContext , forwarderAddr , sftTokenID , 3 , halfBalance )
399
399
}
400
+
401
+ func TestSendNFTToContractWith0Function (t * testing.T ) {
402
+ testContext , err := vm .CreatePreparedTxProcessorWithVMs (config.EnableEpochs {})
403
+ require .Nil (t , err )
404
+ defer testContext .Close ()
405
+
406
+ ownerAddr := []byte ("12345678901234567890123456789010" )
407
+ sftTokenID := []byte ("SFT-123456" )
408
+ sftNonce := uint64 (1 )
409
+ sftBalance := big .NewInt (1000 )
410
+
411
+ utils .CreateAccountWithESDTBalance (t , testContext .Accounts , ownerAddr , big .NewInt (1000000000 ), sftTokenID , sftNonce , sftBalance )
412
+ utils .CheckESDTNFTBalance (t , testContext , ownerAddr , sftTokenID , sftNonce , sftBalance )
413
+
414
+ gasPrice := uint64 (10 )
415
+ ownerAccount , _ := testContext .Accounts .LoadAccount (ownerAddr )
416
+ deployGasLimit := uint64 (1000000 )
417
+ txGasLimit := uint64 (1000000 )
418
+
419
+ vaultAddr := utils .DoDeploySecond (t ,
420
+ testContext ,
421
+ "../esdt/testdata/vault-managed-api.wasm" ,
422
+ ownerAccount ,
423
+ gasPrice ,
424
+ deployGasLimit ,
425
+ nil ,
426
+ big .NewInt (0 ),
427
+ )
428
+
429
+ // send the tokens to vault
430
+ ownerAccount , _ = testContext .Accounts .LoadAccount (ownerAddr )
431
+ tx := utils .CreateESDTNFTTransferTx (
432
+ ownerAccount .GetNonce (),
433
+ ownerAddr ,
434
+ vaultAddr ,
435
+ sftTokenID ,
436
+ sftNonce ,
437
+ sftBalance ,
438
+ gasPrice ,
439
+ txGasLimit ,
440
+ "" ,
441
+ )
442
+ tx .Data = append (tx .Data , []byte ("@" )... )
443
+ retCode , err := testContext .TxProcessor .ProcessTransaction (tx )
444
+ require .Equal (t , vmcommon .Ok , retCode )
445
+ require .Nil (t , err )
446
+
447
+ _ , err = testContext .Accounts .Commit ()
448
+ require .Nil (t , err )
449
+ }
0 commit comments