1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- package handler
- import (
- "bytes"
- "io/ioutil"
- "net/http"
- "net/http/httptest"
- "strings"
- "sync"
- "testing"
- "github.com/stretchr/testify/assert"
- "github.com/tal-tech/go-zero/core/codec"
- "github.com/tal-tech/go-zero/rest/httpx"
- )
- func TestGunzipHandler(t *testing.T) {
- const message = "hello world"
- var wg sync.WaitGroup
- wg.Add(1)
- handler := GunzipHandler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- body, err := ioutil.ReadAll(r.Body)
- assert.Nil(t, err)
- assert.Equal(t, string(body), message)
- wg.Done()
- }))
- req := httptest.NewRequest(http.MethodPost, "http://localhost",
- bytes.NewReader(codec.Gzip([]byte(message))))
- req.Header.Set(httpx.ContentEncoding, gzipEncoding)
- resp := httptest.NewRecorder()
- handler.ServeHTTP(resp, req)
- assert.Equal(t, http.StatusOK, resp.Code)
- wg.Wait()
- }
- func TestGunzipHandler_NoGzip(t *testing.T) {
- const message = "hello world"
- var wg sync.WaitGroup
- wg.Add(1)
- handler := GunzipHandler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- body, err := ioutil.ReadAll(r.Body)
- assert.Nil(t, err)
- assert.Equal(t, string(body), message)
- wg.Done()
- }))
- req := httptest.NewRequest(http.MethodPost, "http://localhost",
- strings.NewReader(message))
- resp := httptest.NewRecorder()
- handler.ServeHTTP(resp, req)
- assert.Equal(t, http.StatusOK, resp.Code)
- wg.Wait()
- }
- func TestGunzipHandler_NoGzipButTelling(t *testing.T) {
- const message = "hello world"
- handler := GunzipHandler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {}))
- req := httptest.NewRequest(http.MethodPost, "http://localhost",
- strings.NewReader(message))
- req.Header.Set(httpx.ContentEncoding, gzipEncoding)
- resp := httptest.NewRecorder()
- handler.ServeHTTP(resp, req)
- assert.Equal(t, http.StatusBadRequest, resp.Code)
- }
|