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

Function TestHandler_ServeHTTP

handler_ext_test.go:40–246  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

38)
39
40func TestHandler_ServeHTTP(t *testing.T) {
41 t.Parallel()
42 path, handler := pingv1connect.NewPingServiceHandler(successPingServer{})
43 prefixed := http.NewServeMux()
44 prefixed.Handle(path, handler)
45 mux := http.NewServeMux()
46 mux.Handle(path, handler)
47 mux.Handle("/prefixed/", http.StripPrefix("/prefixed", prefixed))
48 const pingProcedure = pingv1connect.PingServicePingProcedure
49 const sumProcedure = pingv1connect.PingServiceSumProcedure
50 server := memhttptest.NewServer(t, mux)
51 client := server.Client()
52
53 t.Run("get_method_no_encoding", func(t *testing.T) {
54 t.Parallel()
55 request, err := http.NewRequestWithContext(
56 t.Context(),
57 http.MethodGet,
58 server.URL()+pingProcedure,
59 strings.NewReader(""),
60 )
61 assert.Nil(t, err)
62 resp, err := client.Do(request)
63 assert.Nil(t, err)
64 defer resp.Body.Close()
65 assert.Equal(t, resp.StatusCode, http.StatusUnsupportedMediaType)
66 })
67
68 t.Run("get_method_bad_encoding", func(t *testing.T) {
69 t.Parallel()
70 request, err := http.NewRequestWithContext(
71 t.Context(),
72 http.MethodGet,
73 server.URL()+pingProcedure+`?encoding=unk&message={}`,
74 strings.NewReader(""),
75 )
76 assert.Nil(t, err)
77 resp, err := client.Do(request)
78 assert.Nil(t, err)
79 defer resp.Body.Close()
80 assert.Equal(t, resp.StatusCode, http.StatusUnsupportedMediaType)
81 })
82
83 t.Run("get_method_body_not_allowed", func(t *testing.T) {
84 t.Parallel()
85 const queryStringSuffix = `?encoding=json&message={}`
86 request, err := http.NewRequestWithContext(
87 t.Context(),
88 http.MethodGet,
89 server.URL()+pingProcedure+queryStringSuffix,
90 strings.NewReader("!"), // non-empty body
91 )
92 assert.Nil(t, err)
93 resp, err := client.Do(request)
94 assert.Nil(t, err)
95 defer resp.Body.Close()
96 assert.Equal(t, resp.StatusCode, http.StatusUnsupportedMediaType)
97

Callers

nothing calls this directly

Calls 10

ClientMethod · 0.95
URLMethod · 0.95
NewPingServiceHandlerFunction · 0.92
NewServerFunction · 0.92
NilFunction · 0.92
EqualFunction · 0.92
DoMethod · 0.65
CloseMethod · 0.65
GetMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected