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) {
|
||||
w.Header().Add("Content-Type", "application/octet-stream")
|
||||
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]))
|
||||
} 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) {
|
||||
h := model.Handler{
|
||||
|
||||
Reference in New Issue
Block a user