diff options
author | Taylor Gerring <taylor.gerring@gmail.com> | 2015-03-27 03:31:00 +0800 |
---|---|---|
committer | Taylor Gerring <taylor.gerring@gmail.com> | 2015-03-27 03:31:00 +0800 |
commit | 81f36df910533de63dc5ac66f38b5481961cc0c8 (patch) | |
tree | 3c6bf52b299ae7dba1b7409632ab500d10a915e7 | |
parent | ddcc8e1673f240556f7a9394d5fbc9ed609a4931 (diff) | |
download | go-tangerine-81f36df910533de63dc5ac66f38b5481961cc0c8.tar.gz go-tangerine-81f36df910533de63dc5ac66f38b5481961cc0c8.tar.zst go-tangerine-81f36df910533de63dc5ac66f38b5481961cc0c8.zip |
CompileArgs
-rw-r--r-- | rpc/args.go | 12 | ||||
-rw-r--r-- | rpc/args_test.go | 30 |
2 files changed, 38 insertions, 4 deletions
diff --git a/rpc/args.go b/rpc/args.go index c11ffa3cc..0169ece58 100644 --- a/rpc/args.go +++ b/rpc/args.go @@ -617,14 +617,18 @@ type CompileArgs struct { func (args *CompileArgs) UnmarshalJSON(b []byte) (err error) { var obj []interface{} - r := bytes.NewReader(b) - if err := json.NewDecoder(r).Decode(&obj); err != nil { + if err := json.Unmarshal(b, &obj); err != nil { return NewDecodeParamError(err.Error()) } - if len(obj) > 0 { - args.Source = obj[0].(string) + if len(obj) < 1 { + return NewInsufficientParamsError(len(obj), 1) + } + argstr, ok := obj[0].(string) + if !ok { + return NewInvalidTypeError("arg0", "is not a string") } + args.Source = argstr return nil } diff --git a/rpc/args_test.go b/rpc/args_test.go index 0b243e760..7cb63b67e 100644 --- a/rpc/args_test.go +++ b/rpc/args_test.go @@ -1126,6 +1126,36 @@ func TestCompileArgs(t *testing.T) { } } +func TestCompileArgsInvalid(t *testing.T) { + input := `{}` + + args := new(CompileArgs) + str := ExpectDecodeParamError(json.Unmarshal([]byte(input), args)) + if len(str) > 0 { + t.Error(str) + } +} + +func TestCompileArgsEmpty(t *testing.T) { + input := `[]` + + args := new(CompileArgs) + str := ExpectInsufficientParamsError(json.Unmarshal([]byte(input), args)) + if len(str) > 0 { + t.Error(str) + } +} + +func TestCompileArgsBool(t *testing.T) { + input := `[false]` + + args := new(CompileArgs) + str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), args)) + if len(str) > 0 { + t.Error(str) + } +} + func TestFilterStringArgs(t *testing.T) { input := `["pending"]` expected := new(FilterStringArgs) |