github.com/johnnyeven/libtools@v0.0.0-20191126065708-61829c1adf46/courier/transport_http/transform/parameter_group_test.go (about) 1 package transform 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 8 "github.com/johnnyeven/libtools/courier/status_error" 9 ) 10 11 type Anonymous string 12 13 type SomeData struct { 14 String string `json:"string" validate:"@string[3,]"` 15 Pointer *string `json:"pointer" validate:"@string[3,]"` 16 } 17 18 type SomeReq struct { 19 a string 20 Anonymous 21 P P `name:"p" in:"query"` 22 Query string `name:"query" in:"query" validate:"@string[3,]"` 23 Pointer *string `name:"pointer" in:"query" validate:"@string[3,]"` 24 Bytes []byte `name:"bytes" in:"query"` 25 Data SomeData `in:"body"` 26 } 27 28 func (v SomeReq) ValidateQuery() string { 29 return "hook failed" 30 } 31 32 func TestParameterGroupFromValue(t *testing.T) { 33 tt := assert.New(t) 34 35 pg := ParameterGroupFromValue(&SomeReq{}) 36 37 tt.Len(pg.Parameters.List(), 4) 38 39 valid, errFields := pg.ValidateNoBodyByHook() 40 tt.False(valid) 41 tt.Equal(status_error.ErrorFields{ 42 status_error.NewErrorField("query", "query", "hook failed"), 43 }, errFields) 44 } 45 46 type SomeFormData struct { 47 a string 48 Anonymous 49 String string `name:"string" validate:"@string[3,]"` 50 Pointer *string `name:"pointer" validate:"@string[3,]"` 51 } 52 53 type SomeReqWithFormData struct { 54 S string `in:"formData" name:"s" validate:"@string[3,]"` 55 FormData SomeFormData `in:"formData"` 56 } 57 58 func TestParameterGroupFromWithFormData(t *testing.T) { 59 tt := assert.New(t) 60 61 pg := ParameterGroupFromValue(&SomeReqWithFormData{}) 62 63 tt.Len(pg.Parameters.List(), 0) 64 tt.Len(pg.FormData.List(), 3) 65 }