...

Source file src/github.com/go-chi/chi/middleware/get_head_test.go

Documentation: github.com/go-chi/chi/middleware

     1  package middleware
     2  
     3  import (
     4  	"net/http"
     5  	"net/http/httptest"
     6  	"testing"
     7  
     8  	"github.com/go-chi/chi"
     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.Fatalf(body)
    42  	}
    43  	if req, body := testRequest(t, ts, "HEAD", "/hi", nil); body != "" || req.Header.Get("X-Test") != "yes" {
    44  		t.Fatalf(body)
    45  	}
    46  	if _, body := testRequest(t, ts, "GET", "/", nil); body != "404 page not found\n" {
    47  		t.Fatalf(body)
    48  	}
    49  	if req, body := testRequest(t, ts, "HEAD", "/", nil); body != "" || req.StatusCode != 404 {
    50  		t.Fatalf(body)
    51  	}
    52  
    53  	if _, body := testRequest(t, ts, "GET", "/articles/5", nil); body != "article:5" {
    54  		t.Fatalf(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.Fatalf(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  }
    67  

View as plain text