| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package gzip
- import (
- "compress/gzip"
- "fmt"
- "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.NotEqual(t, w.Header().Get("Content-Length"), "0")
- assert.NotEqual(t, w.Body.Len(), 19)
- assert.Equal(t, fmt.Sprint(w.Body.Len()), w.Header().Get("Content-Length"))
- 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)
- }
|