aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--rpc/args.go7
-rw-r--r--rpc/args_test.go55
2 files changed, 55 insertions, 7 deletions
diff --git a/rpc/args.go b/rpc/args.go
index fc7307b83..82ee00d25 100644
--- a/rpc/args.go
+++ b/rpc/args.go
@@ -145,12 +145,7 @@ func (args *NewTxArgs) UnmarshalJSON(b []byte) (err error) {
// Check for optional BlockNumber param
if len(obj) > 1 {
- var raw interface{}
- if err = json.Unmarshal(obj[1], &raw); err != nil {
- return NewDecodeParamError(err.Error())
- }
-
- if err := blockHeight(raw, &args.BlockNumber); err != nil {
+ if err := blockHeightFromJson(obj[1], &args.BlockNumber); err != nil {
return err
}
}
diff --git a/rpc/args_test.go b/rpc/args_test.go
index b9a68d8bc..e5a27e38a 100644
--- a/rpc/args_test.go
+++ b/rpc/args_test.go
@@ -300,13 +300,66 @@ func TestNewTxArgsBlockInt(t *testing.T) {
}
}
+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)
+ 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("Expeted *rpc.DecodeParamError but got %T with message `%s`", err, err.Error())
+ }
+
+}
+
func TestNewTxArgsEmpty(t *testing.T) {
input := `[]`
args := new(NewTxArgs)
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("Expeted *rpc.InsufficientParamsError but got %T with message `%s`", err, err.Error())
+ }
+}
+
+func TestNewTxArgsInvalid(t *testing.T) {
+ input := `{}`
+
+ args := new(NewTxArgs)
+ 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("Expeted *rpc.DecodeParamError but got %T with message `%s`", err, err.Error())
+ }
+}
+func TestNewTxArgsNotStrings(t *testing.T) {
+ input := `[{"from":6}]`
+
+ args := new(NewTxArgs)
+ 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("Expeted *rpc.DecodeParamError but got %T with message `%s`", err, err.Error())
}
}