laconicd/x/evm/types/utils_test.go

55 lines
1.2 KiB
Go
Raw Normal View History

package types
import (
"testing"
sdk "github.com/cosmos/cosmos-sdk/types"
proto "github.com/gogo/protobuf/proto"
"github.com/tharsis/ethermint/crypto/ethsecp256k1"
2021-04-18 15:54:18 +00:00
"github.com/stretchr/testify/require"
"github.com/ethereum/go-ethereum/common"
ethcmn "github.com/ethereum/go-ethereum/common"
2021-04-18 15:54:18 +00:00
ethcrypto "github.com/ethereum/go-ethereum/crypto"
)
2021-04-18 15:54:18 +00:00
// GenerateEthAddress generates an Ethereum address.
func GenerateEthAddress() ethcmn.Address {
priv, err := ethsecp256k1.GenerateKey()
if err != nil {
panic(err)
}
return ethcrypto.PubkeyToAddress(priv.ToECDSA().PublicKey)
}
func TestEvmDataEncoding(t *testing.T) {
ret := []byte{0x5, 0x8}
2021-04-17 10:00:07 +00:00
data := &MsgEthereumTxResponse{
Hash: common.BytesToHash([]byte("hash")).String(),
Logs: []*Log{{
Data: []byte{1, 2, 3, 4},
BlockNumber: 17,
}},
Ret: ret,
}
enc, err := proto.Marshal(data)
require.NoError(t, err)
txData := &sdk.TxMsgData{
Data: []*sdk.MsgData{{MsgType: TypeMsgEthereumTx, Data: enc}},
}
txDataBz, err := proto.Marshal(txData)
require.NoError(t, err)
res, err := DecodeTxResponse(txDataBz)
require.NoError(t, err)
2021-04-17 10:00:07 +00:00
require.NotNil(t, res)
require.Equal(t, data.Logs, res.Logs)
require.Equal(t, ret, res.Ret)
}