diff --git a/pkg/app/server/binding/binder_test.go b/pkg/app/server/binding/binder_test.go index 225b8bd2e..ec962dafa 100644 --- a/pkg/app/server/binding/binder_test.go +++ b/pkg/app/server/binding/binder_test.go @@ -466,10 +466,14 @@ func TestBind_RequiredBind(t *testing.T) { A int `query:"a,required"` } req := newMockRequest(). + SetRequestURI("http://foobar.com") + err := DefaultBinder().Bind(req.Req, &s, nil) + assert.DeepEqual(t, "'a' field is a 'required' parameter, but the request does not have this parameter", err.Error()) + + req = newMockRequest(). SetRequestURI("http://foobar.com"). SetHeader("A", "1") - - err := DefaultBinder().Bind(req.Req, &s, nil) + err = DefaultBinder().Bind(req.Req, &s, nil) if err == nil { t.Fatal("expected error") } @@ -904,6 +908,7 @@ func TestBind_JSONRequiredField(t *testing.T) { if err == nil { t.Errorf("expected an error, but get nil") } + assert.DeepEqual(t, "'c' field is a 'required' parameter, but the request body does not have this parameter 'n.n2.c'", err.Error()) assert.DeepEqual(t, 1, result.N.A) assert.DeepEqual(t, 2, result.N.B) assert.DeepEqual(t, 0, result.N.N2.C) @@ -1492,6 +1497,7 @@ func Test_ValidatorErrorFactory(t *testing.T) { if err == nil { t.Fatalf("unexpected nil, expected an error") } + assert.DeepEqual(t, "'a' field is a 'required' parameter, but the request does not have this parameter", err.Error()) type TestValidate struct { B int `query:"b" vd:"$>100"` diff --git a/pkg/app/server/binding/internal/decoder/base_type_decoder.go b/pkg/app/server/binding/internal/decoder/base_type_decoder.go index 9c5cb1200..bf26c9c5b 100644 --- a/pkg/app/server/binding/internal/decoder/base_type_decoder.go +++ b/pkg/app/server/binding/internal/decoder/base_type_decoder.go @@ -75,7 +75,7 @@ func (d *baseTypeFieldTextDecoder) Decode(req *protocol.Request, params param.Pa if found { err = nil } else { - err = fmt.Errorf("'%s' field is a 'required' parameter, but the request body does not have this parameter '%s'", d.fieldName, tagInfo.JSONName) + err = fmt.Errorf("'%s' field is a 'required' parameter, but the request body does not have this parameter '%s'", tagInfo.Value, tagInfo.JSONName) } if len(tagInfo.Default) != 0 && keyExist(req, tagInfo) { defaultValue = "" @@ -90,7 +90,7 @@ func (d *baseTypeFieldTextDecoder) Decode(req *protocol.Request, params param.Pa break } if tagInfo.Required { - err = fmt.Errorf("'%s' field is a 'required' parameter, but the request does not have this parameter", d.fieldName) + err = fmt.Errorf("'%s' field is a 'required' parameter, but the request does not have this parameter", tagInfo.Value) } } if err != nil { diff --git a/pkg/app/server/binding/internal/decoder/map_type_decoder.go b/pkg/app/server/binding/internal/decoder/map_type_decoder.go index 59fed7716..18e15c991 100644 --- a/pkg/app/server/binding/internal/decoder/map_type_decoder.go +++ b/pkg/app/server/binding/internal/decoder/map_type_decoder.go @@ -67,7 +67,7 @@ func (d *mapTypeFieldTextDecoder) Decode(req *protocol.Request, params param.Par if found { err = nil } else { - err = fmt.Errorf("'%s' field is a 'required' parameter, but the request does not have this parameter", d.fieldName) + err = fmt.Errorf("'%s' field is a 'required' parameter, but the request does not have this parameter", tagInfo.Value) } if len(tagInfo.Default) != 0 && keyExist(req, tagInfo) { defaultValue = "" @@ -82,7 +82,7 @@ func (d *mapTypeFieldTextDecoder) Decode(req *protocol.Request, params param.Par break } if tagInfo.Required { - err = fmt.Errorf("'%s' field is a 'required' parameter, but the request does not have this parameter", d.fieldName) + err = fmt.Errorf("'%s' field is a 'required' parameter, but the request does not have this parameter", tagInfo.Value) } } if err != nil { diff --git a/pkg/app/server/binding/internal/decoder/slice_type_decoder.go b/pkg/app/server/binding/internal/decoder/slice_type_decoder.go index c2887d1c4..7b6c5913c 100644 --- a/pkg/app/server/binding/internal/decoder/slice_type_decoder.go +++ b/pkg/app/server/binding/internal/decoder/slice_type_decoder.go @@ -70,7 +70,7 @@ func (d *sliceTypeFieldTextDecoder) Decode(req *protocol.Request, params param.P if found { err = nil } else { - err = fmt.Errorf("'%s' field is a 'required' parameter, but the request does not have this parameter", d.fieldName) + err = fmt.Errorf("'%s' field is a 'required' parameter, but the request does not have this parameter", tagInfo.Value) } if len(tagInfo.Default) != 0 && keyExist(req, tagInfo) { // defaultValue = "" @@ -88,7 +88,7 @@ func (d *sliceTypeFieldTextDecoder) Decode(req *protocol.Request, params param.P break } if tagInfo.Required { - err = fmt.Errorf("'%s' field is a 'required' parameter, but the request does not have this parameter", d.fieldName) + err = fmt.Errorf("'%s' field is a 'required' parameter, but the request does not have this parameter", tagInfo.Value) } } if err != nil { diff --git a/pkg/app/server/binding/internal/decoder/struct_type_decoder.go b/pkg/app/server/binding/internal/decoder/struct_type_decoder.go index 75f3ae4aa..c2af2c030 100644 --- a/pkg/app/server/binding/internal/decoder/struct_type_decoder.go +++ b/pkg/app/server/binding/internal/decoder/struct_type_decoder.go @@ -44,7 +44,7 @@ func (d *structTypeFieldTextDecoder) Decode(req *protocol.Request, params param. if found { err = nil } else { - err = fmt.Errorf("'%s' field is a 'required' parameter, but the request does not have this parameter", d.fieldName) + err = fmt.Errorf("'%s' field is a 'required' parameter, but the request does not have this parameter", tagInfo.Value) } if len(tagInfo.Default) != 0 && keyExist(req, tagInfo) { defaultValue = "" @@ -59,7 +59,7 @@ func (d *structTypeFieldTextDecoder) Decode(req *protocol.Request, params param. break } if tagInfo.Required { - err = fmt.Errorf("'%s' field is a 'required' parameter, but the request does not have this parameter", d.fieldName) + err = fmt.Errorf("'%s' field is a 'required' parameter, but the request does not have this parameter", tagInfo.Value) } } if err != nil { diff --git a/pkg/app/server/binding/tagexpr_bind_test.go b/pkg/app/server/binding/tagexpr_bind_test.go index 1533b5aea..1d331e163 100644 --- a/pkg/app/server/binding/tagexpr_bind_test.go +++ b/pkg/app/server/binding/tagexpr_bind_test.go @@ -121,7 +121,7 @@ func TestGetBody(t *testing.T) { if err == nil { t.Fatalf("expected an error, but get nil") } - assert.DeepEqual(t, err.Error(), "'E' field is a 'required' parameter, but the request body does not have this parameter 'X.e'") + assert.DeepEqual(t, err.Error(), "'e' field is a 'required' parameter, but the request body does not have this parameter 'X.e'") } func TestQueryNum(t *testing.T) { @@ -431,7 +431,7 @@ func TestJSON(t *testing.T) { if err == nil { t.Error("expected an error, but get nil") } - assert.DeepEqual(t, err.Error(), "'Y' field is a 'required' parameter, but the request body does not have this parameter 'y'") + assert.DeepEqual(t, err.Error(), "'y' field is a 'required' parameter, but the request body does not have this parameter 'y'") assert.DeepEqual(t, []string{"a1", "a2"}, (**recv.X).A) assert.DeepEqual(t, int32(21), (**recv.X).B) assert.DeepEqual(t, &[]uint16{31, 32}, (**recv.X).C) @@ -753,7 +753,7 @@ func TestOption(t *testing.T) { req = newRequest("", header, nil, bodyReader) recv = new(Recv) err = DefaultBinder().Bind(req.Req, recv, nil) - assert.DeepEqual(t, err.Error(), "'C' field is a 'required' parameter, but the request body does not have this parameter 'X.c'") + assert.DeepEqual(t, err.Error(), "'c' field is a 'required' parameter, but the request body does not have this parameter 'X.c'") assert.DeepEqual(t, 0, recv.X.C) assert.DeepEqual(t, 0, recv.X.D) assert.DeepEqual(t, "y1", recv.Y)