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  }