MCPcopy
hub / github.com/connectrpc/connect-go / TestHandlerErrorResponseNilInInterceptor

Function TestHandlerErrorResponseNilInInterceptor

interceptor_ext_test.go:718–747  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

716}
717
718func TestHandlerErrorResponseNilInInterceptor(t *testing.T) {
719 t.Parallel()
720 handlerErr := connect.NewError(connect.CodeInternal, errors.New("handler error"))
721 var interceptorSawNilResponse bool
722 checkNilInterceptor := connect.UnaryInterceptorFunc(
723 func(next connect.UnaryFunc) connect.UnaryFunc {
724 return func(ctx context.Context, req connect.AnyRequest) (connect.AnyResponse, error) {
725 res, err := next(ctx, req)
726 // res must be nil when err is non-nil; a typed nil stored in an
727 // interface would make this check incorrectly report non-nil.
728 interceptorSawNilResponse = res == nil
729 return res, err
730 }
731 },
732 )
733 mux := http.NewServeMux()
734 mux.Handle(pingv1connect.NewPingServiceHandler(
735 &pluggablePingServer{
736 ping: func(_ context.Context, _ *connect.Request[pingv1.PingRequest]) (*connect.Response[pingv1.PingResponse], error) {
737 return nil, handlerErr
738 },
739 },
740 connect.WithInterceptors(checkNilInterceptor),
741 ))
742 server := memhttptest.NewServer(t, mux)
743 client := pingv1connect.NewPingServiceClient(server.Client(), server.URL())
744 _, err := client.Ping(t.Context(), connect.NewRequest(&pingv1.PingRequest{}))
745 assert.NotNil(t, err)
746 assert.True(t, interceptorSawNilResponse)
747}
748
749// headerInterceptor makes it easier to write interceptors that inspect or
750// mutate HTTP headers. It applies the same logic to unary and streaming

Callers

nothing calls this directly

Calls 12

ClientMethod · 0.95
URLMethod · 0.95
PingMethod · 0.95
NewErrorFunction · 0.92
UnaryInterceptorFuncFuncType · 0.92
NewPingServiceHandlerFunction · 0.92
WithInterceptorsFunction · 0.92
NewServerFunction · 0.92
NewPingServiceClientFunction · 0.92
NewRequestFunction · 0.92
NotNilFunction · 0.92
TrueFunction · 0.92

Tested by

no test coverage detected