diff --git a/internal/server/data/resource.go b/internal/server/data/resource.go index 2e84b17..c71e99c 100644 --- a/internal/server/data/resource.go +++ b/internal/server/data/resource.go @@ -58,3 +58,7 @@ func getRequestParams(w http.ResponseWriter, r *http.Request, h *model.Handler) w.WriteHeader(http.StatusNotFound) } } + +func getRequestHeaders(w http.ResponseWriter, r *http.Request, h *model.Handler) { + // DELETE ON START +} diff --git a/internal/server/data/resource_test.go b/internal/server/data/resource_test.go index a8fc1d2..aff9606 100644 --- a/internal/server/data/resource_test.go +++ b/internal/server/data/resource_test.go @@ -436,3 +436,91 @@ func TestGetRequestParamsReturnsTheFirstCorrectMatchValue(t *testing.T) { t.Errorf("Body mismatch. Expected: BAZ. Got: %v", string(body)) } } + +func TestGetRequestHeaders200sOnHappyPath(t *testing.T) { + t.Skip("******** WIP ********") + h := model.Handler{ + Request: httptest.NewRequest("GET", "/", nil), + Writer: httptest.NewRecorder(), + } + r := createMuxRequest("/handlers/HANDLERID/request/headers/{name}", "/handlers/HANDLERID/request/headers/bar", "GET") + w := httptest.NewRecorder() + + getRequestHeaders(w, r, &h) + + res := w.Result() + if res.StatusCode != http.StatusOK { + t.Error("Status code mismatch") + } +} + +func TestGetRequestHeadersSetsOctectStreamContentType(t *testing.T) { + t.Skip("******** WIP ********") + h := model.Handler{ + Request: httptest.NewRequest("GET", "/", nil), + Writer: httptest.NewRecorder(), + } + r := createMuxRequest("/handlers/HANDLERID/request/headers/{name}", "/handlers/HANDLERID/request/headers/bar", "GET") + w := httptest.NewRecorder() + + getRequestHeaders(w, r, &h) + + res := w.Result() + if res.Header.Get("Content-Type") != "application/octet-stream" { + t.Error("Content Type mismatch") + } +} + +func TestGetRequestHeadersReturnsTheCorrectMatchValue(t *testing.T) { + t.Skip("******** WIP ********") + h := model.Handler{ + Request: httptest.NewRequest("GET", "/", nil), + Writer: httptest.NewRecorder(), + } + h.Request.Header.Set("bar", "BAZ") + r := createMuxRequest("/handlers/HANDLERID/request/headers/{name}", "/handlers/HANDLERID/request/headers/bar", "GET") + w := httptest.NewRecorder() + + getRequestHeaders(w, r, &h) + + res := w.Result() + if res.Header.Get("bar") != "BAZ" { + t.Errorf("Body mismatch: Expected: BAZ. Got: %s", res.Header.Get("bar")) + } +} + +func TestGetRequestHeaders404sWhenParamDoesntExist(t *testing.T) { + t.Skip("******** WIP ********") + h := model.Handler{ + Request: httptest.NewRequest("GET", "/", nil), + Writer: httptest.NewRecorder(), + } + r := createMuxRequest("/handlers/HANDLERID/request/headers/{name}", "/handlers/HANDLERID/request/headers/bar", "GET") + w := httptest.NewRecorder() + + getRequestHeaders(w, r, &h) + + res := w.Result() + if res.StatusCode != http.StatusNotFound { + t.Error("Status code mismatch") + } +} + +func TestGetRequestHeadersReturnsTheFirstCorrectMatchValue(t *testing.T) { + t.Skip("******** WIP ********") + h := model.Handler{ + Request: httptest.NewRequest("GET", "/", nil), + Writer: httptest.NewRecorder(), + } + h.Request.Header.Set("bar", "BAZ") + h.Request.Header.Add("bar", "BUX") + r := createMuxRequest("/handlers/HANDLERID/request/headers/{name}", "/handlers/HANDLERID/request/headers/bar", "GET") + w := httptest.NewRecorder() + + getRequestHeaders(w, r, &h) + + res := w.Result() + if res.Header.Get("bar") != "BAZ" { + t.Errorf("Body mismatch: Expected: BAZ. Got: %s", res.Header.Get("bar")) + } +}