aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTaylor Gerring <taylor.gerring@gmail.com>2015-03-26 17:52:32 +0800
committerTaylor Gerring <taylor.gerring@gmail.com>2015-03-26 17:52:32 +0800
commitbd1a54f076935d8d42c1f6df2c54fdd4e7f978ac (patch)
tree47158073bb63a5aade110467d462b1191036850d
parent966cfa4bddb0fbe355dadb83541325a3b5c132f8 (diff)
downloadgo-tangerine-bd1a54f076935d8d42c1f6df2c54fdd4e7f978ac.tar.gz
go-tangerine-bd1a54f076935d8d42c1f6df2c54fdd4e7f978ac.tar.zst
go-tangerine-bd1a54f076935d8d42c1f6df2c54fdd4e7f978ac.zip
GetStorageArgs
-rw-r--r--rpc/api.go6
-rw-r--r--rpc/args.go13
-rw-r--r--rpc/args_test.go58
3 files changed, 56 insertions, 21 deletions
diff --git a/rpc/api.go b/rpc/api.go
index b5f759711..f5ce8acb6 100644
--- a/rpc/api.go
+++ b/rpc/api.go
@@ -106,11 +106,7 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err
return err
}
- if err := args.requirements(); err != nil {
- return err
- }
-
- *reply = api.xethAtStateNum(args.BlockNumber).State().SafeGet(args.Address).Storage()
+ *reply = api.xethAtStateNum(args.BlockNumber).State().SafeGet(args.Address.Hex()).Storage()
case "eth_getStorageAt":
args := new(GetStorageAtArgs)
if err := json.Unmarshal(req.Params, &args); err != nil {
diff --git a/rpc/args.go b/rpc/args.go
index 2446e778f..8d7427f6f 100644
--- a/rpc/args.go
+++ b/rpc/args.go
@@ -149,7 +149,7 @@ func (args *NewTxArgs) UnmarshalJSON(b []byte) (err error) {
}
type GetStorageArgs struct {
- Address string
+ Address common.Address
BlockNumber int64
}
@@ -165,9 +165,9 @@ func (args *GetStorageArgs) UnmarshalJSON(b []byte) (err error) {
addstr, ok := obj[0].(string)
if !ok {
- return NewDecodeParamError("Address is not a string")
+ return NewDecodeParamError("address is not a string")
}
- args.Address = addstr
+ args.Address = common.HexToAddress(addstr)
if len(obj) > 1 {
if err := blockHeight(obj[1], &args.BlockNumber); err != nil {
@@ -178,13 +178,6 @@ func (args *GetStorageArgs) UnmarshalJSON(b []byte) (err error) {
return nil
}
-func (args *GetStorageArgs) requirements() error {
- if len(args.Address) == 0 {
- return NewValidationError("Address", "cannot be blank")
- }
- return nil
-}
-
type GetStorageAtArgs struct {
Address string
Key string
diff --git a/rpc/args_test.go b/rpc/args_test.go
index 328eab0ec..20930a3d8 100644
--- a/rpc/args_test.go
+++ b/rpc/args_test.go
@@ -239,7 +239,7 @@ func TestNewTxArgsFromEmpty(t *testing.T) {
func TestGetStorageArgs(t *testing.T) {
input := `["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"]`
expected := new(GetStorageArgs)
- expected.Address = "0x407d73d8a49eeb85d32cf465507dd71d507100c1"
+ expected.Address = common.HexToAddress("0x407d73d8a49eeb85d32cf465507dd71d507100c1")
expected.BlockNumber = -1
args := new(GetStorageArgs)
@@ -247,10 +247,6 @@ func TestGetStorageArgs(t *testing.T) {
t.Error(err)
}
- if err := args.requirements(); err != nil {
- t.Error(err)
- }
-
if expected.Address != args.Address {
t.Errorf("Address shoud be %#v but is %#v", expected.Address, args.Address)
}
@@ -260,13 +256,63 @@ func TestGetStorageArgs(t *testing.T) {
}
}
+func TestGetStorageInvalidArgs(t *testing.T) {
+ input := `{}`
+
+ args := new(GetStorageArgs)
+ err := json.Unmarshal([]byte(input), &args)
+ switch err.(type) {
+ case nil:
+ t.Error("Expected error but didn't get one")
+ case *DecodeParamError:
+ break
+ default:
+ t.Errorf("Expected *rpc.DecodeParamError but got %T with message `%s`", err, err.Error())
+ }
+}
+
+func TestGetStorageInvalidBlockheight(t *testing.T) {
+ input := `["0x407d73d8a49eeb85d32cf465507dd71d507100c1", {}]`
+
+ args := new(GetStorageArgs)
+ err := json.Unmarshal([]byte(input), &args)
+ switch err.(type) {
+ case nil:
+ t.Error("Expected error but didn't get one")
+ case *DecodeParamError:
+ break
+ default:
+ t.Errorf("Expected *rpc.DecodeParamError but got %T with message `%s`", err, err.Error())
+ }
+}
+
func TestGetStorageEmptyArgs(t *testing.T) {
input := `[]`
args := new(GetStorageArgs)
err := json.Unmarshal([]byte(input), &args)
- if err == nil {
+ switch err.(type) {
+ case nil:
t.Error("Expected error but didn't get one")
+ case *InsufficientParamsError:
+ break
+ default:
+ t.Errorf("Expected *rpc.InsufficientParamsError but got %T with message `%s`", err, err.Error())
+ }
+}
+
+func TestGetStorageAddressInt(t *testing.T) {
+ input := `[32456785432456, "latest"]`
+
+ args := new(GetStorageArgs)
+ err := json.Unmarshal([]byte(input), &args)
+ switch err.(type) {
+ case nil:
+ t.Error("Expected error but didn't get one")
+ case *DecodeParamError:
+ break
+ default:
+ t.Errorf("Expected *rpc.DecodeParamError but got %T with message `%s`", err, err.Error())
}
}