getRequestHeaders returns value for Host header. Fixes #78
This commit is contained in:
@@ -97,10 +97,15 @@ func getRequestParams(w http.ResponseWriter, r *http.Request, h *model.Handler)
|
|||||||
func getRequestHeaders(w http.ResponseWriter, r *http.Request, h *model.Handler) {
|
func getRequestHeaders(w http.ResponseWriter, r *http.Request, h *model.Handler) {
|
||||||
w.Header().Add("Content-Type", "application/octet-stream")
|
w.Header().Add("Content-Type", "application/octet-stream")
|
||||||
name := mux.Vars(r)["name"]
|
name := mux.Vars(r)["name"]
|
||||||
if values, ok := h.Request.Header[textproto.CanonicalMIMEHeaderKey(name)]; ok {
|
name = textproto.CanonicalMIMEHeaderKey(name)
|
||||||
|
if values, ok := h.Request.Header[name]; ok {
|
||||||
_, _ = w.Write([]byte(values[0]))
|
_, _ = w.Write([]byte(values[0]))
|
||||||
} else {
|
} else {
|
||||||
httperror.ErrorJSON(w, ResourceItemNotFound, http.StatusNotFound)
|
if name == "Host" {
|
||||||
|
_, _ = w.Write([]byte(h.Request.Host))
|
||||||
|
} else {
|
||||||
|
httperror.ErrorJSON(w, ResourceItemNotFound, http.StatusNotFound)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -691,7 +691,37 @@ func TestGetRequestHeadersReturnsTheFirstCorrectMatchValue(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// DOING #78: /request/headers/Host /request/headers/host
|
func TestGetRequestHeadersReturns200sForHostHeader(t *testing.T) {
|
||||||
|
h := model.Handler{
|
||||||
|
Request: httptest.NewRequest("GET", "http://www.foo.bar:8080/", nil),
|
||||||
|
Writer: httptest.NewRecorder(),
|
||||||
|
}
|
||||||
|
r := createMuxRequest("/handlers/HANDLERID/request/headers/{name}", "/handlers/HANDLERID/request/headers/Host", "GET", nil)
|
||||||
|
w := httptest.NewRecorder()
|
||||||
|
|
||||||
|
getRequestHeaders(w, r, &h)
|
||||||
|
|
||||||
|
res := w.Result()
|
||||||
|
if res.StatusCode != http.StatusOK {
|
||||||
|
t.Errorf("Status code mismatch. Expected: %d, got: %d", http.StatusOK, res.StatusCode)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetRequestHeadersReturnsTheCorrectValueForHostHeader(t *testing.T) {
|
||||||
|
h := model.Handler{
|
||||||
|
Request: httptest.NewRequest("GET", "http://www.foo.bar:8080/", nil),
|
||||||
|
Writer: httptest.NewRecorder(),
|
||||||
|
}
|
||||||
|
r := createMuxRequest("/handlers/HANDLERID/request/headers/{name}", "/handlers/HANDLERID/request/headers/Host", "GET", nil)
|
||||||
|
w := httptest.NewRecorder()
|
||||||
|
|
||||||
|
getRequestHeaders(w, r, &h)
|
||||||
|
|
||||||
|
res := w.Result()
|
||||||
|
if body, _ := ioutil.ReadAll(res.Body); string(body) != "www.foo.bar:8080" {
|
||||||
|
t.Errorf("Body mismatch. Expected: %q. Got: %q", "www.foo.bar:8080", string(body))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestGetRequestCookies200sOnHappyPath(t *testing.T) {
|
func TestGetRequestCookies200sOnHappyPath(t *testing.T) {
|
||||||
h := model.Handler{
|
h := model.Handler{
|
||||||
|
|||||||
Reference in New Issue
Block a user