github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/pkg/util/server/recovery_test.go (about) 1 package server 2 3 import ( 4 "context" 5 "net/http" 6 "net/http/httptest" 7 "testing" 8 9 "github.com/stretchr/testify/require" 10 "google.golang.org/grpc" 11 "google.golang.org/grpc/metadata" 12 ) 13 14 func Test_onPanic(t *testing.T) { 15 rec := httptest.NewRecorder() 16 req, err := http.NewRequest(http.MethodGet, "foo", nil) 17 if err != nil { 18 t.Fatal(err) 19 } 20 RecoveryHTTPMiddleware. 21 Wrap(http.HandlerFunc(func(_ http.ResponseWriter, _ *http.Request) { 22 panic("foo bar") 23 })). 24 ServeHTTP(rec, req) 25 require.Equal(t, http.StatusInternalServerError, rec.Code) 26 27 require.Error(t, RecoveryGRPCStreamInterceptor(nil, fakeStream{}, nil, grpc.StreamHandler(func(srv interface{}, stream grpc.ServerStream) error { 28 panic("foo") 29 }))) 30 31 _, err = RecoveryGRPCUnaryInterceptor(context.Background(), nil, nil, grpc.UnaryHandler(func(ctx context.Context, req interface{}) (interface{}, error) { 32 panic("foo") 33 })) 34 require.Error(t, err) 35 } 36 37 type fakeStream struct{} 38 39 func (fakeStream) SetHeader(_ metadata.MD) error { return nil } 40 func (fakeStream) SendHeader(_ metadata.MD) error { return nil } 41 func (fakeStream) SetTrailer(_ metadata.MD) {} 42 func (fakeStream) Context() context.Context { return context.Background() } 43 func (fakeStream) SendMsg(m interface{}) error { return nil } 44 func (fakeStream) RecvMsg(m interface{}) error { return nil }