...

Source file src/github.com/ory/x/httpx/gzip_server_test.go

Documentation: github.com/ory/x/httpx

     1  package httpx
     2  
     3  import (
     4  	"bytes"
     5  	gzip2 "compress/gzip"
     6  	"encoding/json"
     7  	"net/http"
     8  	"testing"
     9  
    10  	"github.com/gobuffalo/httptest"
    11  	"github.com/julienschmidt/httprouter"
    12  	"github.com/stretchr/testify/assert"
    13  	"github.com/stretchr/testify/require"
    14  	"github.com/urfave/negroni"
    15  )
    16  
    17  func makeRequest(t *testing.T, data string, ts *httptest.Server) {
    18  	var buf bytes.Buffer
    19  	gzip := gzip2.NewWriter(&buf)
    20  
    21  	_, err := gzip.Write([]byte(data))
    22  	require.NoError(t, err)
    23  	require.NoError(t, gzip.Close())
    24  
    25  	c := http.Client{}
    26  	req, err := http.NewRequest("POST", ts.URL, &buf)
    27  	req.Header.Set("Content-Encoding", "gzip")
    28  	require.NoError(t, err)
    29  	res, err := c.Do(req)
    30  	require.NoError(t, err)
    31  	res.Body.Close()
    32  	assert.EqualValues(t, http.StatusNoContent, res.StatusCode)
    33  }
    34  
    35  func TestGZipServer(t *testing.T) {
    36  	router := httprouter.New()
    37  	router.POST("/", func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
    38  		var f json.RawMessage
    39  		require.NoError(t, json.NewDecoder(r.Body).Decode(&f))
    40  		t.Logf("%s", f)
    41  		w.WriteHeader(http.StatusNoContent)
    42  	})
    43  	n := negroni.New(NewCompressionRequestReader(func(w http.ResponseWriter, r *http.Request, err error) {
    44  		require.NoError(t, err)
    45  	}))
    46  	n.UseHandler(router)
    47  	ts := httptest.NewServer(n)
    48  	defer ts.Close()
    49  
    50  	makeRequest(t, "true", ts)
    51  }
    52  

View as plain text