github.com/webonyx/up@v0.7.4-0.20180808230834-91b94e551323/http/gzip/gzip_test.go (about) 1 package gzip 2 3 import ( 4 "compress/gzip" 5 "fmt" 6 "io/ioutil" 7 "net/http" 8 "net/http/httptest" 9 "strings" 10 "testing" 11 12 "github.com/apex/up" 13 "github.com/tj/assert" 14 ) 15 16 var body = strings.Repeat("так", 5000) 17 18 var hello = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 19 fmt.Fprint(w, body) 20 }) 21 22 func TestGzip(t *testing.T) { 23 c, err := up.ParseConfigString(`{ "name": "app" }`) 24 assert.NoError(t, err, "config") 25 26 h := New(c, hello) 27 28 t.Run("accepts gzip", func(t *testing.T) { 29 res := httptest.NewRecorder() 30 req := httptest.NewRequest("GET", "/", nil) 31 req.Header.Set("Accept-Encoding", "gzip") 32 33 h.ServeHTTP(res, req) 34 35 header := make(http.Header) 36 header.Add("Content-Type", "text/plain; charset=utf-8") 37 header.Add("Content-Encoding", "gzip") 38 header.Add("Vary", "Accept-Encoding") 39 40 assert.Equal(t, 200, res.Code) 41 assert.Equal(t, header, res.HeaderMap) 42 43 gz, err := gzip.NewReader(res.Body) 44 assert.NoError(t, err, "reader") 45 46 b, err := ioutil.ReadAll(gz) 47 assert.NoError(t, err, "reading") 48 assert.NoError(t, gz.Close(), "close") 49 50 assert.Equal(t, body, string(b)) 51 }) 52 53 t.Run("accepts identity", func(t *testing.T) { 54 res := httptest.NewRecorder() 55 req := httptest.NewRequest("GET", "/", nil) 56 57 h.ServeHTTP(res, req) 58 59 header := make(http.Header) 60 header.Add("Content-Type", "text/plain; charset=utf-8") 61 header.Add("Vary", "Accept-Encoding") 62 63 assert.Equal(t, 200, res.Code) 64 assert.Equal(t, header, res.HeaderMap) 65 66 assert.Equal(t, body, res.Body.String()) 67 }) 68 }