You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.3 KiB
79 lines
2.3 KiB
package chain
|
|
|
|
import (
|
|
"math/big"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/ethereum/go-ethereum/accounts/abi"
|
|
"github.com/ethereum/go-ethereum/common"
|
|
"github.com/ethereum/go-ethereum/core/types"
|
|
)
|
|
|
|
func TestParseEventsFromLogs_ParsesRefundEvent(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["PacketRefunded"]
|
|
packetID := big.NewInt(101)
|
|
operator := common.HexToAddress("0x1111111111111111111111111111111111111111")
|
|
refundTo := common.HexToAddress("0x2222222222222222222222222222222222222222")
|
|
amount := big.NewInt(8888)
|
|
|
|
data, err := eventDef.Inputs.NonIndexed().Pack(amount)
|
|
if err != nil {
|
|
t.Fatalf("Pack() error = %v", err)
|
|
}
|
|
|
|
log := &types.Log{
|
|
Address: common.HexToAddress("0x3333333333333333333333333333333333333333"),
|
|
Topics: []common.Hash{
|
|
eventDef.ID,
|
|
common.BigToHash(packetID),
|
|
common.BytesToHash(common.LeftPadBytes(operator.Bytes(), 32)),
|
|
common.BytesToHash(common.LeftPadBytes(refundTo.Bytes(), 32)),
|
|
},
|
|
Data: data,
|
|
BlockNumber: 77,
|
|
TxHash: common.HexToHash("0xabc"),
|
|
}
|
|
|
|
events, err := ParseEventsFromLogs([]*types.Log{log}, 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 != "PacketRefunded" {
|
|
t.Fatalf("unexpected event name: %s", event.Name)
|
|
}
|
|
if got := GetPacketIDFromEvent(event).String(); got != "101" {
|
|
t.Fatalf("packet id mismatch: got %s", got)
|
|
}
|
|
if got := GetAddressFromEvent(event, "operator").Hex(); got != operator.Hex() {
|
|
t.Fatalf("operator mismatch: got %s want %s", got, operator.Hex())
|
|
}
|
|
if got := GetAddressFromEvent(event, "refundTo").Hex(); got != refundTo.Hex() {
|
|
t.Fatalf("refundTo mismatch: got %s want %s", got, refundTo.Hex())
|
|
}
|
|
if got := GetAmountFromEvent(event).String(); got != "8888" {
|
|
t.Fatalf("amount mismatch: got %s", got)
|
|
}
|
|
if event.BlockNumber != 77 {
|
|
t.Fatalf("block number mismatch: got %d", event.BlockNumber)
|
|
}
|
|
if event.TxHash != common.HexToHash("0xabc") {
|
|
t.Fatalf("tx hash mismatch: got %s", event.TxHash.Hex())
|
|
}
|
|
}
|