package httptt import ( "bytes" "encoding/json" "fmt" "net/http" "testing" "gitee.com/xuyiping_admin/pkg/jsonpb" "github.com/golang/protobuf/proto" "github.com/stretchr/testify/require" ) func NewRequest(t *testing.T, method, path string, body proto.Message) *http.Request { var ( req *http.Request err error ) switch method { case http.MethodGet, http.MethodDelete: var url string if body != nil { v := MarshalQueryPB(body) query := v.Encode() url = fmt.Sprintf("%s?%s", path, query) } else { url = path } req, err = http.NewRequest(method, url, nil) require.NoError(t, err) default: if body != nil { bs, err := jsonpb.MarshalBytes(body) require.NoError(t, err) req, err = http.NewRequest(method, path, bytes.NewReader(bs)) require.NoError(t, err) } else { req, err = http.NewRequest(method, path, nil) require.NoError(t, err) } } return req } func NewRequest2(t *testing.T, method, path string, body interface{}) *http.Request { var ( req *http.Request err error ) switch method { case http.MethodGet: var url string url = path req, err = http.NewRequest(http.MethodGet, url, nil) require.NoError(t, err) default: if body != nil { bs, err := json.Marshal(body) require.NoError(t, err) req, err = http.NewRequest(method, path, bytes.NewReader(bs)) require.NoError(t, err) } else { req, err = http.NewRequest(method, path, nil) require.NoError(t, err) } } return req }