2015-03-05 22:03:22 -08:00
|
|
|
package rpc
|
|
|
|
|
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
"encoding/json"
|
2015-03-26 08:16:17 -07:00
|
|
|
"fmt"
|
2015-03-05 22:03:22 -08:00
|
|
|
"math/big"
|
|
|
|
"testing"
|
2015-03-23 09:33:01 -07:00
|
|
|
|
|
|
|
"github.com/ethereum/go-ethereum/common"
|
2015-03-05 22:03:22 -08:00
|
|
|
)
|
|
|
|
|
2015-03-26 08:16:17 -07:00
|
|
|
func ExpectValidationError(err error) string {
|
|
|
|
var str string
|
|
|
|
switch err.(type) {
|
|
|
|
case nil:
|
|
|
|
str = "Expected error but didn't get one"
|
|
|
|
case *ValidationError:
|
|
|
|
break
|
|
|
|
default:
|
|
|
|
str = fmt.Sprintf("Expected *rpc.ValidationError but got %T with message `%s`", err, err.Error())
|
|
|
|
}
|
|
|
|
return str
|
|
|
|
}
|
|
|
|
|
|
|
|
func ExpectInvalidTypeError(err error) string {
|
|
|
|
var str string
|
|
|
|
switch err.(type) {
|
|
|
|
case nil:
|
|
|
|
str = "Expected error but didn't get one"
|
|
|
|
case *InvalidTypeError:
|
|
|
|
break
|
|
|
|
default:
|
|
|
|
str = fmt.Sprintf("Expected *rpc.InvalidTypeError but got %T with message `%s`", err, err.Error())
|
|
|
|
}
|
|
|
|
return str
|
|
|
|
}
|
|
|
|
|
|
|
|
func ExpectInsufficientParamsError(err error) string {
|
|
|
|
var str string
|
|
|
|
switch err.(type) {
|
|
|
|
case nil:
|
|
|
|
str = "Expected error but didn't get one"
|
|
|
|
case *InsufficientParamsError:
|
|
|
|
break
|
|
|
|
default:
|
|
|
|
str = fmt.Sprintf("Expected *rpc.InsufficientParamsError but got %T with message %s", err, err.Error())
|
|
|
|
}
|
|
|
|
return str
|
|
|
|
}
|
|
|
|
|
|
|
|
func ExpectDecodeParamError(err error) string {
|
|
|
|
var str string
|
|
|
|
switch err.(type) {
|
|
|
|
case nil:
|
|
|
|
str = "Expected error but didn't get one"
|
|
|
|
case *DecodeParamError:
|
|
|
|
break
|
|
|
|
default:
|
|
|
|
str = fmt.Sprintf("Expected *rpc.DecodeParamError but got %T with message `%s`", err, err.Error())
|
|
|
|
}
|
|
|
|
return str
|
|
|
|
}
|
|
|
|
|
2015-03-26 08:19:33 -07:00
|
|
|
func TestSha3(t *testing.T) {
|
|
|
|
input := `["0x68656c6c6f20776f726c64"]`
|
|
|
|
expected := "0x68656c6c6f20776f726c64"
|
|
|
|
|
|
|
|
args := new(Sha3Args)
|
|
|
|
json.Unmarshal([]byte(input), &args)
|
|
|
|
|
|
|
|
if args.Data != expected {
|
|
|
|
t.Error("got %s expected %s", input, expected)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestSha3ArgsInvalid(t *testing.T) {
|
|
|
|
input := `{}`
|
|
|
|
|
|
|
|
args := new(Sha3Args)
|
|
|
|
str := ExpectDecodeParamError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestSha3ArgsEmpty(t *testing.T) {
|
|
|
|
input := `[]`
|
|
|
|
|
|
|
|
args := new(Sha3Args)
|
|
|
|
str := ExpectInsufficientParamsError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
func TestSha3ArgsDataInvalid(t *testing.T) {
|
|
|
|
input := `[4]`
|
|
|
|
|
|
|
|
args := new(Sha3Args)
|
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-05 22:03:22 -08:00
|
|
|
func TestGetBalanceArgs(t *testing.T) {
|
|
|
|
input := `["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "0x1f"]`
|
|
|
|
expected := new(GetBalanceArgs)
|
2015-03-26 05:10:31 -07:00
|
|
|
expected.Address = common.HexToAddress("0x407d73d8a49eeb85d32cf465507dd71d507100c1")
|
2015-03-05 22:03:22 -08:00
|
|
|
expected.BlockNumber = 31
|
|
|
|
|
|
|
|
args := new(GetBalanceArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if args.Address != expected.Address {
|
|
|
|
t.Errorf("Address should be %v but is %v", expected.Address, args.Address)
|
|
|
|
}
|
|
|
|
|
|
|
|
if args.BlockNumber != expected.BlockNumber {
|
|
|
|
t.Errorf("BlockNumber should be %v but is %v", expected.BlockNumber, args.BlockNumber)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-18 12:48:40 -07:00
|
|
|
func TestGetBalanceArgsLatest(t *testing.T) {
|
|
|
|
input := `["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"]`
|
|
|
|
expected := new(GetBalanceArgs)
|
2015-03-26 05:10:31 -07:00
|
|
|
expected.Address = common.HexToAddress("0x407d73d8a49eeb85d32cf465507dd71d507100c1")
|
2015-03-18 12:48:40 -07:00
|
|
|
expected.BlockNumber = -1
|
|
|
|
|
|
|
|
args := new(GetBalanceArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if args.Address != expected.Address {
|
|
|
|
t.Errorf("Address should be %v but is %v", expected.Address, args.Address)
|
|
|
|
}
|
|
|
|
|
|
|
|
if args.BlockNumber != expected.BlockNumber {
|
|
|
|
t.Errorf("BlockNumber should be %v but is %v", expected.BlockNumber, args.BlockNumber)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-26 05:10:31 -07:00
|
|
|
func TestGetBalanceArgsEmpty(t *testing.T) {
|
2015-03-12 06:42:31 -07:00
|
|
|
input := `[]`
|
|
|
|
|
|
|
|
args := new(GetBalanceArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInsufficientParamsError(json.Unmarshal([]byte(input), &args))
|
2015-03-26 08:19:33 -07:00
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 05:10:31 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestGetBalanceArgsInvalid(t *testing.T) {
|
|
|
|
input := `6`
|
|
|
|
|
|
|
|
args := new(GetBalanceArgs)
|
|
|
|
err := json.Unmarshal([]byte(input), &args)
|
|
|
|
switch err.(type) {
|
|
|
|
case nil:
|
2015-03-12 06:42:31 -07:00
|
|
|
t.Error("Expected error but didn't get one")
|
2015-03-26 05:10:31 -07:00
|
|
|
case *DecodeParamError:
|
|
|
|
break
|
|
|
|
default:
|
|
|
|
t.Errorf("Expected *rpc.DecodeParamError but got %T with message %s", err, err.Error())
|
2015-03-12 06:42:31 -07:00
|
|
|
}
|
2015-03-26 05:10:31 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
func TestGetBalanceArgsBlockInvalid(t *testing.T) {
|
|
|
|
input := `["0x407d73d8a49eeb85d32cf465507dd71d507100c1", false]`
|
2015-03-12 06:42:31 -07:00
|
|
|
|
2015-03-26 05:10:31 -07:00
|
|
|
args := new(GetBalanceArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 05:10:31 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestGetBalanceArgsAddressInvalid(t *testing.T) {
|
|
|
|
input := `[-9, "latest"]`
|
|
|
|
|
|
|
|
args := new(GetBalanceArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 05:10:31 -07:00
|
|
|
}
|
2015-03-12 06:42:31 -07:00
|
|
|
}
|
|
|
|
|
2015-03-05 22:03:22 -08:00
|
|
|
func TestGetBlockByHashArgs(t *testing.T) {
|
|
|
|
input := `["0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331", true]`
|
|
|
|
expected := new(GetBlockByHashArgs)
|
2015-03-26 02:14:52 -07:00
|
|
|
expected.BlockHash = common.HexToHash("0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331")
|
2015-03-19 20:20:54 -07:00
|
|
|
expected.IncludeTxs = true
|
2015-03-05 22:03:22 -08:00
|
|
|
|
|
|
|
args := new(GetBlockByHashArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if args.BlockHash != expected.BlockHash {
|
|
|
|
t.Errorf("BlockHash should be %v but is %v", expected.BlockHash, args.BlockHash)
|
|
|
|
}
|
|
|
|
|
2015-03-19 20:20:54 -07:00
|
|
|
if args.IncludeTxs != expected.IncludeTxs {
|
|
|
|
t.Errorf("IncludeTxs should be %v but is %v", expected.IncludeTxs, args.IncludeTxs)
|
2015-03-05 22:03:22 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-26 03:06:45 -07:00
|
|
|
func TestGetBlockByHashArgsEmpty(t *testing.T) {
|
2015-03-16 13:21:51 -07:00
|
|
|
input := `[]`
|
|
|
|
|
|
|
|
args := new(GetBlockByHashArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInsufficientParamsError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 03:06:45 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestGetBlockByHashArgsInvalid(t *testing.T) {
|
|
|
|
input := `{}`
|
|
|
|
|
|
|
|
args := new(GetBlockByHashArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectDecodeParamError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 03:06:45 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestGetBlockByHashArgsHashInt(t *testing.T) {
|
|
|
|
input := `[8]`
|
|
|
|
|
|
|
|
args := new(GetBlockByHashArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-16 13:21:51 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-26 03:07:14 -07:00
|
|
|
func TestGetBlockByNumberArgsBlockNum(t *testing.T) {
|
|
|
|
input := `[436, false]`
|
|
|
|
expected := new(GetBlockByNumberArgs)
|
|
|
|
expected.BlockNumber = 436
|
|
|
|
expected.IncludeTxs = false
|
|
|
|
|
|
|
|
args := new(GetBlockByNumberArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if args.BlockNumber != expected.BlockNumber {
|
|
|
|
t.Errorf("BlockNumber should be %v but is %v", expected.BlockNumber, args.BlockNumber)
|
|
|
|
}
|
|
|
|
|
|
|
|
if args.IncludeTxs != expected.IncludeTxs {
|
|
|
|
t.Errorf("IncludeTxs should be %v but is %v", expected.IncludeTxs, args.IncludeTxs)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestGetBlockByNumberArgsBlockHex(t *testing.T) {
|
2015-03-05 22:03:22 -08:00
|
|
|
input := `["0x1b4", false]`
|
|
|
|
expected := new(GetBlockByNumberArgs)
|
|
|
|
expected.BlockNumber = 436
|
2015-03-19 20:20:54 -07:00
|
|
|
expected.IncludeTxs = false
|
2015-03-05 22:03:22 -08:00
|
|
|
|
|
|
|
args := new(GetBlockByNumberArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if args.BlockNumber != expected.BlockNumber {
|
2015-03-26 03:07:14 -07:00
|
|
|
t.Errorf("BlockNumber should be %v but is %v", expected.BlockNumber, args.BlockNumber)
|
2015-03-05 22:03:22 -08:00
|
|
|
}
|
|
|
|
|
2015-03-19 20:20:54 -07:00
|
|
|
if args.IncludeTxs != expected.IncludeTxs {
|
|
|
|
t.Errorf("IncludeTxs should be %v but is %v", expected.IncludeTxs, args.IncludeTxs)
|
2015-03-05 22:03:22 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-16 13:21:51 -07:00
|
|
|
func TestGetBlockByNumberEmpty(t *testing.T) {
|
|
|
|
input := `[]`
|
|
|
|
|
|
|
|
args := new(GetBlockByNumberArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInsufficientParamsError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 03:07:14 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestGetBlockByNumberBool(t *testing.T) {
|
|
|
|
input := `[true, true]`
|
|
|
|
|
|
|
|
args := new(GetBlockByNumberArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 03:07:14 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
func TestGetBlockByNumberBlockObject(t *testing.T) {
|
|
|
|
input := `{}`
|
|
|
|
|
|
|
|
args := new(GetBlockByNumberArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectDecodeParamError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-16 13:21:51 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-05 22:03:22 -08:00
|
|
|
func TestNewTxArgs(t *testing.T) {
|
|
|
|
input := `[{"from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155",
|
|
|
|
"to": "0xd46e8dd67c5d32be8058bb8eb970870f072445675",
|
|
|
|
"gas": "0x76c0",
|
|
|
|
"gasPrice": "0x9184e72a000",
|
|
|
|
"value": "0x9184e72a000",
|
2015-03-18 12:48:40 -07:00
|
|
|
"data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"},
|
|
|
|
"0x10"]`
|
2015-03-05 22:03:22 -08:00
|
|
|
expected := new(NewTxArgs)
|
2015-03-26 02:34:21 -07:00
|
|
|
expected.From = common.HexToAddress("0xb60e8dd61c5d32be8058bb8eb970870f07233155")
|
|
|
|
expected.To = common.HexToAddress("0xd46e8dd67c5d32be8058bb8eb970870f072445675")
|
2015-03-05 22:03:22 -08:00
|
|
|
expected.Gas = big.NewInt(30400)
|
|
|
|
expected.GasPrice = big.NewInt(10000000000000)
|
|
|
|
expected.Value = big.NewInt(10000000000000)
|
|
|
|
expected.Data = "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"
|
2015-03-18 12:48:40 -07:00
|
|
|
expected.BlockNumber = big.NewInt(16).Int64()
|
2015-03-05 22:03:22 -08:00
|
|
|
|
|
|
|
args := new(NewTxArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.From != args.From {
|
|
|
|
t.Errorf("From shoud be %#v but is %#v", expected.From, args.From)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.To != args.To {
|
|
|
|
t.Errorf("To shoud be %#v but is %#v", expected.To, args.To)
|
|
|
|
}
|
|
|
|
|
|
|
|
if bytes.Compare(expected.Gas.Bytes(), args.Gas.Bytes()) != 0 {
|
|
|
|
t.Errorf("Gas shoud be %#v but is %#v", expected.Gas.Bytes(), args.Gas.Bytes())
|
|
|
|
}
|
|
|
|
|
|
|
|
if bytes.Compare(expected.GasPrice.Bytes(), args.GasPrice.Bytes()) != 0 {
|
|
|
|
t.Errorf("GasPrice shoud be %#v but is %#v", expected.GasPrice, args.GasPrice)
|
|
|
|
}
|
|
|
|
|
|
|
|
if bytes.Compare(expected.Value.Bytes(), args.Value.Bytes()) != 0 {
|
|
|
|
t.Errorf("Value shoud be %#v but is %#v", expected.Value, args.Value)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Data != args.Data {
|
|
|
|
t.Errorf("Data shoud be %#v but is %#v", expected.Data, args.Data)
|
|
|
|
}
|
2015-03-18 12:48:40 -07:00
|
|
|
|
|
|
|
if expected.BlockNumber != args.BlockNumber {
|
|
|
|
t.Errorf("BlockNumber shoud be %#v but is %#v", expected.BlockNumber, args.BlockNumber)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNewTxArgsBlockInt(t *testing.T) {
|
|
|
|
input := `[{"from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155"}, 5]`
|
|
|
|
expected := new(NewTxArgs)
|
2015-03-26 02:34:21 -07:00
|
|
|
expected.From = common.HexToAddress("0xb60e8dd61c5d32be8058bb8eb970870f07233155")
|
2015-03-18 12:48:40 -07:00
|
|
|
expected.BlockNumber = big.NewInt(5).Int64()
|
|
|
|
|
|
|
|
args := new(NewTxArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.From != args.From {
|
|
|
|
t.Errorf("From shoud be %#v but is %#v", expected.From, args.From)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.BlockNumber != args.BlockNumber {
|
|
|
|
t.Errorf("BlockNumber shoud be %#v but is %#v", expected.BlockNumber, args.BlockNumber)
|
|
|
|
}
|
2015-03-05 22:03:22 -08:00
|
|
|
}
|
2015-03-06 07:54:08 -08:00
|
|
|
|
2015-03-26 03:59:35 -07:00
|
|
|
func TestNewTxArgsBlockInvalid(t *testing.T) {
|
|
|
|
input := `[{"from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155"}, false]`
|
|
|
|
expected := new(NewTxArgs)
|
|
|
|
expected.From = common.HexToAddress("0xb60e8dd61c5d32be8058bb8eb970870f07233155")
|
|
|
|
expected.BlockNumber = big.NewInt(5).Int64()
|
|
|
|
|
|
|
|
args := new(NewTxArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 03:59:35 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-16 13:49:51 -07:00
|
|
|
func TestNewTxArgsEmpty(t *testing.T) {
|
|
|
|
input := `[]`
|
|
|
|
|
|
|
|
args := new(NewTxArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInsufficientParamsError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 03:59:35 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNewTxArgsInvalid(t *testing.T) {
|
|
|
|
input := `{}`
|
|
|
|
|
|
|
|
args := new(NewTxArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectDecodeParamError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 03:59:35 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
func TestNewTxArgsNotStrings(t *testing.T) {
|
|
|
|
input := `[{"from":6}]`
|
|
|
|
|
|
|
|
args := new(NewTxArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectDecodeParamError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-16 13:49:51 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-26 02:34:21 -07:00
|
|
|
func TestNewTxArgsFromEmpty(t *testing.T) {
|
|
|
|
input := `[{"to": "0xb60e8dd61c5d32be8058bb8eb970870f07233155"}]`
|
2015-03-18 17:30:09 -07:00
|
|
|
|
|
|
|
args := new(NewTxArgs)
|
2015-03-26 02:34:21 -07:00
|
|
|
err := json.Unmarshal([]byte(input), &args)
|
2015-03-18 17:30:09 -07:00
|
|
|
switch err.(type) {
|
|
|
|
case nil:
|
|
|
|
t.Error("Expected error but didn't get one")
|
|
|
|
case *ValidationError:
|
|
|
|
break
|
|
|
|
default:
|
2015-03-26 02:34:21 -07:00
|
|
|
t.Errorf("Expected *rpc.ValidationError, but got %T with message `%s`", err, err.Error())
|
2015-03-18 17:30:09 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-06 07:54:08 -08:00
|
|
|
func TestGetStorageArgs(t *testing.T) {
|
|
|
|
input := `["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"]`
|
|
|
|
expected := new(GetStorageArgs)
|
2015-03-26 02:52:32 -07:00
|
|
|
expected.Address = common.HexToAddress("0x407d73d8a49eeb85d32cf465507dd71d507100c1")
|
2015-03-06 07:54:08 -08:00
|
|
|
expected.BlockNumber = -1
|
|
|
|
|
|
|
|
args := new(GetStorageArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Address != args.Address {
|
|
|
|
t.Errorf("Address shoud be %#v but is %#v", expected.Address, args.Address)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.BlockNumber != args.BlockNumber {
|
|
|
|
t.Errorf("BlockNumber shoud be %#v but is %#v", expected.BlockNumber, args.BlockNumber)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-26 02:52:32 -07:00
|
|
|
func TestGetStorageInvalidArgs(t *testing.T) {
|
|
|
|
input := `{}`
|
|
|
|
|
|
|
|
args := new(GetStorageArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectDecodeParamError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 02:52:32 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestGetStorageInvalidBlockheight(t *testing.T) {
|
|
|
|
input := `["0x407d73d8a49eeb85d32cf465507dd71d507100c1", {}]`
|
|
|
|
|
|
|
|
args := new(GetStorageArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 02:52:32 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-16 13:49:51 -07:00
|
|
|
func TestGetStorageEmptyArgs(t *testing.T) {
|
|
|
|
input := `[]`
|
|
|
|
|
|
|
|
args := new(GetStorageArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInsufficientParamsError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 02:52:32 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestGetStorageAddressInt(t *testing.T) {
|
|
|
|
input := `[32456785432456, "latest"]`
|
|
|
|
|
|
|
|
args := new(GetStorageArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-16 13:49:51 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-06 07:54:08 -08:00
|
|
|
func TestGetStorageAtArgs(t *testing.T) {
|
|
|
|
input := `["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "0x0", "0x2"]`
|
|
|
|
expected := new(GetStorageAtArgs)
|
2015-03-26 04:11:28 -07:00
|
|
|
expected.Address = common.HexToAddress("0x407d73d8a49eeb85d32cf465507dd71d507100c1")
|
|
|
|
expected.Key = common.HexToHash("0x0")
|
2015-03-06 07:54:08 -08:00
|
|
|
expected.BlockNumber = 2
|
|
|
|
|
|
|
|
args := new(GetStorageAtArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Address != args.Address {
|
|
|
|
t.Errorf("Address shoud be %#v but is %#v", expected.Address, args.Address)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Key != args.Key {
|
|
|
|
t.Errorf("Address shoud be %#v but is %#v", expected.Address, args.Address)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.BlockNumber != args.BlockNumber {
|
|
|
|
t.Errorf("BlockNumber shoud be %#v but is %#v", expected.BlockNumber, args.BlockNumber)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-16 13:49:51 -07:00
|
|
|
func TestGetStorageAtEmptyArgs(t *testing.T) {
|
|
|
|
input := `[]`
|
|
|
|
|
|
|
|
args := new(GetStorageAtArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInsufficientParamsError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 04:11:28 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestGetStorageAtArgsInvalid(t *testing.T) {
|
|
|
|
input := `{}`
|
|
|
|
|
|
|
|
args := new(GetStorageAtArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectDecodeParamError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 04:11:28 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestGetStorageAtArgsAddressNotString(t *testing.T) {
|
|
|
|
input := `[true, "0x0", "0x2"]`
|
|
|
|
|
|
|
|
args := new(GetStorageAtArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 04:11:28 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestGetStorageAtArgsKeyNotString(t *testing.T) {
|
|
|
|
input := `["0x407d73d8a49eeb85d32cf465507dd71d507100c1", true, "0x2"]`
|
|
|
|
|
|
|
|
args := new(GetStorageAtArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 04:11:28 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestGetStorageAtArgsValueNotString(t *testing.T) {
|
|
|
|
input := `["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "0x1", true]`
|
|
|
|
|
|
|
|
args := new(GetStorageAtArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-16 13:49:51 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-06 07:54:08 -08:00
|
|
|
func TestGetTxCountArgs(t *testing.T) {
|
2015-03-26 04:47:00 -07:00
|
|
|
input := `["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "pending"]`
|
2015-03-06 07:54:08 -08:00
|
|
|
expected := new(GetTxCountArgs)
|
2015-03-26 04:47:00 -07:00
|
|
|
expected.Address = common.HexToAddress("0x407d73d8a49eeb85d32cf465507dd71d507100c1")
|
|
|
|
expected.BlockNumber = -2
|
2015-03-06 07:54:08 -08:00
|
|
|
|
|
|
|
args := new(GetTxCountArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Address != args.Address {
|
|
|
|
t.Errorf("Address shoud be %#v but is %#v", expected.Address, args.Address)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.BlockNumber != args.BlockNumber {
|
|
|
|
t.Errorf("BlockNumber shoud be %#v but is %#v", expected.BlockNumber, args.BlockNumber)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-16 13:49:51 -07:00
|
|
|
func TestGetTxCountEmptyArgs(t *testing.T) {
|
|
|
|
input := `[]`
|
|
|
|
|
|
|
|
args := new(GetTxCountArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInsufficientParamsError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 04:47:00 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestGetTxCountEmptyArgsInvalid(t *testing.T) {
|
|
|
|
input := `false`
|
|
|
|
|
|
|
|
args := new(GetTxCountArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectDecodeParamError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 04:47:00 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestGetTxCountAddressNotString(t *testing.T) {
|
|
|
|
input := `[false, "pending"]`
|
|
|
|
|
|
|
|
args := new(GetTxCountArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 04:47:00 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestGetTxCountBlockheightInvalid(t *testing.T) {
|
|
|
|
input := `["0x407d73d8a49eeb85d32cf465507dd71d507100c1", {}]`
|
|
|
|
|
|
|
|
args := new(GetTxCountArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-16 13:49:51 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-06 07:54:08 -08:00
|
|
|
func TestGetDataArgs(t *testing.T) {
|
|
|
|
input := `["0xd5677cf67b5aa051bb40496e68ad359eb97cfbf8", "latest"]`
|
|
|
|
expected := new(GetDataArgs)
|
2015-03-26 05:50:22 -07:00
|
|
|
expected.Address = common.HexToAddress("0xd5677cf67b5aa051bb40496e68ad359eb97cfbf8")
|
2015-03-06 07:54:08 -08:00
|
|
|
expected.BlockNumber = -1
|
|
|
|
|
|
|
|
args := new(GetDataArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Address != args.Address {
|
|
|
|
t.Errorf("Address shoud be %#v but is %#v", expected.Address, args.Address)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.BlockNumber != args.BlockNumber {
|
|
|
|
t.Errorf("BlockNumber shoud be %#v but is %#v", expected.BlockNumber, args.BlockNumber)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-26 05:50:22 -07:00
|
|
|
func TestGetDataArgsEmpty(t *testing.T) {
|
2015-03-16 13:49:51 -07:00
|
|
|
input := `[]`
|
|
|
|
|
|
|
|
args := new(GetDataArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInsufficientParamsError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 05:50:22 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestGetDataArgsInvalid(t *testing.T) {
|
|
|
|
input := `{}`
|
|
|
|
|
|
|
|
args := new(GetDataArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectDecodeParamError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 05:50:22 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestGetDataArgsAddressNotString(t *testing.T) {
|
|
|
|
input := `[12, "latest"]`
|
|
|
|
|
|
|
|
args := new(GetDataArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 05:50:22 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestGetDataArgsBlocknumberNotString(t *testing.T) {
|
|
|
|
input := `["0xd5677cf67b5aa051bb40496e68ad359eb97cfbf8", false]`
|
|
|
|
|
|
|
|
args := new(GetDataArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-16 13:49:51 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-19 20:55:17 -07:00
|
|
|
func TestBlockFilterArgs(t *testing.T) {
|
2015-03-06 07:54:08 -08:00
|
|
|
input := `[{
|
|
|
|
"fromBlock": "0x1",
|
|
|
|
"toBlock": "0x2",
|
|
|
|
"limit": "0x3",
|
|
|
|
"offset": "0x0",
|
|
|
|
"address": "0xd5677cf67b5aa051bb40496e68ad359eb97cfbf8",
|
|
|
|
"topics": ["0x12341234"]}]`
|
2015-03-19 20:55:17 -07:00
|
|
|
expected := new(BlockFilterArgs)
|
2015-03-06 07:54:08 -08:00
|
|
|
expected.Earliest = 1
|
|
|
|
expected.Latest = 2
|
|
|
|
expected.Max = 3
|
|
|
|
expected.Skip = 0
|
|
|
|
expected.Address = "0xd5677cf67b5aa051bb40496e68ad359eb97cfbf8"
|
2015-03-10 10:52:45 -07:00
|
|
|
// expected.Topics = []string{"0x12341234"}
|
2015-03-06 07:54:08 -08:00
|
|
|
|
2015-03-19 20:55:17 -07:00
|
|
|
args := new(BlockFilterArgs)
|
2015-03-06 07:54:08 -08:00
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Earliest != args.Earliest {
|
|
|
|
t.Errorf("Earliest shoud be %#v but is %#v", expected.Earliest, args.Earliest)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Latest != args.Latest {
|
|
|
|
t.Errorf("Latest shoud be %#v but is %#v", expected.Latest, args.Latest)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Max != args.Max {
|
|
|
|
t.Errorf("Max shoud be %#v but is %#v", expected.Max, args.Max)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Skip != args.Skip {
|
|
|
|
t.Errorf("Skip shoud be %#v but is %#v", expected.Skip, args.Skip)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Address != args.Address {
|
|
|
|
t.Errorf("Address shoud be %#v but is %#v", expected.Address, args.Address)
|
|
|
|
}
|
|
|
|
|
2015-03-11 08:56:44 -07:00
|
|
|
// if expected.Topics != args.Topics {
|
2015-03-06 07:54:08 -08:00
|
|
|
// t.Errorf("Topic shoud be %#v but is %#v", expected.Topic, args.Topic)
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
|
2015-03-19 20:55:17 -07:00
|
|
|
func TestBlockFilterArgsWords(t *testing.T) {
|
2015-03-26 11:34:32 -07:00
|
|
|
t.Skip()
|
2015-03-16 07:38:57 -07:00
|
|
|
input := `[{
|
|
|
|
"fromBlock": "latest",
|
|
|
|
"toBlock": "pending"
|
|
|
|
}]`
|
2015-03-19 20:55:17 -07:00
|
|
|
expected := new(BlockFilterArgs)
|
2015-03-23 09:33:01 -07:00
|
|
|
expected.Earliest = -1
|
|
|
|
expected.Latest = -2
|
2015-03-16 07:38:57 -07:00
|
|
|
|
2015-03-19 20:55:17 -07:00
|
|
|
args := new(BlockFilterArgs)
|
2015-03-16 07:38:57 -07:00
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Earliest != args.Earliest {
|
|
|
|
t.Errorf("Earliest shoud be %#v but is %#v", expected.Earliest, args.Earliest)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Latest != args.Latest {
|
|
|
|
t.Errorf("Latest shoud be %#v but is %#v", expected.Latest, args.Latest)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-26 09:27:29 -07:00
|
|
|
func TestBlockFilterArgsBool(t *testing.T) {
|
2015-03-16 13:21:51 -07:00
|
|
|
input := `[{
|
2015-03-26 09:27:29 -07:00
|
|
|
"fromBlock": true,
|
|
|
|
"toBlock": false
|
2015-03-16 13:21:51 -07:00
|
|
|
}]`
|
|
|
|
|
2015-03-19 20:55:17 -07:00
|
|
|
args := new(BlockFilterArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-16 13:21:51 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-19 20:55:17 -07:00
|
|
|
func TestBlockFilterArgsEmptyArgs(t *testing.T) {
|
2015-03-16 13:21:51 -07:00
|
|
|
input := `[]`
|
|
|
|
|
2015-03-19 20:55:17 -07:00
|
|
|
args := new(BlockFilterArgs)
|
2015-03-16 13:21:51 -07:00
|
|
|
err := json.Unmarshal([]byte(input), &args)
|
|
|
|
if err == nil {
|
|
|
|
t.Error("Expected error but didn't get one")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-06 07:54:08 -08:00
|
|
|
func TestDbArgs(t *testing.T) {
|
2015-03-23 08:04:21 -07:00
|
|
|
input := `["testDB","myKey","0xbeef"]`
|
2015-03-06 07:54:08 -08:00
|
|
|
expected := new(DbArgs)
|
2015-03-23 08:04:21 -07:00
|
|
|
expected.Database = "testDB"
|
|
|
|
expected.Key = "myKey"
|
|
|
|
expected.Value = []byte("0xbeef")
|
2015-03-06 07:54:08 -08:00
|
|
|
|
|
|
|
args := new(DbArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := args.requirements(); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Database != args.Database {
|
|
|
|
t.Errorf("Database shoud be %#v but is %#v", expected.Database, args.Database)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Key != args.Key {
|
|
|
|
t.Errorf("Key shoud be %#v but is %#v", expected.Key, args.Key)
|
|
|
|
}
|
|
|
|
|
2015-03-23 08:04:21 -07:00
|
|
|
if bytes.Compare(expected.Value, args.Value) != 0 {
|
|
|
|
t.Errorf("Value shoud be %#v but is %#v", expected.Value, args.Value)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-26 11:34:32 -07:00
|
|
|
func TestDbArgsInvalid(t *testing.T) {
|
|
|
|
input := `{}`
|
|
|
|
|
|
|
|
args := new(DbArgs)
|
|
|
|
str := ExpectDecodeParamError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDbArgsEmpty(t *testing.T) {
|
|
|
|
input := `[]`
|
|
|
|
|
|
|
|
args := new(DbArgs)
|
|
|
|
str := ExpectInsufficientParamsError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDbArgsDatabaseType(t *testing.T) {
|
|
|
|
input := `[true, "keyval", "valval"]`
|
|
|
|
|
|
|
|
args := new(DbArgs)
|
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDbArgsKeyType(t *testing.T) {
|
|
|
|
input := `["dbval", 3, "valval"]`
|
|
|
|
|
|
|
|
args := new(DbArgs)
|
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDbArgsValType(t *testing.T) {
|
|
|
|
input := `["dbval", "keyval", {}]`
|
|
|
|
|
|
|
|
args := new(DbArgs)
|
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDbArgsDatabaseEmpty(t *testing.T) {
|
|
|
|
input := `["", "keyval", "valval"]`
|
|
|
|
|
|
|
|
args := new(DbArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err.Error())
|
|
|
|
}
|
|
|
|
|
|
|
|
str := ExpectValidationError(args.requirements())
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDbArgsKeyEmpty(t *testing.T) {
|
|
|
|
input := `["dbval", "", "valval"]`
|
|
|
|
|
|
|
|
args := new(DbArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err.Error())
|
|
|
|
}
|
|
|
|
|
|
|
|
str := ExpectValidationError(args.requirements())
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-23 08:04:21 -07:00
|
|
|
func TestDbHexArgs(t *testing.T) {
|
|
|
|
input := `["testDB","myKey","0xbeef"]`
|
|
|
|
expected := new(DbHexArgs)
|
|
|
|
expected.Database = "testDB"
|
|
|
|
expected.Key = "myKey"
|
|
|
|
expected.Value = []byte{0xbe, 0xef}
|
|
|
|
|
|
|
|
args := new(DbHexArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := args.requirements(); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Database != args.Database {
|
|
|
|
t.Errorf("Database shoud be %#v but is %#v", expected.Database, args.Database)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Key != args.Key {
|
|
|
|
t.Errorf("Key shoud be %#v but is %#v", expected.Key, args.Key)
|
|
|
|
}
|
|
|
|
|
|
|
|
if bytes.Compare(expected.Value, args.Value) != 0 {
|
2015-03-06 07:54:08 -08:00
|
|
|
t.Errorf("Value shoud be %#v but is %#v", expected.Value, args.Value)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-26 11:39:40 -07:00
|
|
|
func TestDbHexArgsInvalid(t *testing.T) {
|
|
|
|
input := `{}`
|
|
|
|
|
|
|
|
args := new(DbHexArgs)
|
|
|
|
str := ExpectDecodeParamError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDbHexArgsEmpty(t *testing.T) {
|
|
|
|
input := `[]`
|
|
|
|
|
|
|
|
args := new(DbHexArgs)
|
|
|
|
str := ExpectInsufficientParamsError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDbHexArgsDatabaseType(t *testing.T) {
|
|
|
|
input := `[true, "keyval", "valval"]`
|
|
|
|
|
|
|
|
args := new(DbHexArgs)
|
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDbHexArgsKeyType(t *testing.T) {
|
|
|
|
input := `["dbval", 3, "valval"]`
|
|
|
|
|
|
|
|
args := new(DbHexArgs)
|
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDbHexArgsValType(t *testing.T) {
|
|
|
|
input := `["dbval", "keyval", {}]`
|
|
|
|
|
|
|
|
args := new(DbHexArgs)
|
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDbHexArgsDatabaseEmpty(t *testing.T) {
|
|
|
|
input := `["", "keyval", "valval"]`
|
|
|
|
|
|
|
|
args := new(DbHexArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err.Error())
|
|
|
|
}
|
|
|
|
|
|
|
|
str := ExpectValidationError(args.requirements())
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDbHexArgsKeyEmpty(t *testing.T) {
|
|
|
|
input := `["dbval", "", "valval"]`
|
|
|
|
|
|
|
|
args := new(DbHexArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err.Error())
|
|
|
|
}
|
|
|
|
|
|
|
|
str := ExpectValidationError(args.requirements())
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-06 07:54:08 -08:00
|
|
|
func TestWhisperMessageArgs(t *testing.T) {
|
|
|
|
input := `[{"from":"0xc931d93e97ab07fe42d923478ba2465f2",
|
|
|
|
"topics": ["0x68656c6c6f20776f726c64"],
|
|
|
|
"payload":"0x68656c6c6f20776f726c64",
|
|
|
|
"ttl": "0x64",
|
|
|
|
"priority": "0x64"}]`
|
|
|
|
expected := new(WhisperMessageArgs)
|
|
|
|
expected.From = "0xc931d93e97ab07fe42d923478ba2465f2"
|
|
|
|
expected.To = ""
|
|
|
|
expected.Payload = "0x68656c6c6f20776f726c64"
|
|
|
|
expected.Priority = 100
|
|
|
|
expected.Ttl = 100
|
2015-03-11 08:56:44 -07:00
|
|
|
expected.Topics = []string{"0x68656c6c6f20776f726c64"}
|
2015-03-06 07:54:08 -08:00
|
|
|
|
|
|
|
args := new(WhisperMessageArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.From != args.From {
|
|
|
|
t.Errorf("From shoud be %#v but is %#v", expected.From, args.From)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.To != args.To {
|
|
|
|
t.Errorf("To shoud be %#v but is %#v", expected.To, args.To)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Payload != args.Payload {
|
|
|
|
t.Errorf("Value shoud be %#v but is %#v", expected.Payload, args.Payload)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Ttl != args.Ttl {
|
|
|
|
t.Errorf("Ttl shoud be %#v but is %#v", expected.Ttl, args.Ttl)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Priority != args.Priority {
|
|
|
|
t.Errorf("Priority shoud be %#v but is %#v", expected.Priority, args.Priority)
|
|
|
|
}
|
|
|
|
|
2015-03-11 08:56:44 -07:00
|
|
|
// if expected.Topics != args.Topics {
|
2015-03-06 07:54:08 -08:00
|
|
|
// t.Errorf("Topic shoud be %#v but is %#v", expected.Topic, args.Topic)
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestFilterIdArgs(t *testing.T) {
|
|
|
|
input := `["0x7"]`
|
|
|
|
expected := new(FilterIdArgs)
|
|
|
|
expected.Id = 7
|
|
|
|
|
|
|
|
args := new(FilterIdArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Id != args.Id {
|
|
|
|
t.Errorf("Id shoud be %#v but is %#v", expected.Id, args.Id)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestWhsiperFilterArgs(t *testing.T) {
|
|
|
|
input := `[{"topics": ["0x68656c6c6f20776f726c64"], "to": "0x34ag445g3455b34"}]`
|
|
|
|
expected := new(WhisperFilterArgs)
|
|
|
|
expected.From = ""
|
|
|
|
expected.To = "0x34ag445g3455b34"
|
|
|
|
expected.Topics = []string{"0x68656c6c6f20776f726c64"}
|
|
|
|
|
|
|
|
args := new(WhisperFilterArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.From != args.From {
|
|
|
|
t.Errorf("From shoud be %#v but is %#v", expected.From, args.From)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.To != args.To {
|
|
|
|
t.Errorf("To shoud be %#v but is %#v", expected.To, args.To)
|
|
|
|
}
|
|
|
|
|
|
|
|
// if expected.Topics != args.Topics {
|
|
|
|
// t.Errorf("Topics shoud be %#v but is %#v", expected.Topics, args.Topics)
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestCompileArgs(t *testing.T) {
|
|
|
|
input := `["contract test { function multiply(uint a) returns(uint d) { return a * 7; } }"]`
|
|
|
|
expected := new(CompileArgs)
|
|
|
|
expected.Source = `contract test { function multiply(uint a) returns(uint d) { return a * 7; } }`
|
|
|
|
|
|
|
|
args := new(CompileArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Source != args.Source {
|
|
|
|
t.Errorf("Source shoud be %#v but is %#v", expected.Source, args.Source)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestFilterStringArgs(t *testing.T) {
|
|
|
|
input := `["pending"]`
|
|
|
|
expected := new(FilterStringArgs)
|
|
|
|
expected.Word = "pending"
|
|
|
|
|
|
|
|
args := new(FilterStringArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
2015-03-23 09:33:01 -07:00
|
|
|
if err := args.requirements(); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
2015-03-06 07:54:08 -08:00
|
|
|
if expected.Word != args.Word {
|
|
|
|
t.Errorf("Word shoud be %#v but is %#v", expected.Word, args.Word)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-12 06:42:31 -07:00
|
|
|
func TestFilterStringEmptyArgs(t *testing.T) {
|
|
|
|
input := `[]`
|
|
|
|
|
|
|
|
args := new(FilterStringArgs)
|
|
|
|
err := json.Unmarshal([]byte(input), &args)
|
|
|
|
if err == nil {
|
|
|
|
t.Error("Expected error but didn't get one")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-06 07:54:08 -08:00
|
|
|
func TestWhisperIdentityArgs(t *testing.T) {
|
|
|
|
input := `["0xc931d93e97ab07fe42d923478ba2465f283"]`
|
|
|
|
expected := new(WhisperIdentityArgs)
|
|
|
|
expected.Identity = "0xc931d93e97ab07fe42d923478ba2465f283"
|
|
|
|
|
|
|
|
args := new(WhisperIdentityArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Identity != args.Identity {
|
|
|
|
t.Errorf("Identity shoud be %#v but is %#v", expected.Identity, args.Identity)
|
|
|
|
}
|
|
|
|
}
|
2015-03-11 13:26:28 -07:00
|
|
|
|
|
|
|
func TestBlockNumIndexArgs(t *testing.T) {
|
|
|
|
input := `["0x29a", "0x0"]`
|
|
|
|
expected := new(BlockNumIndexArgs)
|
|
|
|
expected.BlockNumber = 666
|
|
|
|
expected.Index = 0
|
|
|
|
|
|
|
|
args := new(BlockNumIndexArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.BlockNumber != args.BlockNumber {
|
|
|
|
t.Errorf("BlockNumber shoud be %#v but is %#v", expected.BlockNumber, args.BlockNumber)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Index != args.Index {
|
|
|
|
t.Errorf("Index shoud be %#v but is %#v", expected.Index, args.Index)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-26 05:57:41 -07:00
|
|
|
func TestBlockNumIndexArgsEmpty(t *testing.T) {
|
|
|
|
input := `[]`
|
|
|
|
|
|
|
|
args := new(BlockNumIndexArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInsufficientParamsError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 05:57:41 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestBlockNumIndexArgsInvalid(t *testing.T) {
|
|
|
|
input := `"foo"`
|
|
|
|
|
|
|
|
args := new(BlockNumIndexArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectDecodeParamError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 05:57:41 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestBlockNumIndexArgsBlocknumInvalid(t *testing.T) {
|
|
|
|
input := `[{}, "0x1"]`
|
|
|
|
|
|
|
|
args := new(BlockNumIndexArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 05:57:41 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestBlockNumIndexArgsIndexInvalid(t *testing.T) {
|
|
|
|
input := `["0x29a", 1]`
|
|
|
|
|
|
|
|
args := new(BlockNumIndexArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 05:57:41 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-11 13:26:28 -07:00
|
|
|
func TestHashIndexArgs(t *testing.T) {
|
|
|
|
input := `["0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", "0x1"]`
|
|
|
|
expected := new(HashIndexArgs)
|
2015-03-26 06:17:32 -07:00
|
|
|
expected.Hash = common.HexToHash("0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b")
|
2015-03-11 13:26:28 -07:00
|
|
|
expected.Index = 1
|
|
|
|
|
|
|
|
args := new(HashIndexArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
2015-03-12 09:50:03 -07:00
|
|
|
if expected.Hash != args.Hash {
|
|
|
|
t.Errorf("Hash shoud be %#v but is %#v", expected.Hash, args.Hash)
|
2015-03-11 13:26:28 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Index != args.Index {
|
|
|
|
t.Errorf("Index shoud be %#v but is %#v", expected.Index, args.Index)
|
|
|
|
}
|
|
|
|
}
|
2015-03-23 09:33:01 -07:00
|
|
|
|
2015-03-26 06:17:32 -07:00
|
|
|
func TestHashIndexArgsEmpty(t *testing.T) {
|
|
|
|
input := `[]`
|
|
|
|
|
|
|
|
args := new(HashIndexArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInsufficientParamsError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 06:17:32 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHashIndexArgsInvalid(t *testing.T) {
|
|
|
|
input := `{}`
|
|
|
|
|
|
|
|
args := new(HashIndexArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectDecodeParamError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 06:17:32 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHashIndexArgsInvalidHash(t *testing.T) {
|
|
|
|
input := `[7, "0x1"]`
|
|
|
|
|
|
|
|
args := new(HashIndexArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 06:17:32 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHashIndexArgsInvalidIndex(t *testing.T) {
|
|
|
|
input := `["0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", false]`
|
|
|
|
|
|
|
|
args := new(HashIndexArgs)
|
2015-03-26 08:16:17 -07:00
|
|
|
str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))
|
|
|
|
if len(str) > 0 {
|
|
|
|
t.Error(str)
|
2015-03-26 06:17:32 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-23 09:33:01 -07:00
|
|
|
func TestSubmitWorkArgs(t *testing.T) {
|
|
|
|
input := `["0x0000000000000001", "0x1234567890abcdef1234567890abcdef", "0xD1GE5700000000000000000000000000"]`
|
|
|
|
expected := new(SubmitWorkArgs)
|
|
|
|
expected.Nonce = 1
|
|
|
|
expected.Header = common.HexToHash("0x1234567890abcdef1234567890abcdef")
|
|
|
|
expected.Digest = common.HexToHash("0xD1GE5700000000000000000000000000")
|
|
|
|
|
|
|
|
args := new(SubmitWorkArgs)
|
|
|
|
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Nonce != args.Nonce {
|
|
|
|
t.Errorf("Nonce shoud be %d but is %d", expected.Nonce, args.Nonce)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Header != args.Header {
|
|
|
|
t.Errorf("Header shoud be %#v but is %#v", expected.Header, args.Header)
|
|
|
|
}
|
|
|
|
|
|
|
|
if expected.Digest != args.Digest {
|
|
|
|
t.Errorf("Digest shoud be %#v but is %#v", expected.Digest, args.Digest)
|
|
|
|
}
|
|
|
|
}
|