| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- package gzip
- import (
- "compress/gzip"
- "io/ioutil"
- "net/http"
- "net/http/httptest"
- "strconv"
- "testing"
- "github.com/gin-gonic/gin"
- "github.com/stretchr/testify/assert"
- )
- const (
- testResponse = "Gzip Test Response "
- )
- func newServer() *gin.Engine {
- router := gin.Default()
- router.Use(Gzip(DefaultCompression))
- router.GET("/", func(c *gin.Context) {
- c.Header("Content-Length", strconv.Itoa(len(testResponse)))
- c.String(200, testResponse)
- })
- return router
- }
- func TestGzip(t *testing.T) {
- req, _ := http.NewRequest("GET", "/", nil)
- req.Header.Add("Accept-Encoding", "gzip")
- w := httptest.NewRecorder()
- r := newServer()
- r.ServeHTTP(w, req)
- assert.Equal(t, w.Code, 200)
- assert.Equal(t, w.Header().Get("Content-Encoding"), "gzip")
- assert.Equal(t, w.Header().Get("Vary"), "Accept-Encoding")
- assert.Equal(t, w.Header().Get("Content-Length"), "0")
- assert.NotEqual(t, w.Body.Len(), 19)
- gr, err := gzip.NewReader(w.Body)
- assert.NoError(t, err)
- defer gr.Close()
- body, _ := ioutil.ReadAll(gr)
- assert.Equal(t, string(body), testResponse)
- }
- func TestGzipPNG(t *testing.T) {
- req, _ := http.NewRequest("GET", "/image.png", nil)
- req.Header.Add("Accept-Encoding", "gzip")
- router := gin.New()
- router.Use(Gzip(DefaultCompression))
- router.GET("/image.png", func(c *gin.Context) {
- c.String(200, "this is a PNG!")
- })
- w := httptest.NewRecorder()
- router.ServeHTTP(w, req)
- assert.Equal(t, w.Code, 200)
- assert.Equal(t, w.Header().Get("Content-Encoding"), "")
- assert.Equal(t, w.Header().Get("Vary"), "")
- assert.Equal(t, w.Body.String(), "this is a PNG!")
- }
- func TestNoGzip(t *testing.T) {
- req, _ := http.NewRequest("GET", "/", nil)
- w := httptest.NewRecorder()
- r := newServer()
- r.ServeHTTP(w, req)
- assert.Equal(t, w.Code, 200)
- assert.Equal(t, w.Header().Get("Content-Encoding"), "")
- assert.Equal(t, w.Header().Get("Content-Length"), "19")
- assert.Equal(t, w.Body.String(), testResponse)
- }
|