func TestGzip(t *testing.T) { req, _ := http.NewRequest(vodka.GET, "/", nil) rec := httptest.NewRecorder() c := vodka.NewContext(req, vodka.NewResponse(rec), vodka.New()) h := func(c *vodka.Context) error { c.Response().Write([]byte("test")) // For Content-Type sniffing return nil } // Skip if no Accept-Encoding header Gzip()(h)(c) assert.Equal(t, http.StatusOK, rec.Code) assert.Equal(t, "test", rec.Body.String()) req, _ = http.NewRequest(vodka.GET, "/", nil) req.Header.Set(vodka.AcceptEncoding, "gzip") rec = httptest.NewRecorder() c = vodka.NewContext(req, vodka.NewResponse(rec), vodka.New()) // Gzip Gzip()(h)(c) assert.Equal(t, http.StatusOK, rec.Code) assert.Equal(t, "gzip", rec.Header().Get(vodka.ContentEncoding)) assert.Contains(t, rec.Header().Get(vodka.ContentType), vodka.TextPlain) r, err := gzip.NewReader(rec.Body) defer r.Close() if assert.NoError(t, err) { buf := new(bytes.Buffer) buf.ReadFrom(r) assert.Equal(t, "test", buf.String()) } }
func TestRecover(t *testing.T) { e := vodka.New() e.SetDebug(true) req, _ := http.NewRequest(vodka.GET, "/", nil) rec := httptest.NewRecorder() c := vodka.NewContext(req, vodka.NewResponse(rec), e) h := func(c *vodka.Context) error { panic("test") } Recover()(h)(c) assert.Equal(t, http.StatusInternalServerError, rec.Code) assert.Contains(t, rec.Body.String(), "panic recover") }