Skip to content

Commit

Permalink
add custom handling for getting non fungible tokens
Browse files Browse the repository at this point in the history
  • Loading branch information
ssd04 committed Dec 3, 2024
1 parent 8a9b204 commit 58179fa
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 3 deletions.
11 changes: 10 additions & 1 deletion node/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ func (n *Node) GetAllIssuedESDTs(tokenType string, ctx context.Context) ([]strin
continue
}

if bytes.Equal(esdtToken.TokenType, []byte(tokenType)) {
if tokenTypeEquals(esdtToken.TokenType, tokenType) {
tokens = append(tokens, tokenName)
}
}
Expand All @@ -268,6 +268,15 @@ func (n *Node) GetAllIssuedESDTs(tokenType string, ctx context.Context) ([]strin
return tokens, nil
}

func tokenTypeEquals(tokenType []byte, providedTokenType string) bool {
if providedTokenType == core.NonFungibleESDTv2 ||
providedTokenType == core.NonFungibleESDT {
return bytes.Equal(tokenType, []byte(core.NonFungibleESDTv2)) || bytes.Equal(tokenType, []byte(core.NonFungibleESDT))
}

return bytes.Equal(tokenType, []byte(providedTokenType))
}

func (n *Node) getEsdtDataFromLeaf(leaf core.KeyValueHolder) (*systemSmartContracts.ESDTDataV2, bool) {
esdtToken := &systemSmartContracts.ESDTDataV2{}

Expand Down
17 changes: 15 additions & 2 deletions node/node_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1160,6 +1160,7 @@ func TestNode_GetAllIssuedESDTs(t *testing.T) {
esdtToken := []byte("TCK-RANDOM")
sftToken := []byte("SFT-RANDOM")
nftToken := []byte("NFT-RANDOM")
nftTokenV2 := []byte("NFT-RANDOM-V2")

esdtData := &systemSmartContracts.ESDTDataV2{TokenName: []byte("fungible"), TokenType: []byte(core.FungibleESDT)}
marshalledData, _ := getMarshalizer().Marshal(esdtData)
Expand All @@ -1173,8 +1174,13 @@ func TestNode_GetAllIssuedESDTs(t *testing.T) {
nftMarshalledData, _ := getMarshalizer().Marshal(nftData)
_ = acc.SaveKeyValue(nftToken, nftMarshalledData)

nftData2 := &systemSmartContracts.ESDTDataV2{TokenName: []byte("non fungible v2"), TokenType: []byte(core.NonFungibleESDT)}
nftMarshalledData2, _ := getMarshalizer().Marshal(nftData2)
_ = acc.SaveKeyValue(nftTokenV2, nftMarshalledData2)

esdtSuffix := append(esdtToken, acc.AddressBytes()...)
nftSuffix := append(nftToken, acc.AddressBytes()...)
nftSuffix2 := append(nftTokenV2, acc.AddressBytes()...)
sftSuffix := append(sftToken, acc.AddressBytes()...)

acc.SetDataTrie(
Expand All @@ -1189,6 +1195,8 @@ func TestNode_GetAllIssuedESDTs(t *testing.T) {

trieLeaf, _ = tlp.ParseLeaf(nftToken, append(nftMarshalledData, nftSuffix...), core.NotSpecified)
leavesChannels.LeavesChan <- trieLeaf
trieLeaf, _ = tlp.ParseLeaf(nftTokenV2, append(nftMarshalledData2, nftSuffix2...), core.NotSpecified)
leavesChannels.LeavesChan <- trieLeaf
close(leavesChannels.LeavesChan)
leavesChannels.ErrChan.Close()
}()
Expand Down Expand Up @@ -1241,12 +1249,17 @@ func TestNode_GetAllIssuedESDTs(t *testing.T) {

value, err = n.GetAllIssuedESDTs(core.NonFungibleESDT, context.Background())
assert.Nil(t, err)
assert.Equal(t, 1, len(value))
assert.Equal(t, 2, len(value)) // for both versions
assert.Equal(t, string(nftToken), value[0])

value, err = n.GetAllIssuedESDTs(core.NonFungibleESDTv2, context.Background())
assert.Nil(t, err)
assert.Equal(t, 2, len(value)) // for both versions
assert.Equal(t, string(nftToken), value[0])

value, err = n.GetAllIssuedESDTs("", context.Background())
assert.Nil(t, err)
assert.Equal(t, 3, len(value))
assert.Equal(t, 4, len(value))
}

func TestNode_GetESDTsWithRole(t *testing.T) {
Expand Down

0 comments on commit 58179fa

Please sign in to comment.