http.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package httptt
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "fmt"
  6. "net/http"
  7. "testing"
  8. "kpt-tmr-group/pkg/jsonpb"
  9. "github.com/golang/protobuf/proto"
  10. "github.com/stretchr/testify/require"
  11. )
  12. func NewRequest(t *testing.T, method, path string, body proto.Message) *http.Request {
  13. var (
  14. req *http.Request
  15. err error
  16. )
  17. switch method {
  18. case http.MethodGet, http.MethodDelete:
  19. var url string
  20. if body != nil {
  21. v := MarshalQueryPB(body)
  22. query := v.Encode()
  23. url = fmt.Sprintf("%s?%s", path, query)
  24. } else {
  25. url = path
  26. }
  27. req, err = http.NewRequest(method, url, nil)
  28. require.NoError(t, err)
  29. default:
  30. if body != nil {
  31. bs, err := jsonpb.MarshalBytes(body)
  32. require.NoError(t, err)
  33. req, err = http.NewRequest(method, path, bytes.NewReader(bs))
  34. require.NoError(t, err)
  35. } else {
  36. req, err = http.NewRequest(method, path, nil)
  37. require.NoError(t, err)
  38. }
  39. }
  40. return req
  41. }
  42. func NewRequest2(t *testing.T, method, path string, body interface{}) *http.Request {
  43. var (
  44. req *http.Request
  45. err error
  46. )
  47. switch method {
  48. case http.MethodGet:
  49. var url string
  50. url = path
  51. req, err = http.NewRequest(http.MethodGet, url, nil)
  52. require.NoError(t, err)
  53. default:
  54. if body != nil {
  55. bs, err := json.Marshal(body)
  56. require.NoError(t, err)
  57. req, err = http.NewRequest(method, path, bytes.NewReader(bs))
  58. require.NoError(t, err)
  59. } else {
  60. req, err = http.NewRequest(method, path, nil)
  61. require.NoError(t, err)
  62. }
  63. }
  64. return req
  65. }