github.com/bytedance/go-tagexpr/v2@v2.9.8/binding/body_test.go (about) 1 package binding 2 3 import ( 4 "bytes" 5 "compress/gzip" 6 "io/ioutil" 7 "net/http" 8 "testing" 9 10 "github.com/stretchr/testify/assert" 11 ) 12 13 func TestBody(t *testing.T) { 14 const USE_GZIP = true 15 var buf bytes.Buffer 16 if USE_GZIP { 17 w := gzip.NewWriter(&buf) 18 _, err := w.Write([]byte("abc")) 19 assert.NoError(t, err) 20 err = w.Flush() 21 assert.NoError(t, err) 22 } else { 23 buf.WriteString("abc") 24 } 25 req := &http.Request{ 26 Body: ioutil.NopCloser(&buf), 27 } 28 if USE_GZIP { 29 req.Header = map[string][]string{ 30 "Content-Encoding": []string{"gzip"}, 31 } 32 } 33 body, err := GetBody(req) 34 assert.NoError(t, err) 35 b, err := ioutil.ReadAll(body) 36 assert.NoError(t, err) 37 assert.Equal(t, []byte("abc"), b) 38 body.Reset() 39 assert.Equal(t, []byte("abc"), body.bodyBytes) 40 b, err = ioutil.ReadAll(body) 41 assert.NoError(t, err) 42 assert.Equal(t, []byte("abc"), b) 43 body.Close() 44 assert.Equal(t, []byte(nil), body.Bytes()) 45 }