github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/web/publichandler/cache_handler_test.go (about) 1 package publichandler_test 2 3 import ( 4 "compress/gzip" 5 "fmt" 6 "io/ioutil" 7 "net/http" 8 "net/http/httptest" 9 "strings" 10 11 . "github.com/onsi/ginkgo" 12 . "github.com/onsi/gomega" 13 14 "github.com/pf-qiu/concourse/v6/web/publichandler" 15 ) 16 17 var _ = Describe("CacheNearlyForever", func() { 18 It("adds a cache control header to the wrapped handler", func() { 19 insideHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 20 fmt.Fprint(w, "The wrapped handler was called!") 21 }) 22 23 wrappedHandler := publichandler.CacheNearlyForever(insideHandler) 24 recorder := httptest.NewRecorder() 25 request, err := http.NewRequest("GET", "/", nil) 26 Expect(err).ToNot(HaveOccurred()) 27 28 wrappedHandler.ServeHTTP(recorder, request) // request is never used 29 30 Expect(recorder.Body.String()).To(Equal("The wrapped handler was called!")) 31 Expect(recorder.Header().Get("Cache-Control")).To(Equal("max-age=31536000, private")) 32 Expect(recorder.Header().Get("Content-Encoding")).ToNot(Equal("gzip")) 33 }) 34 35 Context("when accept encoding uses gzip", func() { 36 It("returns a gzipped asset", func() { 37 38 insideHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 39 fmt.Fprint(w, strings.Repeat("abc123", 1000)) 40 }) 41 42 wrappedHandler := publichandler.CacheNearlyForever(insideHandler) 43 recorder := httptest.NewRecorder() 44 request, err := http.NewRequest("GET", "/", nil) 45 Expect(err).ToNot(HaveOccurred()) 46 request.Header["Accept-Encoding"] = []string{"gzip, deflate, br"} 47 48 wrappedHandler.ServeHTTP(recorder, request) // request is never used 49 50 reader, err := gzip.NewReader(recorder.Body) 51 Expect(err).ToNot(HaveOccurred()) 52 body, err := ioutil.ReadAll(reader) 53 Expect(err).ToNot(HaveOccurred()) 54 55 Expect(string(body)).To(Equal(strings.Repeat("abc123", 1000))) 56 Expect(recorder.Header().Get("Content-Encoding")).To(Equal("gzip")) 57 }) 58 }) 59 })