github.com/gocaveman/caveman@v0.0.0-20191211162744-0ddf99dbdf6e/router/httpgzip/httpgzip_test.go (about)

     1  package httpgzip
     2  
     3  import (
     4  	"fmt"
     5  	"log"
     6  	"net/http"
     7  	"net/http/httptest"
     8  	"net/http/httputil"
     9  	"testing"
    10  
    11  	"github.com/gocaveman/caveman/router"
    12  	"github.com/stretchr/testify/assert"
    13  )
    14  
    15  func TestGzipServer(t *testing.T) {
    16  
    17  	assert := assert.New(t)
    18  
    19  	// do a full end to end test with a server
    20  	r := router.New()
    21  
    22  	// add gzip
    23  	r.Add(New(""))
    24  
    25  	r.Add(&router.HTTPRouteHandler{
    26  		Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    27  			// log.Printf("HERE: %s", w.Header().Get("Content-Encoding"))
    28  			w.Header().Set("Content-Type", "text/plain")
    29  			fmt.Fprintf(w, "v: %s", r.URL.Query().Get("v"))
    30  		}),
    31  	})
    32  
    33  	r.Add(&router.HTTPRouteHandler{
    34  		Sequence: router.RouteSequenceLast,
    35  		Handler:  http.NotFoundHandler(),
    36  	})
    37  
    38  	ts := httptest.NewServer(r)
    39  	defer ts.Close()
    40  
    41  	u := ts.URL + "/?v=example1"
    42  	log.Printf("URL: %s", u)
    43  
    44  	// client := ts.Client()
    45  	client := &http.Client{}
    46  	req, err := http.NewRequest("GET", u, nil)
    47  	assert.NoError(err)
    48  	b, _ := httputil.DumpRequestOut(req, true)
    49  	log.Printf("REQUEST: %s", b)
    50  
    51  	res, err := client.Do(req)
    52  	// res, err := http.Get(u)
    53  	assert.NoError(err)
    54  	defer res.Body.Close()
    55  
    56  	// var buf bytes.Buffer
    57  	// res.Header.Write(&buf)
    58  	// log.Printf("RESPONSE HEADER: %s", buf.String())
    59  
    60  	b, err = httputil.DumpResponse(res, true)
    61  	assert.NoError(err)
    62  	log.Printf("RESPONSE (len=%d): %s", len(b), b)
    63  	assert.Contains(string(b), "example1")
    64  
    65  	// b, err := ioutil.ReadAll(res.Body)
    66  	// if err != nil {
    67  	// 	t.Fatal(err)
    68  	// }
    69  
    70  	// fmt.Printf("%s", b)
    71  
    72  }