MCPcopy
hub / github.com/valyala/fasthttp / TestServerInvalidHeader

Function TestServerInvalidHeader

server_test.go:187–247  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

185}
186
187func TestServerInvalidHeader(t *testing.T) {
188 t.Parallel()
189
190 s := &Server{
191 Handler: func(ctx *RequestCtx) {
192 if ctx.Request.Header.Peek("Foő") != nil || ctx.Request.Header.Peek("Foő ") != nil {
193 t.Error("expected Foő header")
194 }
195 },
196 Logger: &testLogger{},
197 }
198
199 ln := fasthttputil.NewInmemoryListener()
200
201 go func() {
202 if err := s.Serve(ln); err != nil {
203 t.Errorf("unexpected error: %v", err)
204 }
205 }()
206
207 c, err := ln.Dial()
208 if err != nil {
209 t.Fatalf("unexpected error: %v", err)
210 }
211 if _, err = c.Write([]byte("POST /foo HTTP/1.1\r\nHost: gle.com\r\nFoő : bar\r\nContent-Length: 5\r\n\r\n12345")); err != nil {
212 t.Fatal(err)
213 }
214
215 br := bufio.NewReader(c)
216 var resp Response
217 if err := resp.Read(br); err != nil {
218 t.Fatalf("unexpected error: %v", err)
219 }
220 if resp.StatusCode() != StatusBadRequest {
221 t.Fatalf("unexpected status code: %d. Expecting %d", resp.StatusCode(), StatusBadRequest)
222 }
223
224 c, err = ln.Dial()
225 if err != nil {
226 t.Fatalf("unexpected error: %v", err)
227 }
228 if _, err = c.Write([]byte("GET /foo HTTP/1.1\r\nHost: gle.com\r\nFoő : bar\r\n\r\n")); err != nil {
229 t.Fatal(err)
230 }
231
232 br = bufio.NewReader(c)
233 if err := resp.Read(br); err != nil {
234 t.Fatalf("unexpected error: %v", err)
235 }
236
237 if resp.StatusCode() != StatusBadRequest {
238 t.Fatalf("unexpected status code: %d. Expecting %d", resp.StatusCode(), StatusBadRequest)
239 }
240
241 if err := c.Close(); err != nil {
242 t.Fatalf("unexpected error: %v", err)
243 }
244 if err := ln.Close(); err != nil {

Callers

nothing calls this directly

Calls 11

ServeMethod · 0.95
DialMethod · 0.95
ReadMethod · 0.95
StatusCodeMethod · 0.95
CloseMethod · 0.95
NewInmemoryListenerFunction · 0.92
NewReaderMethod · 0.80
PeekMethod · 0.65
WriteMethod · 0.65
CloseMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…