mirror of
https://github.com/openimsdk/open-im-server.git
synced 2026-07-04 09:57:43 +08:00
91 lines
2.6 KiB
Go
91 lines
2.6 KiB
Go
package chain
|
|
|
|
import (
|
|
"math/big"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/ethereum/go-ethereum/accounts/abi"
|
|
"github.com/ethereum/go-ethereum/common"
|
|
)
|
|
|
|
func TestTronLogsToEVMLogsAndParsePacketCreated(t *testing.T) {
|
|
abiJSON, err := ExtractABIFromEmbeddedArtifact()
|
|
if err != nil {
|
|
t.Fatalf("ExtractABIFromEmbeddedArtifact() error = %v", err)
|
|
}
|
|
|
|
parsedABI, err := abi.JSON(strings.NewReader(string(abiJSON)))
|
|
if err != nil {
|
|
t.Fatalf("abi.JSON() error = %v", err)
|
|
}
|
|
|
|
eventDef := parsedABI.Events["PacketCreated"]
|
|
packetID := big.NewInt(12)
|
|
creator := common.HexToAddress("0x1111111111111111111111111111111111111111")
|
|
packetType := big.NewInt(1)
|
|
token := common.HexToAddress("0x2222222222222222222222222222222222222222")
|
|
totalAmount := big.NewInt(1000)
|
|
totalShares := big.NewInt(10)
|
|
expiryAt := big.NewInt(1234567890)
|
|
|
|
data, err := eventDef.Inputs.NonIndexed().Pack(token, totalAmount, totalShares, expiryAt)
|
|
if err != nil {
|
|
t.Fatalf("Pack() error = %v", err)
|
|
}
|
|
|
|
info := &tronTxInfoResp{
|
|
ID: "abc123",
|
|
BlockNumber: 88,
|
|
Log: []struct {
|
|
Address string `json:"address"`
|
|
Topics []string `json:"topics"`
|
|
Data string `json:"data"`
|
|
}{
|
|
{
|
|
Address: "41aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
Topics: []string{
|
|
strings.TrimPrefix(eventDef.ID.Hex(), "0x"),
|
|
strings.TrimPrefix(common.BigToHash(packetID).Hex(), "0x"),
|
|
strings.TrimPrefix(common.BytesToHash(common.LeftPadBytes(creator.Bytes(), 32)).Hex(), "0x"),
|
|
strings.TrimPrefix(common.BigToHash(packetType).Hex(), "0x"),
|
|
},
|
|
Data: common.Bytes2Hex(data),
|
|
},
|
|
},
|
|
}
|
|
|
|
logs, err := tronLogsToEVMLogs(info, info.ID)
|
|
if err != nil {
|
|
t.Fatalf("tronLogsToEVMLogs() error = %v", err)
|
|
}
|
|
|
|
events, err := ParseEventsFromLogs(logs, parsedABI)
|
|
if err != nil {
|
|
t.Fatalf("ParseEventsFromLogs() error = %v", err)
|
|
}
|
|
if len(events) != 1 {
|
|
t.Fatalf("expected 1 event, got %d", len(events))
|
|
}
|
|
|
|
event := events[0]
|
|
if event.Name != "PacketCreated" {
|
|
t.Fatalf("unexpected event name: %s", event.Name)
|
|
}
|
|
if got := GetPacketIDFromEvent(event).String(); got != "12" {
|
|
t.Fatalf("packet id mismatch: got %s", got)
|
|
}
|
|
if got := GetAddressFromEvent(event, "creator").Hex(); got != creator.Hex() {
|
|
t.Fatalf("creator mismatch: got %s want %s", got, creator.Hex())
|
|
}
|
|
if got := GetUintFromEvent(event, "packetType").String(); got != "1" {
|
|
t.Fatalf("packetType mismatch: got %s", got)
|
|
}
|
|
if got := GetAddressFromEvent(event, "token").Hex(); got != token.Hex() {
|
|
t.Fatalf("token mismatch: got %s want %s", got, token.Hex())
|
|
}
|
|
if event.BlockNumber != 88 {
|
|
t.Fatalf("block number mismatch: got %d", event.BlockNumber)
|
|
}
|
|
}
|