Files
grafana/pkg/macaron/response_writer_test.go
T
Grot (@grafanabot)andCarl Bergquist 2f9153c95e Macaron: Prevent WriteHeader invalid HTTP status code panic (#42973) (#42974)
(cherry picked from commit 92005159c89f848ab8b8435e0c8751599e2e8aff)

Co-authored-by: Todd Treece <todd.treece@grafana.com>
(cherry picked from commit f9481527de)

Co-authored-by: Carl Bergquist <carl.bergquist@gmail.com>
2021-12-10 14:14:47 +01:00

44 lines
983 B
Go

package macaron_test
import (
"net/http"
"testing"
"github.com/stretchr/testify/require"
"gopkg.in/macaron.v1"
)
func Test_responseWriter_WriteHeader(t *testing.T) {
t.Run("it should set status code as expected", func(t *testing.T) {
f := fakeResponseWriter{}
rw := macaron.NewResponseWriter("GET", &f)
rw.WriteHeader(200)
require.Equal(t, 200, rw.Status())
require.Equal(t, 200, f.Status)
})
t.Run("it should set status code to 500 if WriteHeader is called with invalid HTTP status", func(t *testing.T) {
f := fakeResponseWriter{}
rw := macaron.NewResponseWriter("GET", &f)
rw.WriteHeader(0)
require.Equal(t, 500, rw.Status())
require.Equal(t, 500, f.Status)
})
}
type fakeResponseWriter struct {
Status int
}
func (f *fakeResponseWriter) Header() http.Header {
return http.Header{}
}
func (f *fakeResponseWriter) Write([]byte) (int, error) {
return 0, nil
}
func (f *fakeResponseWriter) WriteHeader(statusCode int) {
f.Status = statusCode
}