(t *testing.T)
| 185 | } |
| 186 | |
| 187 | func 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 { |
nothing calls this directly
no test coverage detected
searching dependent graphs…