| 9 | ) |
| 10 | |
| 11 | func TestGetHead(t *testing.T) { |
| 12 | r := chi.NewRouter() |
| 13 | r.Use(GetHead) |
| 14 | r.Get("/hi", func(w http.ResponseWriter, r *http.Request) { |
| 15 | w.Header().Set("X-Test", "yes") |
| 16 | w.Write([]byte("bye")) |
| 17 | }) |
| 18 | r.Route("/articles", func(r chi.Router) { |
| 19 | r.Get("/{id}", func(w http.ResponseWriter, r *http.Request) { |
| 20 | id := chi.URLParam(r, "id") |
| 21 | w.Header().Set("X-Article", id) |
| 22 | w.Write([]byte("article:" + id)) |
| 23 | }) |
| 24 | }) |
| 25 | r.Route("/users", func(r chi.Router) { |
| 26 | r.Head("/{id}", func(w http.ResponseWriter, r *http.Request) { |
| 27 | w.Header().Set("X-User", "-") |
| 28 | w.Write([]byte("user")) |
| 29 | }) |
| 30 | r.Get("/{id}", func(w http.ResponseWriter, r *http.Request) { |
| 31 | id := chi.URLParam(r, "id") |
| 32 | w.Header().Set("X-User", id) |
| 33 | w.Write([]byte("user:" + id)) |
| 34 | }) |
| 35 | }) |
| 36 | |
| 37 | ts := httptest.NewServer(r) |
| 38 | defer ts.Close() |
| 39 | |
| 40 | if _, body := testRequest(t, ts, "GET", "/hi", nil); body != "bye" { |
| 41 | t.Fatal(body) |
| 42 | } |
| 43 | if req, body := testRequest(t, ts, "HEAD", "/hi", nil); body != "" || req.Header.Get("X-Test") != "yes" { |
| 44 | t.Fatal(body) |
| 45 | } |
| 46 | if _, body := testRequest(t, ts, "GET", "/", nil); body != "404 page not found\n" { |
| 47 | t.Fatal(body) |
| 48 | } |
| 49 | if req, body := testRequest(t, ts, "HEAD", "/", nil); body != "" || req.StatusCode != 404 { |
| 50 | t.Fatal(body) |
| 51 | } |
| 52 | |
| 53 | if _, body := testRequest(t, ts, "GET", "/articles/5", nil); body != "article:5" { |
| 54 | t.Fatal(body) |
| 55 | } |
| 56 | if req, body := testRequest(t, ts, "HEAD", "/articles/5", nil); body != "" || req.Header.Get("X-Article") != "5" { |
| 57 | t.Fatalf("expecting X-Article header '5' but got '%s'", req.Header.Get("X-Article")) |
| 58 | } |
| 59 | |
| 60 | if _, body := testRequest(t, ts, "GET", "/users/1", nil); body != "user:1" { |
| 61 | t.Fatal(body) |
| 62 | } |
| 63 | if req, body := testRequest(t, ts, "HEAD", "/users/1", nil); body != "" || req.Header.Get("X-User") != "-" { |
| 64 | t.Fatalf("expecting X-User header '-' but got '%s'", req.Header.Get("X-User")) |
| 65 | } |
| 66 | } |