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  }