Prechádzať zdrojové kódy

Validate NewTx From field is not blank

Taylor Gerring 10 rokov pred
rodič
commit
8b20c3cc97
3 zmenil súbory, kde vykonal 40 pridanie a 0 odobranie
  1. 5 0
      rpc/api.go
  2. 7 0
      rpc/args.go
  3. 28 0
      rpc/args_test.go

+ 5 - 0
rpc/api.go

@@ -257,6 +257,11 @@ func (p *EthereumApi) Transact(args *NewTxArgs, reply *interface{}) (err error)
 			p.register[ags.From] = append(p.register[args.From], args)
 		}
 	*/
+
+	if err := args.requirements(); err != nil {
+		return err
+	}
+
 	// TODO: align default values to have the same type, e.g. not depend on
 	// common.Value conversions later on
 	if args.Gas.Cmp(big.NewInt(0)) == 0 {

+ 7 - 0
rpc/args.go

@@ -145,6 +145,13 @@ func (args *NewTxArgs) UnmarshalJSON(b []byte) (err error) {
 	return nil
 }
 
+func (args *NewTxArgs) requirements() error {
+	if len(args.From) == 0 {
+		return NewValidationError("From", "Is required")
+	}
+	return nil
+}
+
 type GetStorageArgs struct {
 	Address     string
 	BlockNumber int64

+ 28 - 0
rpc/args_test.go

@@ -219,6 +219,34 @@ func TestNewTxArgsEmpty(t *testing.T) {
 	}
 }
 
+func TestNewTxArgsReqs(t *testing.T) {
+	args := new(NewTxArgs)
+	args.From = "0xb60e8dd61c5d32be8058bb8eb970870f07233155"
+
+	err := args.requirements()
+	switch err.(type) {
+	case nil:
+		break
+	default:
+		t.Errorf("Get %T", err)
+	}
+}
+
+func TestNewTxArgsReqsFromBlank(t *testing.T) {
+	args := new(NewTxArgs)
+	args.From = ""
+
+	err := args.requirements()
+	switch err.(type) {
+	case nil:
+		t.Error("Expected error but didn't get one")
+	case *ValidationError:
+		break
+	default:
+		t.Error("Wrong type of error")
+	}
+}
+
 func TestGetStorageArgs(t *testing.T) {
 	input := `["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"]`
 	expected := new(GetStorageArgs)