From 2b0a74297478cfbd57010ba6d7fa403f23c0b517 Mon Sep 17 00:00:00 2001 From: Stefan Prodan Date: Mon, 20 Aug 2018 11:24:49 +0300 Subject: [PATCH] Add echo headers handler --- pkg/api/headers.go | 10 ++++++++++ pkg/api/headers_test.go | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 pkg/api/headers.go create mode 100644 pkg/api/headers_test.go diff --git a/pkg/api/headers.go b/pkg/api/headers.go new file mode 100644 index 0000000..af6b736 --- /dev/null +++ b/pkg/api/headers.go @@ -0,0 +1,10 @@ +package api + +import ( + "net/http" + +) + +func (s *Server) echoHeadersHandler(w http.ResponseWriter, r *http.Request) { + s.JSONResponse(w, r, r.Header) +} diff --git a/pkg/api/headers_test.go b/pkg/api/headers_test.go new file mode 100644 index 0000000..8a7b37f --- /dev/null +++ b/pkg/api/headers_test.go @@ -0,0 +1,36 @@ +package api + +import ( + "fmt" + "net/http" + "net/http/httptest" + "regexp" + "testing" +) + +func TestEchoHeadersHandler(t *testing.T) { + req, err := http.NewRequest("GET", "/api/headers", nil) + if err != nil { + t.Fatal(err) + } + req.Header.Set("X-Test", "testing") + rr := httptest.NewRecorder() + srv := NewMockServer() + handler := http.HandlerFunc(srv.echoHeadersHandler) + + handler.ServeHTTP(rr, req) + + // Check the status code is what we expect. + if status := rr.Code; status != http.StatusOK { + t.Errorf("handler returned wrong status code: got %v want %v", + status, http.StatusOK) + } + + // Check the response body is what we expect. + expected := "testing" + r := regexp.MustCompile(fmt.Sprintf("(?m:%s)", expected)) + if !r.MatchString(rr.Body.String()) { + t.Fatalf("handler returned unexpected body:\ngot \n%v \nwant \n%s", + rr.Body.String(), expected) + } +}