From ce7977c67b676c1d3cbbfa2d7e8dcd24e2b7fc07 Mon Sep 17 00:00:00 2001 From: Danilo Pantani Date: Mon, 14 Dec 2020 19:59:55 -0300 Subject: [PATCH] add more unit tests --- bchain/coins/energi/erc20.go | 15 ------------- bchain/coins/energi/ethparser.go | 7 ++++++ bchain/coins/energi/ethparser_test.go | 31 +++++++++++++++++++++++++++ bchain/coins/energi/ethrpc.go | 8 +------ 4 files changed, 39 insertions(+), 22 deletions(-) diff --git a/bchain/coins/energi/erc20.go b/bchain/coins/energi/erc20.go index 920b0588..b659d188 100644 --- a/bchain/coins/energi/erc20.go +++ b/bchain/coins/energi/erc20.go @@ -15,21 +15,6 @@ import ( "github.com/trezor/blockbook/bchain" ) -var erc20abi = `[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function","signature":"0x06fdde03"}, -{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function","signature":"0x95d89b41"}, -{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function","signature":"0x313ce567"}, -{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function","signature":"0x18160ddd"}, -{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function","signature":"0x70a08231"}, -{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function","signature":"0xa9059cbb"}, -{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function","signature":"0x23b872dd"}, -{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function","signature":"0x095ea7b3"}, -{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function","signature":"0xdd62ed3e"}, -{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event","signature":"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"}, -{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event","signature":"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"}, -{"inputs":[{"name":"_initialAmount","type":"uint256"},{"name":"_tokenName","type":"string"},{"name":"_decimalUnits","type":"uint8"},{"name":"_tokenSymbol","type":"string"}],"payable":false,"type":"constructor"}, -{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function","signature":"0xcae9ca51"}, -{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function","signature":"0x54fd4d50"}]` - // doing the parsing/processing without using go-ethereum/accounts/abi library, it is simple to get data from Transfer event const erc20TransferMethodSignature = "0xa9059cbb" const erc20TransferEventSignature = "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" diff --git a/bchain/coins/energi/ethparser.go b/bchain/coins/energi/ethparser.go index d67609f2..b15be22d 100644 --- a/bchain/coins/energi/ethparser.go +++ b/bchain/coins/energi/ethparser.go @@ -531,3 +531,10 @@ func GetEthereumTxDataFromSpecificData(coinSpecificData interface{}) *EthereumTx } return &etd } + +func toBlockNumArg(number *big.Int) string { + if number == nil { + return "latest" + } + return hexutil.EncodeBig(number) +} diff --git a/bchain/coins/energi/ethparser_test.go b/bchain/coins/energi/ethparser_test.go index 459131d9..add33968 100644 --- a/bchain/coins/energi/ethparser_test.go +++ b/bchain/coins/energi/ethparser_test.go @@ -400,3 +400,34 @@ func TestEthereumParser_GetEthereumTxData(t *testing.T) { }) } } + +func Test_toBlockNumArg(t *testing.T) { + tests := []struct { + name string + number *big.Int + want string + }{ + { + name: "test a valid number 1", + number: big.NewInt(1), + want: "0x1", + }, + { + name: "test a valid number 2", + number: big.NewInt(2), + want: "0x2", + }, + { + name: "test the latest block", + number: nil, + want: "latest", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := toBlockNumArg(tt.number); got != tt.want { + t.Errorf("toBlockNumArg() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/bchain/coins/energi/ethrpc.go b/bchain/coins/energi/ethrpc.go index eeb4c672..ebf79ec8 100644 --- a/bchain/coins/energi/ethrpc.go +++ b/bchain/coins/energi/ethrpc.go @@ -777,13 +777,7 @@ func (b *EthereumRPC) GetChainParser() bchain.BlockChainParser { return b.Parser } -func toBlockNumArg(number *big.Int) string { - if number == nil { - return "latest" - } - return hexutil.EncodeBig(number) -} - +// GetChainParser returns ethereum block header by number. func (b *EthereumRPC) headerByNumber(ctx context.Context, number *big.Int) (*header, error) { var head header err := b.rpc.CallContext(ctx, &head, "eth_getBlockByNumber", toBlockNumArg(number), false)