// TestAcceptEncoding hits the health endpoint while explicitly // disabling decompression on a custom client's Transport and setting // it conditionally via the request's Accept-Encoding headers. func TestAcceptEncoding(t *testing.T) { defer leaktest.AfterTest(t) s := StartTestServer(t) defer s.Stop() client, err := testContext.GetHTTPClient() if err != nil { t.Fatal(err) } testData := []struct { acceptEncoding string newReader func(io.Reader) io.Reader }{ {"", func(b io.Reader) io.Reader { return b }, }, {util.GzipEncoding, func(b io.Reader) io.Reader { r, err := gzip.NewReader(b) if err != nil { t.Fatalf("could not create new gzip reader: %s", err) } return r }, }, {util.SnappyEncoding, func(b io.Reader) io.Reader { return snappy.NewReader(b) }, }, } for _, d := range testData { req, err := http.NewRequest("GET", testContext.HTTPRequestScheme()+"://"+s.ServingAddr()+healthPath, nil) if err != nil { t.Fatalf("could not create request: %s", err) } if d.acceptEncoding != "" { req.Header.Set(util.AcceptEncodingHeader, d.acceptEncoding) } resp, err := client.Do(req) if err != nil { t.Fatalf("could not make request to %s: %s", req.URL, err) } defer resp.Body.Close() if ce := resp.Header.Get(util.ContentEncodingHeader); ce != d.acceptEncoding { t.Fatalf("unexpected content encoding: '%s' != '%s'", ce, d.acceptEncoding) } r := d.newReader(resp.Body) b, err := ioutil.ReadAll(r) if err != nil { t.Fatalf("could not read '%s' response body: %s", d.acceptEncoding, err) } expected := "ok" if !strings.Contains(string(b), expected) { t.Errorf("expected body to contain %q, got %q", expected, b) } } }
// TestAcceptEncoding hits the health endpoint while explicitly // disabling decompression on a custom client's Transport and setting // it conditionally via the request's Accept-Encoding headers. func TestAcceptEncoding(t *testing.T) { defer leaktest.AfterTest(t)() s := StartTestServer(t) defer s.Stop() client, err := s.Ctx.GetHTTPClient() if err != nil { t.Fatal(err) } testData := []struct { acceptEncoding string newReader func(io.Reader) io.Reader }{ {"", func(b io.Reader) io.Reader { return b }, }, {util.GzipEncoding, func(b io.Reader) io.Reader { r, err := gzip.NewReader(b) if err != nil { t.Fatalf("could not create new gzip reader: %s", err) } return r }, }, } for _, d := range testData { req, err := http.NewRequest("GET", s.Ctx.AdminURL()+healthPath, nil) if err != nil { t.Fatalf("could not create request: %s", err) } if d.acceptEncoding != "" { req.Header.Set(util.AcceptEncodingHeader, d.acceptEncoding) } resp, err := client.Do(req) if err != nil { t.Fatalf("could not make request to %s: %s", req.URL, err) } defer resp.Body.Close() if ce := resp.Header.Get(util.ContentEncodingHeader); ce != d.acceptEncoding { t.Fatalf("unexpected content encoding: '%s' != '%s'", ce, d.acceptEncoding) } r := d.newReader(resp.Body) var data serverpb.HealthResponse if err := jsonpb.Unmarshal(r, &data); err != nil { t.Error(err) } } }